Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Klasa] Chameleon 1.8.0
Forum PHP.pl > Inne > Oceny
Stron: 1, 2
Bastion
Nowy wątek (za pozwoleniem nospora) w formie kontunuacji tematu zamieszczonego ags
- Nowe zmienne konfiguracyjne :  cache (boolean), cache_expire (int) - definiujace parametry cache
  template_php (string), template_txt (string) - sciezki dostepu
Bastion
smile.gif no problem FiDO : bench.tar.gz
a wykresy wygenerowałem starym poczciwym M$excel smile.gif fajnie ze sie podobają smile.gif

-- updated , wersja 1.6.0 wydana

Kod
    *      Pełna dokumentacja na stronie http://www.vertis.com.pl/doc/
    *      Nowa metoda mapowania parametrów funkcji, modyfikatorów
    *      Usprawniona kompilacja i detekcja kluczy tablic
    *      Wsparcie dla klasy Class5.Debugger
    *      Wsparcie dla składni XHTML
    *      Kompilator poprawnie interpretuje klucze null, false oraz true jako parametry
    *      System obsługi wtyczek
    *      Nowe funkcje klasy Chameleon :
            o   source() - zwraca źródło skompilowanego szablonu ( do celów debuggu )
    *      Nowe modyfikatory (plugin) :
            o   filesize(round, format) - zamienia liczbę na zapis KB, MB, GB / Kbit, Mbit, Gbit (...)
            o   links(class, overwrite) - aktywuje linki URL w podanym tekście
    *      Usunięto błędy
            o   bug001 : parametry force_compile oraz template_txt nie były przenoszone do includów
            o   bug002 : brak komunikatu błędu w przypadku nieznanego modyfikatora
            o   bug003 : usunięto błędy kompilacji w przypadku braku znaczników
            o   bug004 : poprawiono działanie funkcji math()
Vomit
Jak wersja 1.60 wypada pod wzgledem szybkosci?
Bastion
identycznie jak 1.5
FiDO
No ja bym powiedzial, ze prawie identycznie.. u mnie widac minimalne zwolnienie, ale to prawie, ze na granicy bledu, wiec mozna pominac.
Mam tez zle wiadomosci, pobawilem sie chwile w złego usera... no i fajnie sobie zawiesilem apacha nieskonczona rekurencją tongue.gif

Reprodukcja jest bardzo prosta.. robisz szablon i includujesz w nim samego siebie, mozna tez przypadkowo z jakiegos szablonu juz zaincludowac taki, ze powstanie petelka.. fajnie jakby sie pojawilo jakies info o takim bledzie, a nie zwis apacha smile.gif

Dodatkowo jest maly blad, ze jak nie istnieje katalog z pluginami (w ogole go po prostu nie ma) to leci piekny warning:
Warning: opendir(....\Chameleon1.6.0\plugins/) [function.opendir]: failed to open dir: Invalid argument in ....\Chameleon1.6.0\class5.chameleon_compiler.php on line 62
Ani nie bede pisal jak to poprawic, bo zapewne dobrze wiesz winksmiley.jpg

Mam tez jedna uwage.. pamietam, ze sam troche walczylem z tym u siebie, bo uznalem to za wazne, wiec przytocze to i tutaj. Chodzi o to, ze traktujesz sciezki do szablonow troche nieintuicyjnie (ja wiem, ze tak jest latwiej, bo sam tak mialem ;]). Juz wyjasniam na przykladzie:

Struktura katalogow z szablonami:
Kod
tpl
|   index.tpl
|
\---subdir
   |   header.tpl
   |   footer.tpl
   |
   \---test
           test.tpl  


