Incarcarea claselor in obiecte dinamic – PHP
0Dupa cum am promis voi continua seria de articole ceva mai complicate si care axeaza cateva lucruri inovative si mai rar intalnite si dezvoltate pe internet. Astazi vom lucra cu clase dinamice si cum incarcarea dependetelor(clasele) ca obiecte si a resurselor lor se poate face mult mai profesionist si mai interesant din punct de vedere al codului.
Probabil majoritatea dintre voi incarca spre exemplu o clasa sub forma aceasta :
include('fisier_clasa.php'); $obiect = new clasa(argumente);
Sa ne imaginam ca lucram la CMS modular. Acolo numarul de clase folosite va fi destul de mare si poate nu dorim sa avem o pagina doar de forma : include fisier -> instantiaza obiect, sau poate dorim sa incarcam anumite clase doar la un anumit moment, codul ar avea o estetica negativa in aceste cazuri.Am creat o mica functie care va incarca obiecte „dinamic” si va crea un cod mai profesionist si avansat dupa parerea mea, acum astept confirmarile dumneavoastra ca este asa.
private function loadClass($classNameHandler = '',$classFile = '',$className = '',$args = array()) { $arguments = ''; foreach($args as $argK => $argV) { if($arguments != '') $arguments .= ','; $arguments .= "\$args[".$argK."]"; } $code = $classNameHandler . ' = new ' . $className . '(' . $arguments . ');'; if(!class_exists($className)) { if(file_exists($classFile)) include_once($classFile); else throw new cException('Invalid File Class.'); if(!class_exists($className)) throw new cException('Invalid Class Definition.'); } if(@eval('return TRUE;' . $code) !== TRUE) throw new cException('Invalid Arguments or Class Handler allready used.'); eval($code);Â Â Â Â Â Â }
Mentionez ca functia loadClass() are ca dependenta clasa cException studiata data trecuta pentru tratarea erorilor de genul : fisier , argumente , definirea clasei etc.
Functia are 4 parametri :
$classNameHandler : numele obiectului
$classFile : numele fisierului in care exista resursele(optional)
$className: numele clasei ce vrem sa o incarcam in obiect
$args : un vector cu valorile argumentelor [$args = array(arg1,arg2,arg3 … argn)]
O apelare a clasei Exemplu si incarcarea acesteia in obiectul $obiect_exemplu, ce are doua argumente si are ca resursa fisierul ex.php este acesta :
loadClass('$obiect_exemplu','ex.php','Exemplu',array('valoare1','valoare2'));
Daca acest articol contine o greseala, selecteaza cuvintele sau fraza gresita si tasteaza combinatia de taste Shift + Enter sau apasa click aici pentru a o raporta. Multumim!