- Stefanescu Mihai a postat in Paginare in PHP
- johhny a postat in Paginare in PHP
- Stefanescu Mihai a postat in Cum pot afisa eroarea cand utilizatorul a scris un username gresit sau o parola gresita?
- madalin a postat in Cum pot afisa eroarea cand utilizatorul a scris un username gresit sau o parola gresita?
- Stefanescu Mihai a postat in Featureuri site
Autoincarcarea claselor PHP (AutoLoading)
Una dintre principalele probleme intalnita in programare este structurarea aplicatiei si organizarea codului in asa fel incat aplicatia ta sa poata fi modificata usor (la o data ulterioara) si codul sa poata fi usor inteles de alti programatori (care probabil v-or lucra cu tine la proiect). Acest autoloading este important in mod special pentru aplicatiile pentru care dezvolti un oarecare framework. Bineinteles, exista o multime de framework-uri, de exemplu CodeIgniter si Laravel sunt doua framework-uri ce folosesc design pattern-ul Model View Controller (MVC). Daca ar trebuii sa ne construim singuri propriul framework ar trebuii sa gasim un mod de a incarca clasele necesare la cererea utilizatorilor. Autoincarcarea (autoloading-ul) este folositor la incarcarea claselor pentru a nu le mai include in fiecare fisier.Hai sa presupunem ca toate link-urile duc catre index.php si in functie de link va fi creata o instanta a unei anumite clase. Probabil va ganditi ca puteti face ceva de genul acesta:
require_once('clase/clasa1.php'); require_once('clase/clasa2.php'); require_once('clase/clasa3.php'); require_once('clase/clasa4.php'); require_once('includes/functions.php');
Acest tip de “rezolvare” poate duce la anumite probleme. De exemplu, daca o clasa depinde de alta, sau daca clasele nu depinde una de alta, dar acest lucru se va schimba pe viitor aveti sanse destul de mari sa aveti probleme cu dependentele.Dar, folosirea unui autoloader va indeparta aceasta problema.
<?php class clasaMea { public function __construct() { echo "Clasa Mea a fost instantiata..."; } } ?>
Sa presupunem ca avem clasa de mai sus pentru inceput. Acum hai sa scriem codul pentru un autoloader cat se poate de simplu:
<?php function autoloaderulMeu($clasa) { $filename = "./". $clasa .".php"; include_once($filename); } //Inregistram clasa in SPL spl_autoload_register('autoloaderulMeu'); // acum apelam clasa $obj = new clasaMea(); ?>
Codul de mai sus va functiona fara probleme pentru ca, chiar daca nu am inclus fisierul cu clasa respectiva, acesta a fost inclus de autoloader.
Asta este tot pentru acest articol, desi ar trebuii sa mai mentionez i faptul ca incepand cu PHP 5.3 putem scrie un autoloader si cu ajutorul unei functii anonime:
spl_autoload_register(function ($clasa) { include 'clase/' . $clasa . '.class.php'; });
Intrebarile pot fi adresa mai jos, in sectiunea de comentarii sau in sectiunea dedicata special intrebarilor.
Comentarii
Inca nu au fost postate comentarii, fii primul care posteaza un comentariu!