Z glownego index.tpl includujemy sobie headera i footera. Teraz chcemy sobie z ów headera lub footera zaincludowac szablon test.tpl no i co sie okazuje ?
Ze musimy zrobic {@inc("subdir/test/test.tpl")}, sciezka wzgledna (test/test.tpl) nie przejdzie, bo jest ona zawsze brana wzgledem katalogu glownego szablonow.
Podobnie ma sie sprawa jesli z pliku test.tpl chcialbym zaincludowac jakis z glownego katalogu.
Musze zrobic nieintuicyjne dla mnie w tym momencie {@inc("plik.tpl")} zamiast {@inc("../../plik.tpl")}.
Z racji, ze sciezki wzgledne sie przydaja to pomysl nad tym w nastepnej wersji winksmiley.jpg

Narazie tyle, pozdrawiam i zycze milych swiat majowych. Mam nadzieje, ze Ci ich wlasnie nie popsulem winksmiley.jpg
Bastion
Cytat
No ja bym powiedzial, ze prawie identycznie.. u mnie widac minimalne zwolnienie, ale to prawie, ze na granicy bledu, wiec mozna pominac.
Mam tez zle wiadomosci, pobawilem sie chwile w złego usera... no i fajnie sobie zawiesilem apacha nieskonczona rekurencją tongue.gif


Źli userzy fantastycznie wplywaja na zdrowy rozwoj projketow smile.gif

A więc smile.gif

Taged Bug#005 : Dopuszczenie do nieskonczonej rekurencji
Taged Bug#006 : Warringi przy braku katalogu plugins
Requested : Ścieżki względne w includach

smile.gif Dzieki FiDO - pomimo tego ze nie uzywasz w celach produkcyjnych zawsze cos pozytecznego przyniesiesz

Ja tez zauwazylem cos w czego w Nemsisie brak, a mysle ze by sie przydalo. Sprawa dotyczy Cache. Z tego co wyczytalem ustawiasz Cache czasowo lub na ID ( ja z ID narazie zrezygnowalem ). Ale o co chodzi, chodzi o to ze jak ustawiasz cache powiedzmy na godzine , a w trakcie tej godziny zmienisz cos w szablonie to i tak nie zostanie to przeprasowane az do czasu miniecia czasu cache, wiec wtedy pozoastaje reczne wyczyszczenie zawartosci cache. Fajnie by bylo ze zmiana w tpl powoduje zresteowanie licznika.
toczek
fajna klasa trzeba przyznac winksmiley.jpg, do pelni szczesnia brakuje mi tylko jednej rzeczy.

Mianowicie poprawienie denerwujacych bledow typu "NOTICE" przy error_reporting(E_ALL) winksmiley.jpg. Zaczalem cos samemu grzebac ale nie skonczylo to sie zbyt pomyslnie biggrin.gif
Bastion
Taged Bug#007 : Usunięcie błędów E_NOTICE smile.gif
FiDO
Cytat
Źli userzy fantastycznie wplywaja na zdrowy rozwoj projketow smile.gif

To fakt.. tez musze sobie takich skolowac winksmiley.jpg

Jesli chodzi o cache u mnie to jest tak jak mowisz. W momencie, gdy zmieni sie szablon to cache jest odbudowywany. Byc moze nie wynika to jasno z komentarzy w kodzie, ale tak wlasnie jest winksmiley.jpg Cache_id jest uzywany tylko i wylacznie do tego, zeby moc pozniej latwo usuwac cale grupy plikow z cache'u. Np. cachujesz sobie jedna strone w zaleznosci od parametru z GET, wiec otrzymasz pliki z cache_id "costam_1", "costam_2", "costam_3" etc. W sumie to jedna i ta sama strona, tylko z roznymi parametrami wejsciowymi.. np. niech beda to kolejne strony jesli jest stronicowanie, zeby mozna bylo sobie to uzmyslowic. Jesli zmienia sie dane to nie wiemy, na ktorej stronie sie one znajduja, wiec czyscimy cache od wszystkich stron: $tpl->clearCache('plik.tpl', 'costam_*')

Cos mi sie wydaje, ze przydalaby mi sie dokumentacja... tylko, ze na sama mysl, ze mam cos takiego pisac robi mi sie niedobrze winksmiley.jpg

