Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Wojciech Sznapka, dodany: 27.04.2014 18:20, tagi: framework, mvc, php

Lately I see perilous situation in software development area. There are plenty of good devs so much bounded to tools. By tools, I mean mostly frameworks. I would like to elaborate a bit about that, but those are my personal opinions and they aren’t here to offend anyone.

First of all, we all need to admit, that quality of modern MVC framework raised a lot, comparing with state of things few years ago. Speaking about PHP – at the time, when I attracted my attention to this language, there were pure wilderness. We did not have any strong framework (unlike Ruby On Rails, which were sine qua non choice for Ruby web development). That caused multiple projects development, some of them are dead now (or should be), some hasn’t got good market adaptation and some of them are industry leaders at the moment (Symfony and Zend).

On the other hand, there’s huge temptation to write own frameworks, ignoring the great work of community. That has some advantages, in case you know exactly what you’re doing. Only one good reason for me is performance concerns. But still, doing everything by hand proves lack of understanding of tools and leads to giant problems with system maintenance. For me, it’s hard to imagine how one could create a complex system without usage of good framework. What’s more, its economically unreasonable to recreate the code, that already exists.

Alright, it’s clear –  applications which will serve their purpose are way easier to be created with modern framework. The choice isn’t easy (as well as choice of language), but if you ask me, I’ll say: pick the one you feel the most comfortable with and which is built on top of best design patterns. A framework won’t do the job by its own, though. And this is the point I’d like to make: don’t be bound to the framework. The best quote to reflect this point of view is:

The architecture of an accounting app should scream “accounting” not Spring & Hibernate. Robert C. Martin via https://twitter.com/unclebobmartin/status/118365858581069824

By decoupling from framework (see Jakub Zalas slides) you’ll benefit in multiple ways: your code will be loosely coupled, easier to understand, readable, testable and most important: it will be robust. If for some reason, you’ll have to change framework (because yours isn’t supported any more and super 3rd edition of famous framework comes to general availability), you’ll spend considerably less amount of time to migrate to new libraries.

A thing to remember is, that good software design practices, such as design patterns or SOLID principles, exists for years now. They are applied in all software languages and you’ll find similar concepts both in Java Spring and PHP Symfony. Frameworks, on the other hand comes and goes. In 3 years from now, there won’t be Symfony2 or Zend Framework2, but your code will be still alive and need to be maintained. It’s your choice, if it be completely dependent on framework or if it will rely on proven patterns.

I strongly encourage to read and apply philosophy of Domain Driven Design. It’s better to focus on a core domain and reflect business needs by modelling them with code. Once you’ll be focused on domain, you’ll start to see that framework is only implementation detail and you’ll stop calling yourself Symfony Developer or Zend Developer, but rather Software Developer.

Autor wpisu: Łukasz Socha, dodany: 26.04.2014 18:40, tagi: php

Tworząc nawet małą aplikację internetową musimy zadbać o „przyjazne” linki. Zwiększają one wygodę użytkownika, jak i mają istotny wpływ na SEO. Gdy piszemy aplikację w oparciu o jeden z popularnych frameworków problemu nie ma, dostarczają one komponenty do tworzenia ładnych adresów, ale co w sytuacji, gdy tworzymy bez ich wsparcia? Jednym z rozwiązań jest napisanie […]

Autor wpisu: zleek, dodany: 25.04.2014 08:39, tagi: php

Załóżmy następującą sytuację: tworzymy w Zend Framework formularz, który wśród swoich pól będzie zawierał pole typu select. Pole te ma służyć do wyboru np. języka. Kod html, który ma powstać będzie wyglądał tak: Jak widać nie ma tutaj nic specjalnego. Musimy tylko zadbać, aby użytkownik dokonał wyboru jakiegoś języka. Kod formularza zawierający takie pole w […]

Autor wpisu: zleek, dodany: 23.04.2014 09:16, tagi: css, php

Stosując na stronie www czcionki z grona czcionek dostepnych w Google, można czasem spotkać się z problemem przy wyświetlaniu polskich znaków. Problem może być o tyle ciekawy, że będzie się ujawniał tylko w niektórych przeglądarkach lub tylko w niektórych systemach operacyjnych. W przypadku wystąpienia tego problemu można zauważyć nastepujące nieprawidłowości: cały tekst wyświetlany jest poprawną […]

Autor wpisu: nospor, dodany: 22.04.2014 16:06, tagi: mysql

Przeglądając różne kody często widzę, iż programiści nie zwracają uwagi na to, czy ich pola są NULL czy NOT NULL. Ba, swego czasu mi to tam też było wsio rybka. Jednak jest to dość ważna kwestia.... No dobra, świat się przez nią nie skończy, ale dobrze jest na to zwracać uwagę.

Autor wpisu: Śpiechu, dodany: 12.04.2014 22:27, tagi: javascript

I won’t talk about PHP today. Sorry PHPers. If you do some frontend job, you won’t be disappointed. I’m assuming you know some basic JavaScript stuff like closures, prototyping and context switching, because I’m going to do some cheating.

Our goal for today is to force JavaScript to invoke different functions according to different arguments number. To further complicate all of this, we’ll work on prototypes and check if overloading works on inherited objects.

I’ll use CoffeeScript since it has nice, condensed syntax. You don’t need to write much JS boilerplate like semicolons and braces, what leads to about 30% less code in CS <-> JS comparison. Always remember: CoffeeScript is just JavaScript and you can simple paste it in Try CoffeeScript’s section to see the JS compiled result. Don’t worry, i’ll provide some hints in sensitive places.

Most important things for today are:

  • you can always check how many arguments function has in its declaration using length property,
  • you can always check how many arguments function was invoked with by using arguments.length property.

A few ending thoughts:

  • augmenting methods have some performance penalty,
  • you’ll probably complicate stuff when use overloading too much,
  • if you truly need that solution in JS, you’re doing something wrong :-)

Autor wpisu: bastard13, dodany: 11.04.2014 15:33, tagi: design, oop

kolejna seria za nami

Następna seria wpisów skończona. Mam nadzieję, że udało mi się przedstawić omawiane zasady w jasny i zrozumiały sposób. Dzisiaj jedynie krótki wpis, w którym chciałem zebrać linki do opublikowanych postów. Zdaję sobie sprawę, że spis treści zazwyczaj jest na początku, ale mam nadzieję, że mi wybaczycie tą ekstrawagancję :) O zasadach SOLID jeszcze z pewnością nie raz napiszę, a jeżeli w między czasie będziecie mieli jakieś pytania lub wątpliwości to czekam na komentarze, może uda mi się coś więcej rozjaśnić, a może sam się czegoś nowego nauczę :) A w międzyczasie zapraszam do czytania wpisów związanych z kolejną serią - tym razem temat długo przeze mnie pomijany, czyli wzorce projektowe.Mam nadzieję, że po ponad trzech latach jestem już wystarczająco przygotowany :)Czytaj więcej »
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.