Jump to content
php.lv forumi
Sign in to follow this  
xfr33

DAPS Framework

Recommended Posts

Sveicināti ļautiņi!

 

Ir sanācis tā, ka izveidojis esmu savu frameworku, vēl pašu, pašu pirmo versiju, bet jau gaidu kritiku.

Ja kādam nav slinkums - notestējiet un atstājiet komentāru.

Novilkt: DAPS.zip

 

Paldies jau iepriekš,

Daniels

Share this post


Link to post
Share on other sites

Hmm, nu pēc pirmā acu uzmetiena retorisks jautājums - kāpēc metodēm nav norādīta redzamība? (public, private, etc)

 

Ar ko, teiksim, šis ietvars atšķiras/ir labāks nekā, teiksim, Kohana, CI, Cake, etc.?

 

Šīs rindiņas arī rēcīgas :D

 

if (isset($_COOKIE[$name]))
       	return true;
   	else
       	return false;

 

Kāpēc ne vienkārši

return isset($_COOKIE[$name])

 

Tas tā, tīri programmēšanas stils....

Share this post


Link to post
Share on other sites

Hmm, nu pēc pirmā acu uzmetiena retorisks jautājums - kāpēc metodēm nav norādīta redzamība? (public, private, etc)

 

Ar ko, teiksim, šis ietvars atšķiras/ir labāks nekā, teiksim, Kohana, CI, Cake, etc.?

 

Šīs rindiņas arī rēcīgas :D

 

if (isset($_COOKIE[$name]))
       	return true;
   	else
       	return false;

 

Kāpēc ne vienkārši

return isset($_COOKIE[$name])

 

Tas tā, tīri programmēšanas stils....

 

Redzamība nav norādīta, jo defaultā ir public. Kur nepieciešama privāta, tur ir private :)

Jā, gan jau dažviet ir sarežģītāk sarakstīts, bet nu cenšos.

 

Ja godīgi, neesmu īsti strādājis ar nevienu no nosauktajiem freimvorkiem, nedaudz CI esmu papētījis, bet main thing šajā freimvorkā (pagaidām) ir (vismaz man šķiet) tas, ka jaunas klases pievienot ir pavisam vienkārši arī cilvēkam, kas neko nezin par iekšējo uzbūvi, jo nekas neko neextendedo pie vienkārši lietojamām klasēm. Sarežģītāk aiziet, ja sasaista ar datu bāzi. Un vēl vienkārši tas, ka pats mēģinu uztaisīt labu struktūru, kuru lietot darbā, līdz ar to, meklēju kādu labu kritiku un ieteikumus. Kas zin, varbūt ar laiku to lietos ne tikai es :)

Share this post


Link to post
Share on other sites

> Redzamība nav norādīta, jo defaultā ir public. Kur nepieciešama privāta, tur ir private :)

 

Es arī tā daru. Nav jēgas (pār)norādīt kko, kas jau tāds ir by default.

 

Pats vēl neesmu apskatījis tavu brīnumu, bet soon. Negribi to visu uz GitHub uzlikt?

Share this post


Link to post
Share on other sites

> Redzamība nav norādīta, jo defaultā ir public. Kur nepieciešama privāta, tur ir private :)

 

Es arī tā daru. Nav jēgas (pār)norādīt kko, kas jau tāds ir by default.

 

Pats vēl neesmu apskatījis tavu brīnumu, bet soon. Negribi to visu uz GitHub uzlikt?

 

Ok, šīs dienas laikā būs iekš github.

 

EDIT:

 

https://github.com/dpitkevics/DAPS-framework

Edited by xfr33

Share this post


Link to post
Share on other sites

Viņš tev nemēdz noklāties?

for($i = 0; $i < 1000; $i++) {new Basic();}

 

Kurā vietā ir tāda koda rindiņa?

Kādā ziņā noklāties?

Share this post


Link to post
Share on other sites

Kodā nav, bet, kas notiks, ja tādu ieliks? Jo, ja es kaut ko neesmu palaidis garām, tev pie katra objekta(modeļa, formas un kam tur vēl) izveides, izveido arī konekciju uz datubāzi.

Share this post


Link to post
Share on other sites

Hmm, tas gan. Ja tādu ieliks, tad būs konekcija pie datubāzes x 1000, kas nebūt nav labi.