edit: tia... jakbym ja sie teraz przemogl i zabral sie za to to moglbym miec powazny problem z zaliczeniem obecnego, niezbyt przyjemnego, semestru tongue.gif Tak wiec tak czy siak musi to poczekac przynajmniej do jego konca.
Bastion
FiDO: ja sie przemoglem smile.gif i stwierdzam ze im wczesniej tym lepiej smile.gif
ajgon
Rowniez mam blad - co prawda nie wiem, czy traktowac to w kategorii buga, no ale.... aaevil.gif
Blad wystepuje przy stosowaniu w projekcie funkcji __autoload

  1. <?php
  2. function __autoload($strClassName)
  3. {
  4. require_once(APP_ROOT.'/include/'.$strClassName.'.class.php');  //linia 33
  5. }
  6. ?>


przy tworzeniu obiektu typu Chameleon, php wywala sie z nastepujacym bledem

Cytat
Compile Error: /home/webdate/public_html/webdate/index.php line 33 - require_once() [<a href='function.require'>function.require</a>]: Failed opening required '/home/projekt/include/Debugger.class.php' (include_path='.:/usr/local/lib/php:/home/projekt/php_libs/')


Narazie obszedlem to uzywaja if($strClassName) != 'Debugger') require_once(...), ale nie jest to zbyt szczesliwe i eleganckie rozwiazanie biggrin.gif

Pozdrawiam
Bastion
dziwne, bo klasa Chameleon sprawdza tylko czy klasa istnieje w konstruktorze, wiec to chyba nie blad Chamelona - chociaz glowy nie dam.

added

Chyba to smile.gif

bool class_exists ( string class_name [, bool autoload])

Kod
            if (class_exists('Debugger'))
            {
                $this->debugger = true;
            }


W plikach :
* class5.chameleon.php , linia 306
* class5.chameleon_compiler.php , linia 718

zmien
Kod
            if (class_exists('Debugger'))

na
Kod
            if (class_exists('Debugger', false))


Tym czasem smile.gif oznaczyłem Bug#008 smile.gif
ajgon
Hmmm... nie wiedzialem, ze class_exists wywoluje __autoloadera ;] Coz, czlowiek uczy sie cale zycie smile.gif
Slump
Tylko sie z tego cieszyc smile.gif
Powodzenia w dalszym rozwoju.
toczek
winksmiley.jpg, ja mialbym pytanie czy przewidywane jest pojawienie sie bardziej zloznonych warunkow w "if". W sensie

  1. <?php
  2.  
  3. {@if(zmienna == 'tekst')}
  4. blablabla
  5. {@fi}
  6.  
  7. ?>


bo narazie z tego co widze to mozna sprawdzac tylko czy zmienna jest ustawiona czy nie winksmiley.jpg.

oraz drugie pytanko (laczace sie potrochu z pierwszym winksmiley.jpg) na temat dostepu do zmiennych globalnych, get'ow itd. ala :
  1. <?php
  2.  
  3. {@if(session['logged'])}
  4. zalogowano
  5. {@fi}
  6.  
  7. {@if(get['page'] == 1)}
  8. ....
  9. {@fi}
  10.  
  11. ?>

lub na zasadzie jak w smarty (smarty.session.nazwa ; smarty.const.NAZWA ; itd). Wiem ze moge zrobic kopie tablic calych z poziomu kodu php i przydzielic im oddzielna nazwe przy pomocy metody "setVar('session',$_SESSION)" ale tak byloby raczej wygodniej i bez marnowania pamieci winksmiley.jpg

to tyle mojego narzekania winksmiley.jpg
ajgon
I jeszcze malutka prosba z mojej strony (w sumie duperela)

  1. <?php
  2. // zmienne prywatne
  3. private $php_file = null;
  4. private $txt_file = null;
  5. private $source_php = null;
  6. private $vars = null;
  7. private $cycle_values = array();
  8. private $cycle_index = array();
  9. ?>


Moglyby te zmienne domyslnie byc protected ? Ulatwia to pisanie klas dziedziczacych, bez gmyrania w oryginale ;]

