![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Chciałbym przedstawić moją najnowszą klasę
![]() ![]() Klasa obsługuje instrukcje warunkowe, sekce, funkcje, zmienne tablicowe oraz modyfikatory. Oczywiście sekcje i ify można dowolnie wiele razy zagnieżdżać. Wielowymiarowość tablic również działa... Wszystko działa podobnie jak u Bastiona. Są jednak małe wyjatki, funkcja setvar ma inna skadnie @setvar(nazwa zmiennej, wartosc) Wszelkie zmienne umieszczamy w blokach {zmienna} jednak jeśli mamy doczynienia z funkcjami aby uniknąć zagnieżdżania nawiasów klamrowych należy użyć znaku dolara... Kod Normalnie blok zapiszemy {blok} Ale gdy mamy np. instrukcje warunkową {@if($blok=='costam')} asf ss as {@fi} Dodałem takze kilka ulepszeń... Możemy deklarować zmienne tablicowe. np. Kod {@setvar('tablica',Array('pierwszy','drugi','bla' => 'trzeci'))} Dodałem również modyfikatory do funkcji setvar(i tylko do niej!) tak wiec możemy użyć zapisu Kod {@setvar('owoc','jablko')} {@setvar('owoc_hash',$owoc|md5)} lub po prostu Kod {@setvar('owoc_hash','jablko'|md5)} Umożliwiłem takze wielokrotne modyfikowanie np.. Kod {napis|strtolower|ucfirst|md5} Co spowoduje zamiane liter w zmiennej 'napis' na małe, następnie pierwsza litera zostanie zmieniona na wielką, na końcu całość zostanie zhashowana za pomoca md5 DOWNLOAD (wszystkie wersje zawierają przykłady) Moje projekty (EDIT: to bedzie dzialalo) Notka dla FiDa ![]() ![]() Jest to 1 RC wersja ;] wszelkie pomysły mile widziane.. Parser nie obsluguje jeszcze zmiennych globalnych(kombinuje jak to tam dokleić ![]() ![]() Ten post edytował SHiP 25.11.2006, 21:06:07 -------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 505 Pomógł: 0 Dołączył: 8.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ja chcialem przeprowadzic testy wydajnosci ale nie ukonczyl ani jednego testu
- nie obsluguje tablic w warunkach (chyba ma to zwiazek z listowaniem) - brak include - nie obsluguje funkcji cycle - nie obsluguje tablic wielowymiarowych typu $cos['indeks']['indeks2'] tyle na szybko -------------------- /dev/blog : http://www.santyago.pl/
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Ja chcialem przeprowadzic testy wydajnosci ale nie ukonczyl ani jednego testu - nie obsluguje tablic w warunkach (chyba ma to zwiazek z listowaniem) - brak include - nie obsluguje funkcji cycle - nie obsluguje tablic wielowymiarowych typu $cos['indeks']['indeks2'] tyle na szybko Dzięki za zainteresowanie ![]() ad 1. Hmm dziwne ze tego nie zauważyłem... ad 2. aktualnie nad tym pracuję ;] sprawdzam czy szybciej bedzie zmontować rekurencyjne drzewko obiektow aby sprawdzać ścieżke dołączania plikow czy po prostu stworzyć nowy obiekt parsera ;] ad 3. A jak to działa? tzn co to jest ;] ad 4. To chyba wina wyrażenia regularnego ;] (nie dzialają tylko tablice w których występują cyfry i znak '_') Wieczorem wrzucę nowszą wersje ![]() -------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
mike_mech -> dzięki wielkie ;0 juz kumato und czaito
![]() Co do ad.1 tzn Niedziałających tablic w warunkach ;] U mnie jest wszystko ok. Przykladowy kod... (moze zapomniałeś o dolarze ;]) Kod {@setvar('tabliczka',Array('jeden','bla' => 'dwa','trzy' => Array('trzy')))}
{@if($tabliczka[0]=='jeden')} <h4>Numeryczne OK </h4>{@fi} {@if($tabliczka['bla']=='dwa')} <h4>textowe OK </h4>{@fi} {@if($tabliczka['trzy'][0]='trzy')} <h4>Mieszane OK </h4>{@fi} -------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 505 Pomógł: 0 Dołączył: 8.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
raczej tak
![]() ale bez cycle i includa nie moge zapuscic testu do porownania -------------------- /dev/blog : http://www.santyago.pl/
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Ok nowa wersja gotowa... DOWNLOAD
Dodałem funkcję @include oraz @cycle co do @cycle skladnia jest prosta Kod {@cycle('nazwa','pierwszyparam',drugiparam','trzeciparam','n param')} Wywolujemy po przez {@cycle('nazwa')} Po przez użycie nazw moge operować kilkoma cyclami na raz ![]() ad 4. Poprawione ![]() Dodałem również możliwość pracy na tablicy w sekcji bez podawania indexu tj. Kod {@section('tablica')} Kolejna wartość: {tablica} {/section} Wszystko jest w przykładzie demo06.php Obsluga include być może zostanie zmieniona, musze jedynie napisać 2 wersje i sprawdzic która jest szybsza ![]() Parser jeszcze nie sprawdza czy plik został utworzony wiec za kazdym razem parsuje szablon od nowa ;] - jutro to poprawie... ps. nie polecam usuwać sobie kodu a później pisać go jeszcze raz ![]() -------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 505 Pomógł: 0 Dołączył: 8.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
dziwne, dalem {@include('header.html')} i dostaje blad
File header..tpl not found -------------------- /dev/blog : http://www.santyago.pl/
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
hmm nie przewidziałem że ktoś może inne rozszerzenie dać
![]() Ale już to poprawiłem ![]() ![]() Kod deklaracia licznika {@counter('nazwa', liczba_startowa, co_ile_skakac, kierunek)} np. {@counter('moj',25,3,0)} spowoduje deklaracje licznika ktorego wartosc początkowa to 25 bedzie przeskakiłał co 3 do dołu ( 0 - down, 1 - up) Licznik wywołujemy po przez {@counter('moj')} Wymagany jest tylko jeden parametr - nazwa;] pozostałe domyslnie przyjmują kolejno 0, 1, 1 Przyda się do numerowania linkow w menu, artykułów itp. ![]() Download cheetah 1.2 rc 9kb Odświerzę troche temat... Jest już 1 wersja release ![]() http://ehand.muminski.be/classes/cheetah1.0.tar.gz 1. Dodałem modyfikator default Kod {zmienna|default('ta zmienna nie zostala zadeklarowana')} 2. Poprawiłem system tworzenia plikow(a raczej katalogow teraz system sam tworzy odpowiednie drzewo jeśli czegoś mu brakuje) 3. Ustawiłem aby skompilowane pliki juz sie nie kompilowały(no zechyba to wymusimy) Bastion -> i co z tymi testami? znajdziesz troche czasu? -------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 505 Pomógł: 0 Dołączył: 8.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Przerób te szablony by działały pod cheetah : http://www.vertis.com.pl/cheetah.zip
-------------------- /dev/blog : http://www.santyago.pl/
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
ok sprawa zalatwiona
![]() ![]() Szablony które mi podałeś są w katalogu cheetah/ są tam tez 2 pliki: run.php i run2.php ktore kompiluja szablony z przykladowymi danymi Pozostale przyklady jak zawsze w examples/ -------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 505 Pomógł: 0 Dołączył: 8.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
pcte => 151.34 requests/s
chameleon 2.0.0 => 145.54 requests/s nemesis 1.3.0b => 112.28 requests/s cheetach 1.1 => 101.91 requests/s czego brakuje jeszcze cheetach ? - includowanie względne - zabezpieczenia przed loop-include - nie sprawdza czy nastąpiła zmiana w szablonie, za kazdym razem gdy dokonujemy zmiany, trzeba kasowac cache Ten post edytował Bastion 9.08.2006, 12:18:39 -------------------- /dev/blog : http://www.santyago.pl/
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 640 Pomógł: 44 Dołączył: 8.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
odnośnie cheetah to już jeden system szablonów o tej nazwie istnieje: http://www.cheetahtemplate.org/
![]() -------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Bastion -> loop security niby juz jest, nie działa?
![]() includowanie względne postaram sie zmontowac na dniach. Zmienie także system zapisywania plikow to spowoduje odświerzanie cachu w przypadku modyfikacji ;] No i chyba to lekko przyspieszy parser ![]() odnośnie cheetah to już jeden system szablonów o tej nazwie istnieje: http://www.cheetahtemplate.org/ ![]() o LOL no to się lekko zdziwiłem... no ale tamten jest w pythonie napisany ;] Sam nie wiem, zmieniać nazwe? o.O -------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 367 Pomógł: 10 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Kod {@setvar('tablica',Array('pierwszy','drugi','bla' =>Array('pierwszy','drugi','bla' =>Array('pierwszy','drugi','bla' => 'trzeci'))))} Nie testowałem ale mam pytanie czy coś takiego twój system wykona poprawnie? Następnie czy jest możliwość zrobienia w szablonie ala array_walk zmiennej {tablica} ![]() pozdro |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Kod {@setvar('tablica',Array('pierwszy','drugi','bla' =>Array('pierwszy','drugi','bla' =>Array('pierwszy','drugi','bla' => 'trzeci'))))} Nie testowałem ale mam pytanie czy coś takiego twój system wykona poprawnie? jak najbardziej ![]() Następnie czy jest możliwość zrobienia w szablonie ala array_walk zmiennej {tablica} ![]() Tu już będze problem ;] Można dodać kod php. Sam w sobie cheetah nie ma udostepnionych takich funkcji... Przykładowy szablon: Kod {@setvar('tablica',Array('pierwszy','drugi','bla' =>Array('pierwszy','drugi','bla' =>Array('pierwszy','drugi','bla' => 'trzeci'))))}
<pre> <?php print_r($this -> vars['tablica']); ?> </pre> -------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
![]()
Post
#17
|
|
![]() Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn ![]() |
prawdę mowiąc podoba mi się ta klasa, tylko moj pspad szaleje z kolorowaniem bo w srodku metod pojawiaja sie <? ?> i w return'ach kod php w '' co dla mnie troche dziwnie wygląda
![]() |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Nowa wersja juz jest
![]() Pobierz Jeśli chodzi o istotne zmiany: - przemyślałem sprawe i zmieniłem nazwe klasy z Cheetah na Falcon - zmiana sposobu zamkniecia sekcji z {/section} na {@end} - dodanie komentarzy w formacie unixowym {#jakis komentarz} - wydzielenie klasy kompilatora do oddzielnego pliku - poprawilem kod odpowiedzialny za parsowanie zmiennych Całosc powinna dzialać szybciej ;] u mnie na Apache benchmarku gdy wczesniej osiągałem 128Hz teraz podskoczylo to do 160-180Hz(zalezy od zuzycia cpu przez inny soft), przy trybie niewymuszania kompilacji ponad 320Hz Było by miło gdyby Bastion zrobił porównanie ![]() ![]() Poza tym. - zabezpieczenia przed loop-include - nie sprawdza czy nastąpiła zmiana w szablonie, za kazdym razem gdy dokonujemy zmiany, trzeba kasowac cache Juz jest pcte => 151.34 requests/s A co to jest pcte? Widze ze coś szybkiego ![]() prawdę mowiąc podoba mi się ta klasa, tylko moj pspad szaleje z kolorowaniem bo w srodku metod pojawiaja sie <? ?> i w return'ach kod php w '' co dla mnie troche dziwnie wygląda ![]() To juz chyba wina edytora ;] Ja pracuje w kate i u mnie jest wszystko w jak najlepszym porządku. EDIT: jeszcze jedno pytanie do Bastiona ![]() Jest już wersja 1.9.4 Lista zmian: - dodałem includowanie względne - dodałem protekcje znaczników xml - zmienilem silnik odnajdujący bloki(wzrost szybkosci ![]() - poprawilem ochronę przed loop-include Download: http://srodek.info/files/ Notka zewnętrzna: http://srodek.info/blog/11/Falcon-194 Ten post edytował SHiP 13.08.2006, 19:35:54 -------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Kod przejrzałem oględnie, ale klasa podoba mi się i zaimplementuje ją w mojej aplikacji. Implementuje i dostaje takie coś:
Cytat Fatal error: Call to a member function parse() on a non-object in /var/www/CMS/lib/core/classes/falcon.class.php on line 102
Ten post edytował Turgon 24.01.2007, 21:46:29 -------------------- Jah Music Is On My Mind !
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
hmm.. wygląda na to, że nie został stworzony obiekt kompilatora. Napewno użyłeś loadFile()? Załadowałes jakiś plik? Najlepiej pokaż lijinki w których implementujesz moją klase ;]
-------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 03:54 |