Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zasady pisania na forum Pro

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.

2 Stron V  < 1 2  
Reply to this topicStart new topic
> PHP preprocessor
bela
post 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.

;]


--------------------
Go to the top of the page
+Quote Post
Nievinny
post 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?


--------------------
Go to the top of the page
+Quote Post
bela
post 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
  1. <?php
  2. $abc = 'path/to/file.php';
  3. require_once($abc);
  4.  
  5. //albo 
  6. require_once(PATH . './../file.php'); //;]
  7. ?>


Macie jakieś sensowne pomysły jak to rozwiązać ?:]


--------------------
Go to the top of the page
+Quote Post
Nievinny
post 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


--------------------
Go to the top of the page
+Quote Post
bela
post 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/


--------------------
Go to the top of the page
+Quote Post
hawk
post 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 winksmiley.jpg. 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.
Go to the top of the page
+Quote Post
bela
post 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 :]


--------------------
Go to the top of the page
+Quote Post
hawk
post 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.
Go to the top of the page
+Quote Post
NuLL
post 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 ? snitch.gif


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Vengeance
post 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ł snitch.gif

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


--------------------
Go to the top of the page
+Quote Post
NuLL
post 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 smile.gif


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
hawk
post 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 winksmiley.jpg.

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...
Go to the top of the page
+Quote Post
Sedziwoj
post 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 winksmiley.jpg

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ć biggrin.gif


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
Zeman
post 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
Go to the top of the page
+Quote Post
Sedziwoj
post 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.
Go to the top of the page
+Quote Post
cicik
post 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
Go to the top of the page
+Quote Post
akubiczek
post 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 smile.gif


--------------------
pozdrawiam, Adam Kubiczek
kubiczek.eu
Go to the top of the page
+Quote Post
g00fy
post 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 ;]
Go to the top of the page
+Quote Post

2 Stron V  < 1 2
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.03.2024 - 02:58