edit: ChameleonML - dziala podobnie jak Smarty ML - mamy oddzielny katalog z tlumaczeniami do kazdego jezyka z plikiem global.lng w srodku. Plik ma forme ZMIENNA=wartosc, natomiast w .tpl wstawiamy je w postaci ##ZMIENNA## . Zaleznie z jakim jezykiem wykonamy konstruktor, z takiego katalogu bedzie parsowany jezyk. Nie recze za niego, rozwiazanie z ml.tmp definitywnie trzeba zmienic ;], tak samo brakuje metod do ustawiania jezyka oraz ogolnego przetestowania tego - moze komus sie przyda ;] Jak zdam kolokwium w piatek to usprawnie - chyba, ze komus sie bedzie wczesniej chcialo. Narazie ma to status hmm... proof of concept ? cool.gif Aha, zeby dzialalo trzeba zmienic w chameleonie zmienne private na protected aaevil.gif
FiDO
Dolaczam sie do requesta z if'ami.. nawet nie wiedzialem, ze sa tylko takie proste. Fajna jest zabawa z parsowaniem dowolnie zagniezdzonych if'ow z obsluga nawiasow, polecam smile.gif

Siadlem dzisiaj chwile (a powinienem wlasnie robic projekt sad.gif) na OPT sciagnietym z SVN i udalo mi sie w koncu odpalic ten cycle, wiec przeprowadzilem pare testow.. Wyniki tylko z szablonu pierwszego, w ktorym wczesniej OPT nie bralo udzialu.

Kod
Cache = 0
Template = tpl_1.html

Testing Chameleon 1.2.0                =>  123.08 requests/s
Testing Chameleon 1.5.0                =>  147.13 requests/s
Testing Chameleon 1.6.0                =>  147.13 requests/s
Testing Nemesis 1.3.0b                 =>  133.33 requests/s
Testing OPT 1.0.0 RC3                  =>   93.43 requests/s
Testing OPT 1.0.0 RC3 Lite             =>  113.27 requests/s
Testing OPT 1.0.0 RC3 Performance      =>   95.52 requests/s
Testing OPT 1.0.0 RC3 Performance Lite =>  116.36 requests/s
Testing Savant 2.4.3                   =>  114.29 requests/s
Testing SmartTemplate 1.0.2            => skipped
Testing Smarty 2.6.13                  =>   58.18 requests/s
Testing Smarty Light 2.2.12            =>   54.47 requests/s

Kod
Cache = 1
Template = tpl_1.html

Testing Chameleon 1.2.0                =>  124.27 requests/s
Testing Chameleon 1.5.0                =>  272.34 requests/s
Testing Chameleon 1.6.0                =>  266.67 requests/s
Testing Nemesis 1.3.0b                 =>  256.00 requests/s
Testing OPT 1.0.0 RC3                  =>  129.29 requests/s
Testing OPT 1.0.0 RC3 Lite             =>  170.67 requests/s
Testing OPT 1.0.0 RC3 Performance      =>  128.00 requests/s
Testing OPT 1.0.0 RC3 Performance Lite =>  168.42 requests/s
Testing Savant 2.4.3                   =>  113.27 requests/s
Testing SmartTemplate 1.0.2            => skipped
Testing Smarty 2.6.13                  =>  108.47 requests/s
Testing Smarty Light 2.2.12            =>  143.82 requests/s


Dla wyjasnienia skad tyle wersji OPT:
Lite - wersja okrojona przez dolaczony konfigurator prawie z wszystkiego.
Performance - wersja z wlaczona opcja performance
Performance Lite - oba powyzsze

PS. Smarty cos blado wypada w tym towarzystwie winksmiley.jpg
Bastion
Ula la smile.gif Panowie panowie smile.gif zaskoczyliscie mnie tymi postami, zaczynam po malu myslec ze ktos z tego zacznie korzystac :] Wiesci dobre - wszystkie prosby zostana spelnione. Poniewaz wczesniejsze bugi nie sa takie tragiczne wydanie 1.6.1 zostaje przesuniete do 1.7.0

