Odkąd rozpocząłem pracę zawodową mam okazję pytać i rozmawiać o różnych rozwiązaniach informatycznych z ludźmi którzy w pełni mnie rozumieją. Kiedyś tego nie miałem, a przynajmniej nie w takim stopniu. Ostatnia dyskusja dotyczyła języka PHP i czy warto dalej się go uczyć. Pragnę zaznaczyć że pracuję z ludźmi którzy są w branży od lat, więc mają zdanie wyśrubowane do perfekcji nie zostając przy tym w tyle. Oczywiście trafiają się zwolennicy różnych języków i technologii jak Ruby on Rails, PHP, Java, Python, Panie ja tu sprzątam. Dzięki takiej różnorodności mogę uczestniczyć w żywej dyskusji o plusach i minusach każdego z rozwiązań.
Jedno z moich ostatnich pytań dotyczyło waśnie PHP, mianowicie czy warto się nim dalej interesować. Okazuje się że jest powszechnie używany w wielu miejscach w sieci i nie ma co zwiastować nawet początku jego końca. Co więcej już niedługo w życie wkroczy PHP7 który niesie ze sobą szereg usprawnień w wydajności, a co za tym idzie jeden z czołowych argumentów przeciwko temu językowi nie będzie miał racji bytu. To były moje prawdopodobnie najdłuższe przemyślenia, ponieważ od nich będzie zależał dalszy cykl mojej nauki programowania. Po kilku dniach doszedłem do wniosku że skoro już na tyle znam ten język to warto pielęgnować obecną wiedzę wzbogacając się dobrymi praktykami i nowymi rozwiązaniami.
Pierwsza myśl którą chcę Wam przekazać dotyczy nazewnictwa plików. Moją szczerą radą jest zaopatrzenie się w dobre IDE które znacząco przyspiesza i porządkuje pracę ( na chwilę obecną testuję phpStorm i muszę przyznać że jestem pod pozytywnym wrażeniem ). Przedstawię Wam poniżej grafikę z cyklu mojej dzisiejszej pracy.
Od razu widzimy klarowny podział na klasy i podklasy które są w logiczny sposób ułożone w swoich katalogach. Samo nazewnictwo klas wygląda nieco inaczej.
class Config_Loader { public $dir = "config/config.json"; private $configData; private $configReader; private $configWriter; function __construct($url = ""){ if(!empty($url)) { $this -> dir = $url; } $this -> configReader = new Config_Reader($this); $this -> configWriter = new Config_Writer($this); $this -> configData = $this -> configReader -> read(); } public function get(){ return $this -> configData; } public function set(Config_Data $configData){ $this -> configData = $configData; } }
Jak widać klasa nazywa się Config_Loader, gdzie Config to jest katalog, a Loader to klasa. Sam plik natomiast nie jest skomplikowany, lecz jasno opisuje do czego został stworzony. Kojarzy się to komuś z jakimś językiem? Oczywiście z Java, lecz nie mamy tutaj operatora „dot” ( czyli kropki ), więc musiałem zastąpić to podkreśleniem. Mój autoloader sam sobie rozbije nazwę klasy na odpowiednią strukturę plików i wczyta nam plik z klasą.
function __autoload($name) { $path = 'class/' . $name; $path = str_replace('_','/',$path); $path .= '.php'; if(file_exists($path)){ require_once $path; } else { exit('Class not found at: ' . $path); } }
Mam nadzieję, że ten sposób Wam się spodoba i chętnie będziecie w ten sposób organizowali swoje klasy w katalogach. Nawet jak po jakimś czasie zajrzę w kod to od razu będę wiedział gdzie czego szukać. Co oczywiście nie znaczy że zrozumiem o co mi chodziło wewnątrz klasy, ale to temat na inny wieczór 😉