Dlaczego to?
Aby ujednolicić programowanie, abym nie musiał znów przeklinać w wniebogłosy, gdy dostanę jakiś projekt od "niby programisty" , który od nowa tworzył koło.
To wszystko, cała struktura MVC itp, jest tylko po to, by mieć wspólny styl kodowania, wspólny wzorzec, piękność i przejrzystość kodu. Przychodzi nowy programista do firmy, to nie powinien on 2 tygodni spędzać na ogarnianiu gdzie co jest, tylko możliwie jak najszybciej zaczął pisać.
Np. to że masz wszystkie sql w pliku engines.... tam pewnie jest chaos. W dużych projektach ten plik może być nawet megabajtowy. I poczuj to, że tam są zapytania do wszystkich tabel...
A nie lepiej zrobić pliki
Users.php
Posts.php
Settings.php
I trzymać względnie zapytania w innym pliku?
Namespace? A co to, na co to komu, komu to potrzebne?
A z prostej sprawy. Aby programista wiedział co edytuje, gdzie szukać plików odpowiedzialnych za coś. Jak np wejdę w plik z namespacem
\Zend\Db
To już wiem że plik jest odpowiedzialny za połączenie z bazą danych, i wszystkie namespacey dzieci, są klasami pomocniczymi.
I przez to podpowiadanie funkcji/klas stało się bardziej przyjazne użytkownikowi. Bo jeśli szuakm jakiegoś pliku związanego z bazą danych, to wystarczy ze w IDE wpisze new \Zend\Db , to IDE automatycznie mi podpowie wszystkie klasy wewnątrz tego namespace'a
Namespace są tak jakby folderami, pozwalają trzymać ci pliki w porządku, względnie ich działania.
ORM
Co do tego jestem pół na pół. Fajnie mieć ORM, ale tylko dla tabel, którym pasuje ten model. Np. dla tabeli Users. Fajna sprawa.
$user = $tableUsers->get($usr_id);
$user->name = "Lorem";
$tableUsers->save($user);
No i tym prostym kodem zmieniłem sobie imię użytkownika.
A ty byś musiał zrobić specjalnie metodę , gdzie będzie specjalny do tego sql....
A powiedzmy że później będę chciał edytować nazwisko? Ja robię tylko
$user = $tableUsers->get($usr_id);
$user->forename= "Ipsum";
$tableUsers->save($user);
A ty? A ty znów tworzysz metodę, robisz znów sql... itp.
Ale ok, przejdźmy do tworzenia użytkownika.. aby stworzyć użytkownika ja robię
$user = $tableUsers->get($usr_id);
$user->email = "[email protected]",
$user->password = uniqid();
$user->forename ="lorem";
$user->name = "ipsum";
$tableUsers->save($user);
A ty? Ty robisz znów funkcję... z n argumentami pewnie. A w przyszłości np. klient nie bedzie chciał pola "forename"... to ja tylko komentuje kod... a ty wchodzisz do funkcji, usuwasz argument forename, edytujesz sql... w ch!$#$@ roboty.
Jedyne do czego się nie nadaje ORM do widoków. Ja robię czyste sql'e
Też przez to brnąłem, też zrobiłem swego frameworka po swojemu, ale z doświadczeniem poznajesz, że to na prawdę nie jest głupie, wręcz przeciwnie. I później się dowiadujesz, że nic nie znałeś na temat prawdziwego programowania.