@FiDO : jak myslisz ? warto aplikowac dyrektywe performance ? Z tego co wychodzi z wynikow nic ona nie daje
Vomit
Warto, warto, napewno jest wielu, ktorym to ulatwia prace.

Bastion, mysle, ze powinienes takze zwrocic uwage na ChameleonML, tak na dobra sprawe pierwsze rozszerzenie, nie stworone przez autora smile.gif

Mysle, ze moznaby to protected dac Rkingsmiley.png
Bastion
@Vomit : juz jest wsparcie dla MLa : http://www.vertis.com.pl/doc/doku.php?id=c...eLog#wersja_cvs smile.gif

A dyrektywa performance w OPT , rowniez w moich testach nie wypada najlepiej ... odnosze wrazenie ze nic nie daje.
ajgon
Wyrok w postaci kolokwium zostal oddalony na przyszly poniedzialek - spodziewajcie sie wiec dzisiaj ChameleonML-rc1 ;]



---
Wielki Brat patrzy i widzi jak nabijasz posty.
~mike_mech


---
Wielki bracie, ilosc 5 w skali prawie roku jest faktycznie porazajaca ;]
@FiDO - zeby nie bylo, ze nabijam posty - tak, to ja cool.gif
~ajgon
FiDO
Cytat(Bastion @ 2006-05-02 09:44:41)
@FiDO : jak myslisz ? warto aplikowac dyrektywe performance ? Z tego co wychodzi z wynikow nic ona nie daje

Mi nic do tego, to Twoj projekt i Ty decydujesz smile.gif
Moje subiektywne odczucie na chwile obecna jest takie, ze szkoda zachodu. Chociaz z drugiej strony wiele roboty to nie wymaga, jak bede mial czas to zobacze jak to sie ma do czasu wykonywania strony w jakims dzialajacym projekcie.

@ajgon: rozumiem, ze tej ajgon z tweak'a (aka purepc) to Ty ? :] to bylo pytanie retoryczne w sumie.. bo i tak kojarze Twojego av'a, no i miejsce zamieszkania sie zgadza ;]
ajgon
ChameleonML-r1
Pare slow (zawsze musi byc jakies ale) cool.gif
- poprawiony ml.tmp (klasa juz sie nie komunikuje przez plik z klasa kompilera) - okupione to zostalo drobnymi poprawkami w konstruktorze Class5.chameleon_compiler.php:
  1. <?php
  2. public function __construct($tpl, $content = '') // linia 706
  3. {
  4. if ((!empty($tpl) && $this->template_source = file_get_contents($tpl)) || (!empty($content) && $this->template_source = $content))
  5. // reszta bez zmian
  6. }
  7. ?>

ktore rozwiazanie jest szybsze - pewnie obecne, ale zostawiam to maniakom testow wydajnosciowych ;]
- pojawily sie metody do ustawiania i wyciagania jezykow - dobrze z nich korzystac, przed setVar() i load(), aczkolwiek widze tu mozliwosci, zmieniania jezykow zmiennych w obrebie jednego dokumentu ;]
w zasadzie to chyba tyle, wielkiej filozofii nie ma, jak mi przyjdzie cos do glowy to jeszcze namieszam tongue.gif

