PHP: Kategoria poświęcona w całości technologiom server-side, a w szczególności PHP. Uwaga: starsze wpisy o tej tematyce znaleźć można także w "Programowaniu", ponieważ ta kategoria jest relatywnie nowa.
PHP: Kategoria poświęcona w całości technologiom server-side, a w szczególności PHP. Uwaga: starsze wpisy o tej tematyce znaleźć można także w "Programowaniu", ponieważ ta kategoria jest relatywnie nowa.
W poprzednim wpisie porównywaliśmy szybkość odczytu różnych formatów danych dostępnych w PHP, a także ich możliwości. Ponieważ jednak po jego opublikowaniu pojawiły się nowe pytania, zdecydowałem się napisać kontynuację, w której postaram się je wyjaśnić. Przyjrzymy się kompilowanemu rozszerzeniu Syck do parsowania YAML w PHP, które znalazłem w repozytorium PECL - jednak więc takie coś istnieje, tyle że w wersji beta, a wyszukiwarka niestety nie pomaga w jego znalezieniu, jeśli nie zna się tej nazwy. Ponadto porównamy szybkość SimpleXML oraz DOM. Procedura testowa pozostaje ta sama.
Napisałem już trochę kilobajtów kodu nowego silnika, lecz wciąż nie zdecydowałem się na jeden, konkretny format przechowywania konfiguracji oraz plików informacyjnych. Podstawowe pytania to: jakich możliwości od danego formatu oczekuję oraz jak przedstawia się sprawa wydajności. Dlatego postanowiłem zrobić mały benchmark i uszeregować wszystkie formaty, jakie zdołałem do czasu napisania wpisu wymyślić w kolejności od najszybszego do najwolniejszego. W szranki stanęły: zserializowane tablice, same skrypty PHP, pliki INI, XML oraz YAML. Pierwsze cztery obsługiwane są "sprzętowo" przez interpreter, w ostatnim przypadku trzeba zadowolić się napisanym w PHP parserem Spyc.
Nauczony doświadczeniami ostatniego projektu postanowiłem wprowadzić do moich skryptów większą modularność. Sam MVC, choć zapewnia dość dobre ponowne wykorzystanie kodu, nie jest jeszcze ideałem. Akcje w kontrolerach muszą przecież zapewnić czasem przepływ i obsłużenie tak dużej liczby sytuacji, że same w sobie stają się skomplikowane, a gdy bardzo podobne zadanie przyjdzie zaimplementować w innym miejscu serwisu, kod staje się bardzo nieprzyjemny w zarządzaniu.
Jest to koniec pewnej epoki dla mnie - odchodzę z redakcji WebCity.pl, a w zasadzie odszedłem już pod koniec maja, tyle że nie ogłaszałem tego oficjalnie. Wszystko skończyło się w przykrych okolicznościach, a mianowicie kłótni o kod źródłowy mojego autorstwa, który został bestialsko potraktowany "niby na lepsze", a w rzeczywistości na gorsze + z błędami, i to bez mojej wiedzy. Ten zespół redakcyjny po prostu nie miał już szans na dalsze istnienie.
Na wielu blogach stale powracającym tematem są wady i niedoskonałości PHP wynikające z zaniedbań w początkowych latach istnienia projektu. Faktycznie, zestawienie PHP z takim Ruby może w wielu miejscach budzić zazdrość i frustrację. Ruby ma to, to, tamto i jeszcze to, ma RoR-a, a PHP ledwo co się Zend Frameworka dorobił, ponadto wiele rzeczy, które w innych językach są traktowane jak standard, tutaj jest jedynie opcjonalnymi rozszerzeniami lub wręcz dodatkami, za które trzeba płacić.
Kończę właśnie kolejny projekt (on jest główną przyczyną zastoju na zyxist.com) i pojawił się problem, jakiej firmie powierzyć jego hosting. Sprawa jest o tyle istotna, że niemal każda dotąd testowana lub analizowana ma jakąś wkurzającą lub utrudniającą życie programiście wadę. Dlatego zwracam się z prośbą do czytelników o podzielenie się swoimi doświadczeniami.
Dzisiejszy wpis miał być o czym innym, ale opisywany dziesięć dni temu system uprawnień doczekał się już bardziej rozbudowanej formy oraz kilku nowych idei, które niebawem będę implementować i które warto przedstawić. Tymczasem dzisiaj zmontowałem nowy artykuł opisujący dokładnie jego budowę i działanie. Aktualnie opublikowany tylko na Zyxist.com, jutro lub pojutrze wrzucę go też na Webcity. Wróćmy jednak do nowych pomysłów.
Ostatnio po dłuższej przerwie powróciłem do projektu nowego silnika opartego o Zend Framework. Posprzątawszy kod i zaktualizowawszy wersję biblioteki, zabrałem się za programowanie systemu uprawnień. Jednak po zapoznaniu się z możliwościami pakietu Zend_Acl stwierdziłem, że jest on nieco przerośnięty, jak na potrzeby typowego projektu, a ponadto i tak trzeba do niego dodać własny kod, żeby skądś listę uprawnień pobierać.
Wyrażenia regularne to jedno z najprzydatniejszych każdemu programiście narzędzi. Z jego pomocą sprawdzenie, czy jakiś tekst spełnia określone reguły, sprowadza się do utworzenia nieskomplikowanego wzorca dopasowań. Jednak jak każda użyteczna rzecz, bywa ono czasem nadużywane lub stosowane niewłaściwie tam, gdzie najskuteczniejsze okazują się proste, algorytmiczne metody.
Próbowałem dzisiaj wykorzystać klasę Zend_Session z Zend Frameworka wspomaganą własnym adapterem, dzięki któremu możliwe byłoby przechowywanie danych sesji w bazie danych. O ile użytkowanie API do manipulacji danymi przypadło mi do gustu, o tyle z powodu ograniczeń w tworzeniu własnych adapterów muszę odpowiedni kod napisać sobie samodzielnie. Największą pomyłką w moim odczuciu było wykorzystanie standardowego mechanizmu sesji PHP, a wraz z nim zaimportowanie połowy jego wad.