ritogy Posted March 11, 2012 Report Share Posted March 11, 2012 Tātad nodomaju ķerties pie kaut kā nopitnāka, un sāku skatīties dažādas pamācības par mvc, to uzbūvi, darbību u.t.t. Beidzot ķēros klāt, un sāku kaut ko pa mazam taisīt. Pagaidām pabeidzu tikai galveno klasi, caur kuru es pārvietošos pa lapā, un tā ielādēs klases un metodes, līdz moduļu ielādei netiku. <?php class Core { public function __construct() { $url = $_GET['url']; $url = rtrim($url, '/'); $url = explode('/', $url); if(empty($url[0])){ require 'controllers/home.php'; $controller = new Home(); $controller->index(); }else{ if(!empty($url[0]) && !empty($url[1])){ $controller_name = 'Controllers/' . $url[0] . '.php'; if(file_exists($controller_name)){ require $controller_name; $controller = new $url[0]; $controller->$url[1](); }else{ echo 'Not found'; } }else{ $controller_name = 'Controllers/' . $url[0] . '.php'; if(file_exists($controller_name)){ require $controller_name; $controller = new $url[0]; $controller->index(); }else{ echo 'Not found'; } } } } } Gribu zināt cik ši klase ir laba, un ko es tajā varētu uzlabot. .htaccess fails, kuru pats nerakstīju, bet paņēmu gatavu no vienas pamācības Options +FollowSymLinks -Indexes -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] Paldies. Quote Link to comment Share on other sites More sharing options...
101111 Posted March 11, 2012 Report Share Posted March 11, 2012 Neiesaku vispār pašam nodarboties ar MVC freimworka izveidi, bet gan pētīt/izmantot kādu gatavu. Augstākminētajam kodam, līdz sakarīgas arhitektūras freimworkam vēl tāls ceļš ejams. Skaties gatavus variantus, tas ar ko pašlaik nodarbojies ir nelietderīgi izniekots laiks. Quote Link to comment Share on other sites More sharing options...
ritogy Posted March 11, 2012 Author Report Share Posted March 11, 2012 Neiesaku vispār pašam nodarboties ar MVC freimworka izveidi, bet gan pētīt/izmantot kādu gatavu. Augstākminētajam kodam, līdz sakarīgas arhitektūras freimworkam vēl tāls ceļš ejams. Skaties gatavus variantus, tas ar ko pašlaik nodarbojies ir nelietderīgi izniekots laiks. Ieteikumi? Pagaidām esmu skatījies tikai Codeigniter. Quote Link to comment Share on other sites More sharing options...
vostro Posted March 12, 2012 Report Share Posted March 12, 2012 CodeIgniter man personīgi patīk! Quote Link to comment Share on other sites More sharing options...
daGrevis Posted March 12, 2012 Report Share Posted March 12, 2012 CodeIgniter uzbūve gan nav sakarīga, tas tā. Paskaties kā ir veidota Kohana vai Fuel. Bet kāpēc gan, mācību nolūkos, pašam «neuzburt» savu _in-house freimvorku_? Protams, īstos projektos to nevajadzētu izmantot, bet, ja ir lieks laiciņš, kāpēc gan nepaspēlēties un kaut ko foršu neuztaisīt? :) Quote Link to comment Share on other sites More sharing options...
Kavacky Posted March 12, 2012 Report Share Posted March 12, 2012 Īstos arī vajadzētu. Quote Link to comment Share on other sites More sharing options...
codez Posted March 12, 2012 Report Share Posted March 12, 2012 (edited) 1. Abstrakcija, abstrakcija un vēlreiz abstrakcija: šis: require 'controllers/home.php'; $controller = new Home(); $controller->index(); šis: require $controller_name; $controller = new $url[0]; $controller->$url[1](); un šis: require $controller_name; $controller = new $url[0]; $controller->index(); ir viens un tas pats, tam jābūt zem metodes, piemēram, Core::runController 2. Izmanto autoload, lai nebūtu manuāli jāraksta vienmēr require un turpmāk varētu izmantot arī lazy loading. Edited March 12, 2012 by codez Quote Link to comment Share on other sites More sharing options...
ritogy Posted March 12, 2012 Author Report Share Posted March 12, 2012 codez obligāti jātaisa statiska funckija? Nevar vienkārši publisku funkciju? Padlies daGrevis tūlīt ķeršos pie testēšanas. Quote Link to comment Share on other sites More sharing options...
codez Posted March 12, 2012 Report Share Posted March 12, 2012 Es pamātā taisītu visu Core klasi ar statiskiem mainīgajiem un metodēm, jo nav vajadzīgas 2 Core klases instances. Tādā veidā tu jebkurā vietā varēsi papildus izsaukt Core::runController, tādā veidā radot HMVC paternu un tev nebūs jāglabā kaut kur papildus globāla Core klases instance. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted March 12, 2012 Report Share Posted March 12, 2012 Un tad tu nevarēsi nekādīgi notestēt Core klases (kas ir pašas svarīgākās) ar unit-testiem. :) Re kur raksts par to, ko Fuel plāno darīt ar «šo problēmu»... Quote Link to comment Share on other sites More sharing options...
codez Posted March 12, 2012 Report Share Posted March 12, 2012 (edited) Vispār jau static klases arī var tīti labi testēt, jāpārvar tikai dažas neērtības. Bet, ja unit testi tiešām ir vajadzīgi un tos grib veikt ar klases instancēm arī Core klasei, tad taisam Core klases funkcionalitāti ne statisku un pievienojam tai statiskas wrapper klases, kas izmanto Core klases singletonu. Šeit ir jāizšķiras par labu vienai vai otrai lietai, vai nu vienkāršāka aplikācijas izstrāde, vai ērtāka Core testēšana ar unit testiem, vai abi, ja dara kā es teicu, bet tad Core klasei papildus jāraksta wrapper metodes. Edited March 12, 2012 by codez Quote Link to comment Share on other sites More sharing options...
wintermute Posted August 6, 2012 Report Share Posted August 6, 2012 Es pamātā taisītu visu Core klasi ar statiskiem mainīgajiem un metodēm, jo nav vajadzīgas 2 Core klases instances. Tādā veidā tu jebkurā vietā varēsi papildus izsaukt Core::runController, tādā veidā radot HMVC paternu un tev nebūs jāglabā kaut kur papildus globāla Core klases instance. Ar ko īsti statiski mainīgies un funkcijas atšķiras no globāliem mainīgajiem no funkcijam iekš namespace ? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.