edit: tak mi sie jeszcze nasunelo, w compilerze tez powinno byc (o ile jeszcze to nie zostalo zaimplementowane) class_exists('Debugger', false); oraz private=>protected (chociaz mi osobiscie nie trzeba, bo ML nie dziedziczy z kompilera)
ajgon
Zamierzam sie w niektorych moich projektach przerzucic na Chameleon (m.in. http://ajgon.webdate.pl/ ktore mnie blaga o przepisanie kodu juz od prawie roku ;]) i do tego niezbedna mi jest obsluga wielojezykowosci (uzaleznilem sie od SmartyML i bez tego jak bez reki cool.gif ).
ajgon
Przyznam sie szczerze, ze od zawsze jechalem na smarty i nie zwracalem uwagi na inne rozwiazania, ale wczoraj przylecial do mnie toczek i wymachujac chameleonem przed oczami mowil - "Patrz! jakie fajne" (oczywiscie nie do konca tak bylo, ale drobne koloryzowanie nie zaszkodzi ;]). Ja tylko rzucilem okiem na testy wydajnosciowe - byl najwyzej, to wzialem w ciemno tongue.gif No i teraz poprawiam go pod siebie aarambo.gif
Poza tym, ja wymagajacy nie jestem - mi trzeba tylko szablony + jezyki, krawata wiazac i ciazy usuwac taki system nie musi ;] Pojawia sie jeszcze dobre ify i jak dla mnie bomba aaevil.gif A ociezalosc Smartyego juz mi sie dawala we znaki.
ajgon
Jeszcze jeden burak sie wkradl do kodu, w linii 83 trzeba zmienic
  1. <?php
  2. $this->source_php = $this -> compile();
  3. ?>

na
  1. <?php
  2. $this->source_php = $compiler -> compile();
  3. ?>

poprawiona wersja jest juz na serwerze smile.gif
toczek
haha, no moze to tak dokladnie nie bylo jak pisze ajgon tongue.gif . Fakt faktem zastanawiamy sie nad uzyciem klasy w pewnym projekcie w ktorym bardzo zalezy nam na szybkosci dzialania i lekkosci kodu winksmiley.jpg.
FiDO
To znowu ja, Zły User winksmiley.jpg

Tym razem nie wywalilem Apacha, ale efekt w przegladarce mimo wszystko ciekawy i daleki od zamierzonego winksmiley.jpg

Reprodukcja: dwa szablony, jeden includuje drugi, a ten drugi pierwszy. To wersja najprostsza.. "po drodze" moze byc wiecej szablonow i w ktoryms z tych zaglebionych wystarczy zaincludowac jednego z juz zaincludowanych.

Bardziej skomplikowane warunki nie daja rady, przyklad:
{@if("test" == "test" && (test == 1 || 2 == 2))}
Bastion
FiDO nie pozwalasz mi sie nudzic smile.gif Oba zagadnienia dodane do Mantisa - beda rozwiazne w najblizszym czasie smile.gif Chyba tez poszukam ci bugoli w Mantisie tongue.gif co bys sie nie nudzil.
FiDO
Alez prosze bardzo, bede wdzieczny winksmiley.jpg
luinnar
Na prośbę Bastion-a.

Chameleon 1.7.1 released!!!

ChangeLog:
  • Zmiana licencji na GPL
  • Usunięto błędy
    • bug009 : błędne wykrywanie modyfikatora przy operatorze ‘or’
    • bug010 : dopuszczenie do reprodukcji szablonów
    • bug011 : zła interpretacja słów kluczowych w warunkach
    • bug012 : brak indeksowania listowanych zmiennych w warunkach if()
Bastion
O smile.gif już działa.

Dzieku Luinnar smile.gif

@FiDO : znalazlem buga w Nemesis, jednak zmiana zawartosci szablonu nie powoduje wygenerowania nowego kodu php.
pawel_k
mi brakuje jednej rzeczy, mianowicie możliwości odwoływania się do elementów tablicy wielowymiarowej nie w pętli, np. {arr[0][0]}... chyba że coś źle robię :/

edit:
przydałaby się jeszcze jedna rzecz: przykladowo dla tablicy
Cytat
array(2) {
  [0]=>
  array(2) {
    ["id"]=>
    int(1)
    ["name"]=>
    string(3) "aaa"
  }
  [1]=>
  array(2) {
    ["id"]=>
    int(2)
    ["name"]=>
    string(3) "bbb"
  }
}
i dla $_GET['shopid'] = 2 kod
  1. <select name="shopid">      
  2.      {@list(shops)}
  3.            <option value="{shops['id']}"{@if(_get['shopid'] == shops['id'])}selected="selected"{@fi}>{shops['name']}</option>
  4.      {@end}
  5.      </select>
