PHP preprocessor |
Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.
PHP preprocessor |
10.04.2005, 09:35:42
Post
#21
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) |
Cytując manual
Cytat file_get_contents() is the preferred way to read the contents of a file into a string. It will use memory mapping techniques if supported by your OS to enhance performance. ;] -------------------- |
|
|
10.04.2005, 11:51:56
Post
#22
|
|
Grupa: Zarejestrowani Postów: 134 Pomógł: 0 Dołączył: 27.01.2005 Skąd: Białystok Ostrzeżenie: (0%) |
Ok, to jeszcze zakodować to przez Zend SafeGuard (chyba jakoś tak?) to zupełnie będzie nieczytelne..., nie ma jakiejś funkcji usuwającej tylko komentarze?
-------------------- |
|
|
10.04.2005, 12:07:06
Post
#23
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) |
php_strip_whitespace" title="Zobacz w manualu PHP" target="_manual ?
[edit] Co do requirów to jest to 'trochę' skomplikowane ;] No bo tak możemy użyć 4 funkcji do załączenia pliku, ale to najmniejszy problem. Większy problem jest z czymś takim
Macie jakieś sensowne pomysły jak to rozwiązać ?:] -------------------- |
|
|
10.04.2005, 13:54:46
Post
#24
|
|
Grupa: Zarejestrowani Postów: 134 Pomógł: 0 Dołączył: 27.01.2005 Skąd: Białystok Ostrzeżenie: (0%) |
Bela -> tylko komentarze bez spacji, czyli wcięcia by pozostały...
I jeszcze mała wada, gdy podaję cały skrypt ze struktórą katalogową to jak wiadomo nie może zapisać plików w podkatalogach bo nie istnieją, a więc trzeba dorobić tworzenie katalogów odpowiednich (bo nie każy będzie kożystał ze zwalczania requirów) ;] #---- EDIT ----# Co do require to może token_get_all()" title="Zobacz w manualu PHP" target="_manual i T_REQUIRE, T_REQUIRE_ONCE i ewentualnie te z include? Lum można szukać przeszukując ciąg za pomocą wyrażeń regularnych i pobierać to co pomiędzy require( 'czyli to' )? Ten post edytował Nievinny 10.04.2005, 14:02:58 -------------------- |
|
|
10.04.2005, 21:40:20
Post
#25
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) |
Pocięcie do tokenów raczej nie załatwi sprawy, bo to analiza leksykalna a nie składniowa :] Byłoby trzeba napisać jakiś 'mini' analizator, który podmieniałby zmienne etc ;]
--- [edit] nowa wersja ;] http://openpb.net/work/dev/bela_666/phppl/preprocessor/ -------------------- |
|
|
11.04.2005, 08:45:30
Post
#26
|
|
Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) |
@bela_666: łopatologicznie, hmmm... sam mam mgliste pojęcie. Wyobrażam sobie taki łańcuszek, gdzie można dowolnie przestawiać elementy. Na początku jest coś, co produkuje treść (np. czyta z pliku), na końcu coś, co konsumuje treść (np. zapisuje). Jakoś to skonfigurować, utworzyć łańcuch i niech pracuje.
Taki system może również np. czytać plik XML, robić na nim XSLT do kodu php i wiele innych rzeczy. Najważniejsze jest odseparowanie funkcjonalności związanej z czytaniem plików - dzięki temu można wziąć tą treść z innego miejsca. Co do require, sprawa jest faktycznie bardzo skomplikowana. Zwłaszcza że niektóre require nie mają z góry określonej ścieżki. Jest ona ustalana w trakcie wykonania. Wg mnie, analiza tego jest z góry skazana na niepowodzenie i tak naprawdę niepotrzebna . Przecież mamy wspaniały autoloader, który jest właśnie po to, aby nie trzeba było pisać ani jednego require. W wątku o autoloaderze pisałem, że jego główną zaletą jest wywalenie tych require, co pozwala dowolnie łączyć, dzielić i przesuwać pliki z kodem. Jedno idzie w parze z drugim. |
|
|
11.04.2005, 19:02:57
Post
#27
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) |
Cytat(hawk @ 2005-04-11 08:45:30) @bela_666: łopatologicznie, hmmm... sam mam mgliste pojęcie. Wyobrażam sobie taki łańcuszek, gdzie można dowolnie przestawiać elementy. Na początku jest coś, co produkuje treść (np. czyta z pliku), na końcu coś, co konsumuje treść (np. zapisuje). Jakoś to skonfigurować, utworzyć łańcuch i niech pracuje. Taki system może również np. czytać plik XML, robić na nim XSLT do kodu php i wiele innych rzeczy. Najważniejsze jest odseparowanie funkcjonalności związanej z czytaniem plików - dzięki temu można wziąć tą treść z innego miejsca. No to to rozumiem, i w ostatnim kodzie wzorowałem się na Cocoonie ( generatory, transformatory etc ;] ). Ale o co chodzi z tym drzewem i liscmi :] -------------------- |
|
|
12.04.2005, 09:46:14
Post
#28
|
|
Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) |
OK, przykład takiego drzewa:
Kod a.xml -> a.php _ \_ ab.php b.php _/ Plik a.xml transformujemy (XSLT) do a.php, po czym sklejamy z b.php, wycinając np. whitespace, i zapisujemy ab.php. Tego nie zrobisz twoim systemem, bo pluginy działają na wszystkich plikach i nie można wykonać transformacji XSLT tylko na jednej gałęzi. |
|
|
12.04.2005, 10:47:55
Post
#29
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) |
Czy może mi się tylko wydaje czypoprsotu trzeba napisać podklasę liścia i nałożyć filtr czy jakieś transformatory na kazdy z osobna, lub ew. na wszystkie ?
Patrząc dalej - zmalować jakiś XML-owy konfig, że poinstruował PreProccesor co ma robić z danym liściem i jak zachoać się w danej sytuacji ? -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
12.04.2005, 18:59:57
Post
#30
|
|
Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) |
A czy mi się tylko wydaje, czy to wszystko jest poroniony pomysł
O ile samo "złączenie wszystko w jedno" to jeszcze zalicze do dobrych niekiedy spraw, to w takim "udziwnianiu" już nei widze sensu :] ps. moje zdanie, nie krzyczcie ;P -------------------- |
|
|
12.04.2005, 19:38:06
Post
#31
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) |
Mimo iż dopisałem swoją wizję tego czegoś - to jest to dla mnie też zupełnie zbędne...
Vee - do własnego zdania ma prawo każdy -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
21.04.2005, 16:32:37
Post
#32
|
|
Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) |
No dobra, jakiś bardziej praktyczny przykład takiego skomplikowanego preprocesora .
Generowanie map dla autoloadera. Załóżmy, że chcemy wygenerować mapę, w skład której będą wchodzić pliki z kilku różnych katalogów. Nie chcemy mieć w niej niepotrzebnych plików. Oczywiście, można zrobić to na wiele różnych sposobów, ale jednym z nich jest właśnie system, który może pobierać dane (pliki) z różnych katalogów, zbierać razem i przesyłać dalej do przetwarzania. Albo inaczej: chcę scalić 5 plików z kodem i 1 plik php z jakimiś danymi konfiguracyjnymi. Z całego kodu należy wyciąć komentarze i whitespace. Z danych konfiguracyjnych nie, i do tego mają znaleźć się na początku pliku, żeby po jego otworzeniu można było coś z tego wyczytać. Znowu, można zrobić to inaczej, można machnąć ręką, ale zastosowania są. Gdyby tylko dało się to jakoś prosto składać w sensowny pipeline... |
|
|
9.04.2007, 18:12:33
Post
#33
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) |
Ktoś pisze interpreter PHP więc wiele można
A co do samego pomysłu to mi też taki do głowy wpadł, tylko że czytając ten tekst doszedłem że to nie takie proste. A dokładnie to myślałem nad usuwaniem 'zbędnych' rzeczy, czyli odstępy, wcięcia, łamanie linii itp. oraz komentarzy. Co nie było by może zbyt trudne, jednak już przynosi pewne problemy. Co do łączenia plików, to już jest problem, bo powstaje nam istny graf, w tym część gałęzi można poznać dopiero w czasie wykonywania... (mówię o ładowaniu w czasie wykonywania odpowiednich plików) Ale skoro interpreter to zjada, to dlaczego my byśmy nie mogli tego zrobić -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
9.04.2007, 23:04:46
Post
#34
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 29.03.2007 Ostrzeżenie: (0%) |
Ja się dołączę do rozmowy.
Jak robiłem pluginy do mojego edytora mające za zadanie przerabianie plików PHP podczas kładzenia ich na serwer, nasunął się pewien "problem" o którym nie pomyślałem wcześniej, a mianowicie: Plik php na serwerze ma inną postać niż edytowany w edytorze, a to powoduje błędne raportowanie o błędach, tzn standardowy komunikat "Parse error: syntax error, unexpected ',' in c:\usr\apache\httpd\html\zeman_serw\web2biz\index.php5 on line 3" nam może nic nie powiedzieć dgyż linia 3 na serwerze to już nie linia 3 w edytorze. Oczywiście można z tym sobie poradzić, ale chciałem zwrócić uwagę, że takie coś będzie występować. -------------------- www.web2biz.pl | trochę o web-usability
|
|
|
9.04.2007, 23:38:13
Post
#35
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) |
Chyba raczej taki błąd się nie pojawi, ale na pewno będzie się rozchodziła numeracja.
To jest pewien problem, choć nie do końca, bo 'parse error' powinno być przed 'kompilacją' wyłapane, a późniejsze błędy, przy dobrej obsłudze będą niewiele gorzej lokalizowane (przy obiektowym programowaniu) -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
12.04.2007, 21:16:36
Post
#36
|
|
Grupa: Zarejestrowani Postów: 219 Pomógł: 5 Dołączył: 18.07.2006 Skąd: Piekary Śląskie Ostrzeżenie: (0%) |
Przyznam się, że mi taki pomysł też po głowie chodzi jednak w dużo bardziej rozbudowanej wersji.
Marzy mi się narzędzie, które po pierwsze zrobi to co proponujecie czyli poskleja odpowiednie pliki razem, wytnie białe znaki etc. ale również zrobi dokumentację kodu na podstawie komentarzy. Coś jak PHPDocumentor tylko dużo szybsze i z kilkoma nowymi tagami - brakuje mi np. tagów do określania jakie wyjątki rzuca dana funkcja i kiedy. I generalnie chciałbym aby generowało to dokumentację na kształt MSDN w Visual Studio bo ona tam ejst naprawdę dobrze zrobiona. Co więcej takie narzędzie musiałoby być napisane w jakimś C++ lub C# żeby działało szybciej. Do tego można by jeszcze dorobić narzędzie do generacji klas do testów jednostkowych i narzędzie, które testuje pokrycie kodu testami (poprzez dołączenie do każdego ifa i pętli odpowiednich funkcji do sprawdzania czy coś się wywołało czy nie). Generalnie potrzebne do tego wszystkiego byłoby napisanie jakiegoś porządnego parsera składni PHP aby można było plik z kodem zmienić na graf obiektów w danym języku. Ale o tym większego pojęcia jeszcze nie mam. Póki co napisałem tylko w C# profilera interpretującego plik wypluwany przez APD. Aczkolwiek marzy mi się właśnie napisanie całego takiego pakietu z narzędziami "około phpowymi". Temat dość zaawansowany, pewnie na niejedną magisterkę ale gdyby to dobrze zrobić to nawet pewnie by się to sprzedać dało. Pozdrawiam Ten post edytował cicik 12.04.2007, 21:19:54 -------------------- CMS dla Twojej firmy
Wojciech Małota |
|
|
16.04.2007, 13:57:22
Post
#37
|
|
Grupa: Zarejestrowani Postów: 189 Pomógł: 0 Dołączył: 4.07.2004 Skąd: z neostrady Ostrzeżenie: (0%) |
Skoro temat wyskoczył do góry, to dodam jeszcze odnośnie preprocesora, że przecież można wykorzystać nieśmiertelny cpp (c preprocesor) - który ma spore możliwości, a nie trzeba wynajdować koła od nowa
-------------------- pozdrawiam, Adam Kubiczek
kubiczek.eu |
|
|
21.07.2007, 23:51:55
Post
#38
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 23.11.2004 Ostrzeżenie: (0%) |
widzialem i korzystalem z takiego programu , tylko ze on wszystko zamienial na EXE ;]
|
|
|
Wersja Lo-Fi | Aktualny czas: 22.09.2024 - 23:18 |