Pierakstīšu savā task listē, lai šo noņemtu un būtu viena globāla konekcija pie datubāzes.

Paldies!

Share this post


Link to post
Share on other sites

Singleton patterns datubāzes klasei. :)

Share this post


Link to post
Share on other sites

1)Kā xPtv45z minēja, tad modelis veido db konekciju. Modelim vispār nevajadzētu manto db klasi. Savukārt db klasei vajadzētu kādu instances piekļūšanas mehānismu - globāls mainīgais, singletons vai factory.

 

2)Kopējā MVC struktūra. Man labāk patīk, kad aplikācijas struktūra ir veidota, nevis atdalot pa mapēm kontrolerus, viewus un modeļus, bet sadalot aplikāciju moduļos, kur attiecīgi katram modulim ir savi kontroleri, modeļi, templeiti un citas papildus klases.Pimēram:

/app
 /auth
   /controller
     login.php
     register.php
   /ajax
     auth.php
   /template
     login.tpl
     register.tpl
   /model
     bans.php
     acl.php
   auth.php
 /index
   /controller
     index.php
   /template
     index.tpl
 /sys
   bootstrap.php
   routes.php
   config.php
   controller.php
   ajaxcontroller.php

 ...

Klašu nosaukumus būvēt pēc mapes ceļa, piemēram controller_index būs /controller/index.php

Vajadzīgko klasi meklēt cauri visiem modeļiem un, lai katru reizi nebūtu jāskanē cauri, ieteiku glabāt kontroleru ceļus apc kešā. Par šo atbild autoload klase.

 

 

3)Hirarheāli kontroleri. Ļoti ērts ir nevis pliks MVC, bet HMVC. Tas ir tāds paterns, kad kontrolerim var norādīt parent kontroleri un šis kontroleris tiek ielādēt pa vidu parent kontrolerim. Tas ir ļoti ērts veids, ka, teiksim izveidot kontroleri, kurš atbilst par headeri un footeri un tad tajā pa vidu tiek lādēts attiecīgais pieprasītais kontroleri.

Konstrukcija būtu tāda:

 

class Controller_Login extends Controller{
 public $parent="Controller_MainPage";
}


//savukārt mainpage.tpl failā kāda vietā:
echo $child_content;
//kas ir Controller_Login uzģenerētais kontents.

 

4)Ajax apstrādei manuprāt būtu jābūt jau FW iekšā un tas būtu specifisks, atsevišķi izdalīts kontroleru veids, kurā jau defaultā ir iekļaut pret XSRF aizsardzība.

Piemēram, šāds varētu routoties kā /ajax/auth/chechusername

class Ajax_Auth extends AjaxController{
 function chechusername(){
   //...
 }
}

 

Tās būtu tādas lielās lietas.

Edited by codez

Share this post


Link to post
Share on other sites

Par db, man ērts šķiet singletona paterns ar 2 klasēm - db un dbresult, kur db ir statiska funkcija query, kas atgriež dbresult klases instanci, kurā savukārt ir daudz smukas funkcijas. query funkcija protams ar dinamisku parametru skaitu un automātisku eskeipošanu.

Kopā tas izskatās šādi:

 

db::query("SELECT * FROM comments WHERE article_id=%s",$articleid)->rows();
db::query("SELECT * FROM comments WHERE article_id=%s",$articleid)->json(); //json funkcija uzreiz prieksh ajax rezultāta atgrieshanas.
db::query("SELECT * FROM users WHERE id=%s",$_POST['uid'])->row();
db::query("SELECT count(*) FROM users")->one();

Edited by codez

Share this post


Link to post
Share on other sites

Paldies par ieteikumiem, pārskatīšu visu un centīšos apgūt singletona patternu, lai optimizētu darbību :)

Share this post


Link to post
Share on other sites

Jautājums par datubāzes konekcijas ierobežošanu:

Kas ir labāk un kāpēc - izmantot singleton pattern vai arī pirms konekcijas pārbaudīt vai ir jau tāda konekcija ar, piemēram, mysql_thread_id($connection) vai citām komandām?

 

Un vēl jautājums par erroriem:

Ir iespējams, ka jebkuru erroru - nav masīvs, kur vajag masīvu, nav pareiza tabula, neeksistē mainīgais u.c - parādīt tā kā es to vēlos nevis izmest default error vietā, kur bija jābūt informācijai?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...