nie zaznacza <option value="2" selected="selected">...
FiDO
Cytat
@FiDO : znalazlem buga w Nemesis, jednak zmiana zawartosci szablonu nie powoduje wygenerowania nowego kodu php.

A jakis przykladowy kodzik sie znajdzie? Bo cos nie moge tego zreprodukowac winksmiley.jpg U mnie wydaje sie dzialac jak powinno.
Bastion
@pawel_k :

Dziwne, bo dziala :
Skrypt : http://www.vertis.com.pl/demo/chameleon/ex...13.php?shopid=3 (pokaze ccc)
Źródło : http://www.vertis.com.pl/demo/chameleon/ex.../bug013.php.txt
Szablon : http://www.vertis.com.pl/demo/chameleon/ex...ates/bug013.tpl

Może używasz wersji 1.7.0, tam faktycznie był błąd, który został poprawiony w 1.7.1, mianowicie :
# bug012 : brak indeksowania listowanych zmiennych w warunkach if()

@FiDO : wyglada to prosto :

  1. <?php
  2.  
  3. require_once 'class.Nemesis.php';
  4.  
  5. $tpl = new Nemesis;
  6. $tpl->templates_dir = 'tpl/';
  7. $tpl->compiled_dir = 'php/';
  8. $tpl->cached_dir = 'txt/';
  9. $tpl->compile_check = false;
  10. $tpl->caching = false;
  11.  
  12. $tpl->assign('var', 'value');
  13.  
  14. $tpl->display('bug1.tpl');
  15.  
  16. ?>


Kiedy nie ma skompilowanego szablonu to go tworzy, ale potem modyfikacja go nie rekompiluje szablonu. Moze cos zle zrobilem, a moze pod linuxem jest inaczej z ta detekcja modyfikacji.
FiDO
No i wyszedł brak dokumentacji tongue.gif
Wyłączyłeś compile_check, a to jest opcja optymalizacyjna, która powoduje, że szablony nie są sprawdzane pod kątem zmian (jak już masz finalną wersję aplikacji to można to wyłączyć), a tylko pod kątem istnienia. Włącz to z powrotem na true albo po prostu usuń (true jest domyślne) i powinno zaskoczyć smile.gif

Szukaj dalej aaevil.gif
Bastion
myslalem wlasnie ze compile_check sluzy do sprawdzania poprawnosci kompilacji smile.gif
pawel_k
Cytat(Bastion @ 2006-05-06 08:03:02)
Może używasz wersji 1.7.0, tam faktycznie był błąd, który został poprawiony w 1.7.1, mianowicie :
# bug012 : brak indeksowania listowanych zmiennych w warunkach if()

rzeczywiście używałem starszej wersji, wszystko śmiga ładnie:]
Bastion
btw 1.8.0 juz jest
Vomit
Brakuje mi, zebym mogl zrobic tak:
Kod
{@setvar(var="i" val=1)}

{@list(costam)}
{i++}
{@end}


Mianowicie chodzi tylko o to ++. Wiem, ze da sie to zalatwic za pomoca funkji matematycznych, ale takie ulatwienie tez by bylo fajne.
Bastion
dodano do mantisa, fajnie by bylo gdybys zglaszal requesty na http://bugs.vertis.com.pl/ smile.gif
splatch
Bardzo dobrze, że wykorzystałeś Reflection API, szkoda, że tak niewiele. winksmiley.jpg
W kodzie brakuje mi komentarzy w stylu php-doc. Dzięki nim przeglądanie API mogło by się odbywać online bez ściagania paczki. smile.gif Szkoda, że część rzeczy jest pozaszywana wewnątrz metod (_make_if::$leave), używasz również konstrukcji która z tego co pamiętam jest wolniejsze (while+each) niż foreach.

Tyle mi się nasunęło po przejrzeniu źródeł.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.