Wiem, ze to wczesnie, bo dopiero jest wersja 0.9.4. Ale dodalem juz galaz 1.0. Mozna w niej rozwijac wersje deweloperska coyote'a.
Podstawowa zmiana jaka planuje to mala zmiana w architekturze (stad nowy numerek wersji - mozliwe, ze nie bedzie kompatybilna z poprzednia wersja).
Podstawowa bolaczka obecnej wersji jest to, ze klasa Core bazuje na singletonie. Ok, ale ponosi to ze soba pare niedogodnosci. Po pierwsze - klasa moze byc dziedziczona tylko raz. Stad, koniecznosc odwolywania sie do jadra poprzez Core::getInstance() (np. w bibliotekach). I tak, np. klasa Controller dziedziczy po Core, a z kolei wszystkie kontrolery po klasie Controller. Jezeli wiec z jednego kontrolera chcemy "przeskoczyc" do drugiego poprzez metode forward(), spowoduje to blad (jezeli drugi kontroler rowniez dziedziczy po Controller).
Stad moja propozycja:
- Dodanie slowa kluczowego final do klasy Core (brak mozliwosci dziedziczenia po tej klasie).
- Rezygnacja z klasy Front_Controller -- przerzucenie kodu do klasy Core. Tam dodanie metody bootstrap(), ktora zainicjuje loader oraz klase konfiguracji itp.
- Podstawowe biblioteki beda ladowane przed inicjalizacja kontrolera - beda dostepne dla triggerow przed utworzeniem klasy kontrolera.
- Dodanie klasy Context, po ktorej beda mogly dziedziczyc bez problemu inne klasy uzyskujac dostep do obiektow jadra. Np.:
class FooLib extends Context
{
function main()
{
echo $this->getContext()->bar->getName(); // przyklad uzyskania dostep do metody z innej biblitoeki
}
}
Kolejna innowacja jaka planuje to mozliwosc wywolywania widoku w inny sposob (stary sposob rowniez zostanie zachowany). Tzn. akcja z kontrolera moze zwracac nazwe widoku ktory zostanie automatycznie wyolwany - np.:
class User extends Controller
{
function main()
{
$this->foo = 'foo';
return 'Submit'; // wyswietlenie widoku userSubmit.php i przekazanie mu wartosci pola foo
}
}
Tutaj mozna dodawac tickety do wersji 1.0: http://4programmers.net/trac/coyote/query?group=status&milestone=Coyote+Framework+1.0
Oczywiscie, aktualna wersja 4programmers.net powstaje pod Coyote 0.9.4. Te zmiany to tak na przyszlosc. :)
Jezeli ktos ma jeszcze jakies pomysly, ktore moga usprawnic dzialanie - zapraszam do dyskusji. :)