Oj Kohana, Kohana

Kiedyś napisałem coś naprawdę prostego we frameworku Code Igniter. Były to dwa kontrolery na krzyż i chyba był to jakiś mini system mailingowy. CI jednak skreśliłem ze względu na zamierzchłą wersję PHP (4).
Wczoraj myślałem, jakiego frameworka użyć w średnim projekcie. Mój nie nadaje się jeszcze do pisania biznesowych aplikacji, bo ma za dużo braków i niestabilne API. Wybór padł na Kohana.

Instalacja przebiegła nadzwyczaj łatwo, video tutoriale ładnie wprowadzają w najprostsze funkcje tego frameworka - wszystko jest cacy. Jako, że najbardziej interesuje mnie strona techniczna tego projektu, zacząłem przeglądać źródła. Szukałem funkjonalności, które powinny moim zdaniem być w każdym nowym projekcie. Już na samym początku obsługa widoków niemile mnie zaskoczyła. Klasa View_Core to żart. Jeśli w kontrolerze utworzę obiekt View

1
2
3
<?php
$view
=new View('nazwa_pliku');
?>

to zbiór metod nie przedstawia się imponująco

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
/*
Array
(
    [0] => factory
    [1] => __construct
    [2] => set
    [3] => bind
    [4] => set_global
    [5] => __set
    [6] => __get
    [7] => __toString
    [8] => render
)

Jedziemy dalej
*/
$view->message='Hello World!';
$view->render(true);
?>

Plik nazwa_pliku.php
1
2
3
<?php
print '<h1>'.$message.'</h1>';
?>

Co teraz mam zrobić, jeśli utworzyłem w obiekcie $message, a w dalszej częsci kontrolera (przed wywołaniem View::render()) zechcę zmienić plik szablonu? Nie mogę tego zrobić. Muszę utworzyć nowy obiekt View, w konstruktorze podając nazwę pliku i jeszcze raz przypisać mu zmienną message. Nie rozumiem, dlaczego nie mogę zmienić pliku - mogę sam dopisać metodę dostępową, ale nie po to sięgam po framework, żeby takie oczywiste rzeczy w nim poprawiać.

Druga sprawa, która po prostu mnie rozbroiła. Klasa Kohana
Jak już podniesie system i wczyta konfigurację, to zawsze może służyć za autoloader i wyszukiwarkę plików... może frytki do tego?

Narzekam, ale i tak użyję tego szkieletu (może znajdę więcej kwiatków) i zobaczę jak to zadziała. Póki co, ode mnie żółta kartka za naprawdę spore niedoróbki.

Komentarze

Info:

Nick:
Treść:

devnul napisał(a)
bez przesady Kohana jest względnie młodym projektem, ciągle rozwijanym nie można mieć wszystkiego. Zapowiada się bardzo dobrze ale trzeba jeszcze troche czasu żeby mieć naprawdę wszystko co jest potrzebne. Na chwilę obecną Kohana to "tylko" niekompletny port CI przepisany na php5. Daj szansę projektowi i trochę czasu a będziesz mile zaskoczony.
pozdro.
ojjojoj napisał(a)
ale marudzisz, strasznie...
Walker napisał(a)
Autoloader jest po to, abyś nie musiał ładować oddzielnych klas czy widoków, tylko po prostu pisał np. new View('myView') i tyle.

Link, który podałeś jest już trochę nieaktualny i nie zaleca się jego używania.

Po co chcesz zmieniać na samym końcu widok i który fw to oferuje?
cysiaczek napisał(a)
Daję Kohanej szansę.
@Walker - Nie chodzi o to, że w Kohanej jest autoloader, tylko o jego umiejscowienie.
Widok chcę zmieniać w zależności od kontekstu, w jaki wpadnie kontroler. Brakuje mi zwłaszcza obiektu z danymi, który mógłbym przekazać do dowolnego widoku. Tablica przekazywana jako parametr to odrobinkę za mało. Rozumiem jednak, że taki jest paradygmat tego FW, więc nie wymieniam tego jako wady. Zresztą - jeśli dobrze pójdzie, to dopiszę taki kod do Kohanej i będę miał z głowy :)
Strzalek napisał(a)
Agavi!

Niedługo będzie seria notek na moim blogu o tym frameworku :)
cinekz napisał(a)
Agavi dla mnie jest wręcz wzorcowe, ale niestety prawie nie ma dokumentacji :/
n napisał(a)
loader i autoloader zostały już wykasowane w SVN
radekk napisał(a)
Kohana przypadła mi do gustu, zwłaszcza że wcześniej korzystałem z CI. A widoki? U mnie czegoś takiego nie ma, mam przerobioną wersje CI i Kohany pod Smarty więc się tym nie przejmuje.
Er napisał(a)
Widac, ze pracowales z wczesna wersja albo nie doczytales dokumentacji (po lebkach?) do widoku po za tablica mozesz przekazywac obiekt(y) istnieje tez przekazywanie bezposrednio do zmiennych tworzonych dynamicznie. W przykladach masz takze ze do istniejacego widoku mozesz ladowac dodatkowe widoki.



Er napisał(a)
Co do checi zmiany pliku szablonu chwila przed reneringiem to mlodym programistom zaleca sie uzywaja zasad logiki.Controller pobiera, zmanipuluje i wygeneruje dane do widoku wiec wszystkie dane wyjsciowe "kolekcjonujesz", a gdy pora i potrzeba "wybierasz" na koniec wlasciwy widok i renderujesz. Oczywiscie jesli "z gory" wiesz jaki vidok ladujesz mozesz dane "dopisywac" z marszu. Proste jak budowa cepa.
cysiaczek napisał(a)
Tak, zazwyczaj właśnie tak się to robi. Jednak dlaczego po prostu nie może być możliwości zmiany nazwy tego pliku? Toć to jedna metoda więcej, a w FW klasy Kohana, gdzie żonglujesz obiektem View samodzielnie - niezbędna, aby ten obiekt był w pełni funkcjonalny.
 
Symfony_button