Bok! Htio bih vam skrenuti pažnju na ovaj framework:
https://github.com/mvodanovic/WebFW
Ne postam zbog reklame, framework je freeware i nemam niš od njega. Prvi put uopće išta objavljujem o njemu. Ako nekoga zanima, neka ga pogelda i da mi svoje komentare. Radim ga inače za svoj gušt u slobodno vrijeme. Još uvijek nema ni jedan release jer želim još implementirati neke funkcionalnosti i riješiti neke bugove prije releasanja. Mislim da ima oko 10000 linija koda, možda je sad i nešto više.
Zamišljen je da se koristi kao poddirektorij (git submodule) nekog projekta. Osnovna instalacija zahtijeva kopiranje __install direktorija u direktorij projekta (naddirektorij frameworka). Osim samog direktorija projekta, po defaultu su tu i public direktorij (sa index.php, .htaccess i statikom) i config direktorij (sa INI fileovima za konfiguraciju).
Više sam nastojao ciljati na kvalitetu izrade nego brzinu završavanja. Većina funkcionalnosti je zamišljena da bude jednostavna za upotrebu, ali opet da je sve moguće overridati za specifične potrebe.
Od glavnih featurea koje bih izdvojio tu je mogućnost korištenja MySQL, PostgreSQL i SQLite baza. Jednu bazu je lako koristiti, ali postoji mogućnost i spajanja na više različitih baza (i više različitih tipova baza). Svaka tablica u bazi je predstavljena sa jednom singleton klasom u frameworku. Tablica mora biti vjerno kopirana 1:1 (svi fieldovi, zajedno sa tipovima i defaultnim vrijednostima, svi constraintovi; za indexe još nije gotova podrška). Podržani su i kompleksni keyevi, a ne samo jednostavni. Tablicu koriste TableGateway (za manipulaciju jednog retka) i ListFetcher (za dohvaćanje liste iz baze; bilo kao lista arrayeva, bilo kao lista TableGatewayeva). Za bazu mi još nedostaje automatsko generiranje queryja za stvaranje baze prema modelu u kodu, to je u planu.
osim baze, tu je i Router koji omogućuje linkanje URL-a na controller i obratno. Također podržava i rewriteanje ruta, i hardkodiranih u routeru, i definiranih u CMS-u (u planu).
Za cacheing je podržan Memcached, ali je ostavljena mogućnosti implementacije i za druge engine. Keširati se po defaultu mogu controlleri, komponente, pojedine tablice u bazi (tje queryji) itd... S tim da postoji i podrška automatskog ubijanja cachea za neku tablicu kad se ona updatea.
CMS je takakav kakav je. Nisam frontendaš, ali mislim da je ok. Želja mi je da jednog dana bude responsive. Podržava ItemControllere (za editiranje jednog zapisa u bazi), ListControllere (za izliste i editiranje pojedinih stvari u listi) i TreeControllere (za prikaz i editiranje stablastih struktura, kao npr. navigacija). Navigacija je potpuno customizabilna,, uz mogućnost definiranja permissiona po tipu usera. Postoje neke defaultne akcije u CMS-u, ali se za svaki controller mogu definirati i custom akcije, i u list modu i u edit modu. U planu je podrška za 1:n i m:n veze u editu.
Postoji i developer mode koji je dostupan u dev environmentu, a u production environemntu ili nije, ili je zaštićen passwordom. Za dev mode se mogu stvarati DevControlleri (jedini trenutno je onaj koji prikazuje PHPInfo, u planu je još toga, kao npr. brisanje cachea ili dobivanje queryja za kreiranje baze itd...) i page profiler koji prikazuje benchmark za request za svaki Controller.
Trenutno je u izradi podrška za slike, nadam se da ću je dovršit kroz tjedan-dva. Bit će podržani Imagick i GD libraryji, različite varijacije slika (tipovi: cropped, fixed width, fixed height, contain, cover), a u CMS-u će se za administraciju slika moći ručno postaviti veličina slike po želji.
Eto, to je to. Ak vam se da, pogledajte, pljujte, hvalite, predložite (na marko . vodanovic [at] yahoo . com)...
EDIT:
E, da. Minimalna vezija PHP-a za framework je 5.4. Radim ga za budućnost kad će nadam se to biti standardna verzija svugdje.