Moj framework

Ova tema nije da bi me kritizirali kako vam web stranice ne rade pomocu ovog, blabla… Vec da bi mi pomogli oko nadopunjavanja frameworka i slicno.

Moj prvi ‘framework’, nedopunjen, bez helpera i slicnog. Baziran na CodeIgniteru…

Nemam nikakvu licencu, kod je open-source, neka ga downloada tko god zeli i neka ispravlja moj kod sa svojim i neka stavlja u javnost.
Framework je jako jednostavan sa MVC dizajnom.

Veličina .rar datoteke: 10 kb.
Primjer kontrolera:
[php]

<?php class Naslovnica extends Controller { function __construct() { $this->aI(); } function index() { $this->template->render('naslovnica'); } } ?>

[/php]

Primjer modela:
[php]

<?php class Moj_Model extends Model { function __construct() { $this->aI(); } // bilo kakve metode } ?>[/php]

Pozivanje modela:
[php]
$this->getModel(‘ime_modela’);
[/php]

(napomena: aI() poziva sve iz system foldera [libraries, helpers] da se mogu koristiti, zato to koristite u svakom controlleru)

Podrzavam i negativne i pozitivne komentare.

Download link:

:zbogom:

Uh, zaboravio sam .htacces fajl.

http://www.2shared.com/file/7aCkrjcu/htaccess.html

samo mali ispravak, ovaj kod ima licencu, koja je gpl, apache, bsd ili slicno (odeberi jednu i navedi to


)! I open source je pod licencom open source, koja dozvoljava slobodnu distribuciju izvornog koda:)

pohvala za trud…

ispravit cu to prvom prilikom :wink:

hvala :wink:

Evo par kritika i savjeta.

Neke kritike i savjeti:
Svim metodama naznačiti vidljivost
Maknuti metodu redirect iz Loader klase.

Loader klasa služi samo za loadiranje fileva. Redirect rješavati negdje drugdje.

Base klasu pretvoriti u abstraktnu i maknuti da extenda Loader klasu.

Loader klasu treba pokrenuti u index.php.

Napraviti (pretvoriti Loader) Application klasu koja pokreće cijelu applikaciju.
Dispacher neka bude instanciran u toj Application klasi a ne u index.php.

Klasa loader se pokereće u istom file gdje se instancira.
To mislim koristiti samo kod Singletona u svim drugim slučajevima to izbjegavati!

Koristiti extend samo gdje je primjereno odnosno gdje klasa koristi većinu metoda.
Za primjer sve klase imaju pristup redirect metodi a to nije potrebno.
Recimo Template extenda Loader samo da bi dobio pristup $_view property.

Sve klase extendaju od Base koji extenda Loader za što nema razloga.

Dosljednost u pozivanja konstruktora od klase.
Negdje se koristi _construct a negdje ime klase.
Pogledati kako će biti u budućim verzijama PHP.

Pretvoriti klase koje se nesmiju instancirati već se moraju extendati u abstraktne klase.
Tipa Controller, Model, Libary itd.

Dodati vidljivost varijablama.

Staviti da se vrijednost sadašnjeg view i controllera čuva, tako da korisnik
ako želi može isporučiti, drugi controller, ili barem view, za view obavezno.
Znaći da može u controlleru staviti $this->template->render(‘bilokaj’);
Blokiranje prikazivanja view također ugraditi.
Razmišljati o uvođenju eventa tako da bi korisnik znao u controlleru u kojoj
je fazi prikazivanje aplikacije (vrlo napredno, može zadnje ali opet treba
aplikaciju razivijati na umu stime).

Početi koristiti source control. Provjeri Google code!

Defaultni view je uvijek index. view = medota koja poziva u controlleru.

Uglavnom previše extendanja, to je ipak posljednja opcija. Sve klase su međusobno povezane zbog toga što nije dobro.
Napravio sam i primjer sa izmjena od gore tako da to možeš vidjeti i radi stvar bez prevelikih izmjena ali zato ću novi post.

Template.php, maknuo ektenziju na Base.
stavio sam tamo da se postavlja gdje se nalazi folder od view, ali
to bi trebalo u config.
Lokacija se dobivala kroz Loder.php i to je bio jedini razlog zašto je učinjen extend.

Ugraditi prepoznavanje putanje, jel linux ili windows.
Koristi separator od php za odvajanje putanje.

Index.php
Stavio da se pokreće Loader.php
Loader php pretvoriti u Application.php

Dispacher.php
Preimenovati u Router??
Maknuo ekstenziju sa Base.
Dispacher, kreira controller i poziva metode prema URL.
Stavio da kreira template.
Znači instancira controller.
Poziva metodu prema url.
Zatim poziva kreiranje template u controlleru.
Tu funkciju za kreiranje template controller nasljeđuje.

Ovo bi sve trebalo maknuti iz Dispachera, njegovo je samo da postavi vrijednosti koje se controller poziva, te koji se view poziva. Ostatak implementacije u novoj
klasi.
Sredio da se na klasu stavlja ucfirst. Uglavnom da mi primjer može raditi.
To je sve hardkodirano i to treba mjenjati.

Controller klase više ne trebaju pozivati konstrukor niti template!.
Oko ovog se u biti vrte sve izmjene u kodu.

Controller.php pretvoren u abstract. Nema implementacije, nasljeđuje od Base.
Base.php
Isto abstrakt postavlja template. Postavljanje template se poziva u Dispacher.php
odmah ispod pozivanja metode od Controllera.
Base.php se slobodno može prebaciti u Controller.php.
Znaći Base umjesto da svi ekstendaju od njega sada se koristi samo kod
Controllera.

Model.php izbaciti extend isto kao i kod ostalih klasa.
SQL.php vjerovanto neće raditi.
No za komunikaciju sa bazom bolje koristiti neki gotovi libary.
Tu mislim da nema smisla nešto previše razvijati.

Helper.php maknut extend od Base.

Loader.php
tu sam maknuto instanciranje svih klasa. Mislim da ih ne treba instancirati.
Već dosta je da se loadiraju. Instanciraju se kasnije kad trebaju.
Loader se pokreće u index.php
Maknuta redirect metoda, nije joj tu mjesto.

Trebalo bi srediti neko napredniju kontrolu nad sadržajem (kod view, proces ispisivanja).

U zipu je primjer koji je testiran sa postavljanjem novog view i prenošanjem
varijablama kroz controller do view.

Nije bilo velikih promjena u dizajnu aplikacije, ali neke “sitnice” su ispravljene.
Nebi niti imalo smisla raditi neke velike promjene, onda bi to bilo pisanje ispočetka.

Bravo, bravo. Još će nastati pravi framework. :smiley:

Ja mogu dodati routera kako sam oduvijek htio, SEO najbolje rjesenje ikad.

@gorccc - svaka čast, ajde u PM ako si zainteresiran za neko veće razvijanje frameworka :))

@Gosaric - može, nadopunjuj koliko god hoćeš :slight_smile:

A bilo bi zabavno nešto ići izgraditi od nule, jer sadašnji rad, tu ide view, tu model i tu controller i tako do besvijesti ubija pojam u čovjeku:)
Samo što neznam koliko bi se isplatilo ići na tržite frameworka za izradu stranicu, no neki uskospecijalizirani framework, gdje se nebi sve svodilo na kopiranje postojećih rješenja e tu bi već i bilo malo zabave:)