Powodem jest oczywiście wspomniany podrzędny system. W przeciwieństwie do innych systemów szablonów, OPT nie ogranicza się do przeniesienia fragmentów języka PHP do HTML-a i opakowania ich w klamerki, lecz zapewnia dość potężną warstwę abstrakcji, która może być przeprogramowywana na wiele sposobów i dostosowywana do potrzeb. Cel jest jeden: większa przenośność szablonów, uniezależnienie ich od konkretnego skryptu i jego implementacji i zwyczajne ułatwienie pracy. Jednym z mechanizmów do osiągnięcia tego celu są formaty danych, za pomocą których można zmienić zachowanie np. sekcji lub zmiennych szablonów. Zgrzyt wystąpił właśnie w przypadku tychże zmiennych, a konkretniej połączenia ich z operatorem przypisania. Domyślna implementacja po prostu przenosi zapis $zmienna na odwołanie do wewnętrznej listy zmiennych widoku $this->_data['zmienna']. Biorąc wyrażenie z przypisaniem (np. $zmienna is 5), w dalszym ciągu otrzymujemy poprawny kod PHP: $this->_data['zmienna']=5. Jednak teoretycznie nie ma żadnych przeciwwskazań, by ktoś w miejsce takiego wywołania zrobił sobie jakąś magiczną funkcję. Odczyt zadziałałby, ale próba zapisu skończyłaby się komunikatem Parse error, i to generowanym przez PHP w momencie wykonywania.
Co się okazało - w kodzie był komentarz TODO z informacją, że taka sytuacja musi być obsłużona i został on przegapiony (dlatego nie powinno się tego typu rzeczy umieszczać w komentarzach, nawet jak się ma dobre IDE - taka rada na przyszłość :)), więc siłą rzeczy trzeba było siąść i lekko stuningować parser wyrażeń, by format danych mógł sobie coś takiego obsłużyć. Uznałem jednak, że ingerencja ta jest na tyle poważna, że mimo posiadania już 125 testów dotyczących kompilacji wyrażeń, lepiej dmuchać na zimne i opublikować kolejną wersję RC. Natomiast sam system formatów danych umożliwia już eleganckie podstawienie funkcji pod zmienną również w przypadku zastosowania operatora przypisania. Przyda się to podczas pisania Open Power Forms, które zacznie się już niebawem.
Z innych wieści, prawie skończona jest już angielska dokumentacja. Do napisania zostało zaledwie parę rozdziałów dotyczących przeważnie pobocznych zagadnień. Nie znaczy to jednak, że praca nad nią zostanie zakończona. Wciąż będzie pojawiać się nowa funkcjonalność, a ponadto stale jestem otwarty na wszelkie sugestie dotyczące formuły dokumentacji tak, by jak najlepiej służyła ona użytkownikom. Projekt jest złożony i dobra dokumentacja to podstawa.






Napisał Xamael w wtorek, 30 czerwca 2009 o 01:08
Zyx nie działa SVN po WWW. Widac tylko puste katalogi.