Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana]W jakim celu używać metod after i before w templatach?
Forum PHP.pl > Forum > PHP > Frameworki
grzestra
Tak jak w temacie, w jakim celu warto korzystać z after i before podczas tworzenia widoków na bazie templatu?

pozdrawiam Grześ
erix
http://kohana.sher.pl/2009/10/hello-world-w-kohanie-3-0/ - czasem wystarczy pogooglać.

A w jakim celu? Choćby dla pobrania/zapisania całego zrenderowanego widoku do cache.
grzestra
Jak działają te metody to wiedziałem, ale o wykorzystaniu ich do keszowanie to nie pomyślałem. Ale masz racje to się super sprawdzi.
Czy mogłoby to działać tak:
before{
//sprawdzam, czy widok został zapisany do zmiennej i czy nie jest zbyt stary, jeśli jest ok, to wczytuje go do jakiejś zmiennej, np $view2
}
jakasKlasa{
//sprawdzam czy $view2 jest niepuste, jeśli tak to zwracam zawartość tej zmiennej, jeśli nie to generuje widok
}
after{
//zapis widoku do keszu
}


Chciałem jeszcze zapytać, czy znasz jakiś tutorial albo czy sam mógłbys napisac jak działa system keszowania wbudowany w KO3? Znalazłem taką klasę, ale nigdzie nie mogę znaleźć jakiegoś przykładu i nie wiem jak ten kesz działa. A w ogóle to dzięki za arta o różnych systemach keszownaia na Twoim blogu.

pozdrawiam Grześ
erix
Ale po co katować kod każdej akcji sprawdzaniem, czy jest zmienna?

Nie pamiętam, czy w Kohana było coś takiego, jak byPassAction (na ten temat niech się spece wypowiedzą), ale wtedy wystarczą same metody before/after -> będzie to wówczas rozwiązanie najbardziej uniwersalne.

I wysyłanie zbuforowanych danych powierzyłbym metodzie after; kto wie, czy jakieś nagłówki nie będą po drodze wysyłane.

Cytat
Chciałem jeszcze zapytać, czy znasz jakiś tutorial albo czy sam mógłbys napisac jak działa system keszowania wbudowany w KO3

KO3? Pierwsze słyszę...
grzestra
Mój błąd, jest Route::cache, nie rozgryzłem do czego służy ale nie jest to kesz o jaki mi chodzi. Jeśli wiesz do czego to służy to pisz śmiało.

Czy mógłbyś rozwinąć swoją wypowiedź o keszowaniu. Szczególnie ten fragment
Cytat
"Ale po co katować kod każdej akcji sprawdzaniem, czy jest zmienna?"
? Nie wiem jak ominąć sprawdzanie zmiennej z keszem, jeśli da się to zrobić, to bardzo chciałbym się dowiedzieć jak?smile.gif

Dopiero niedawno zacząłem prace z KO3 i jest to mój pierwszy framework, więc proszę o wyrozumiałość.

pozdrawiam G
ziqzaq
Kohana ma wewnętrzny cache (Kohana::cache()), który przechowuje ścieżki do plików aby przyspieszyć ich wyszukiwanie, ale ma on pewne ograniczenia (przeczytaj sobie komentarz dla Kohana::cache() - "system/classes/kohana/core.php" lub moduł userguide "http://twojhost/guide/api/Kohana_Core").
Route::cache() służy co cacheowania zdefiniowanych ścieżek routera.
Użycie np. takie:
  1. if ( ! Route::cache())
  2. {
  3. Route::set('r0', '(<controller>(/<action>))(.html)')
  4. ->defaults(array(
  5. 'controller' => 'welcome',
  6. 'action' => 'index'
  7. ));
  8. Route::cache(TRUE);
  9. }

Jeśli potrzebujesz biblioteki cache dla ko3 to na pewno są co najmniej dwie w repozytorium na github.

// Edit: np. tu masz kohana-cache.
grzestra
Dzięki za odpowiedź

Szczerze powiedziawszy to się teraz zupełnie pogubiłem. Przeczytałem kod źródłowy Kohana::cache i z opisu dowiedziałem się, że umożliwia on zapis do pliku (jako kod PHP). Czyli jeśli będę w ten sposób zapisywać widoki, to będę miał zwykłe pliki tekstowe? Czyli chyba to o co mi chodzi. Sprawdziłem na stronie z dokumentacją jak tego używać - proste. Komentarzy o których pisałeś nie było.

Natomiast ten samsoir kohana-cache jest dużo ciekawszy bo pozwala na użycie sqlite zamiast sterty plików. BTW czy z github można ściągać całe biblioteki czy trzeba przeglądać każdy plik i osobno go kopiować?

Jeszcze jedno jeśli można, po co keszować ścieżki poprzez Route::cache()? Na jakiej zasadzie to działa?


pozdrawiam

Przeglądając Kohana::cache znalazłem taki fragment (na samym początku):

Kod
        // Cache file is a hash of the name
        $file = sha1($name).'.txt';

        // Cache directories are split by keys to prevent filesystem overload
        $dir = Kohana::$cache_dir.DIRECTORY_SEPARATOR.$file[0].$file[1].DIRECTORY_SEPARATOR;

Jaki jest sens odwoływania sie do zmiennej typu string tak jak do tablicy ?
Kod
$file[0].$file[1]
ziqzaq
Cytat
Przeczytałem kod źródłowy Kohana::cache i z opisu dowiedziałem się, że umożliwia on zapis do pliku (jako kod PHP). Czyli jeśli będę w ten sposób zapisywać widoki, to będę miał zwykłe pliki tekstowe?

Tak. Cache'owane dane będą serializowane i zapisywane do pliku tekstowego.
Cytat
BTW czy z github można ściągać całe biblioteki czy trzeba przeglądać każdy plik i osobno go kopiować?

Po prawej na górze "Download source".
Cytat
Jeszcze jedno jeśli można, po co keszować ścieżki poprzez Route::cache()? Na jakiej zasadzie to działa?

Po to aby nie budować wszystkich ścieżek z każdym wywołaniem tylko zrobić to raz.
Cytat
Jaki jest sens odwoływania sie do zmiennej typu string tak jak do tablicy ?

Manual php strings "Example #8 Some string examples".
grzestra
Cytat(ziqzaq @ 19.05.2010, 23:10:24 ) *
Tak. Cache'owane dane będą serializowane i zapisywane do pliku tekstowego.


Cytat
Po prawej na górze "Download source".

Nie wiem jak mogłem tego nie zauważyć, eh co za dzień

Cytat
Po to aby nie budować wszystkich ścieżek z każdym wywołaniem tylko zrobić to raz.

OK, czyli to odciąży nieco ruter i jakiś zysk na wydajności być powinien

Cytat
Manual php strings "Example #8 Some string examples".

Ale zaćmienie miałem, chyba już zbyt późno :|

dzięki again!




ziqzaq a czy użycie keszu tak jak napisałem w 3 poście w tym temacie będzie dobre? Czy jakoś inaczej to zrobić?

pozdrawiam Grześ

questionmark.gif

questionmark.gifquestionmark.gif?
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.