bonjour tout le monde, à la base je suis un mordu de JAVA, donc j'ai une base 'pas mal' du tous en POO.
j'ai suivie le tuto ayant comme titre :" Tutoriel PHP - Développer un site - jour x....
mon probléme est que, arrivant au 'jour 3':
dans la prortion de code décrivant la fonction "loadModel($name)
dixit:
function loadModel($name){
$file=ROOT.DS.'model'.DS.$name.'.php';
require_once($file);
if(!isset($this->$name)){
$this->$name=new $name();
}
else{
echo 'pas chargé';
}}
Or en JAVA : $name étant un paramétre de la méthode : loadModel donc une variable donc on ne peut l'instancier ....
$this->$name ="""new $name()""" ???????????
Je t'explique ce que ça fait cette fonction.
Je pense que tu as compris quelle charge un model dans le controller dans la variable d'instance "$name"
Donc, il regarde si la variable n'existe pas déjà,
if(!isset($this->$name))
si elle existe pas, il instancie la classe et le met dans la variable d'instance qui a pour nom "$name".
$this->$name=new $name();
en gros voila ce qui se passe si $name = 'User'
function loadModel($name){
$name = 'User';
$file=ROOT.DS.'model'.DS.'User'.'.php';
require_once($file);
if(!isset($this->User)){
$this->User=new User();
}
else{
echo 'pas chargé';
}}
En php il est possible d'instancier une classe dynamiquement.
et dans ce code il serait plus pratique de vérifier si le model existe en faisant un "file_exists" avant de le require
function loadModel($name){
$file=ROOT.DS.'model'.DS.$name.'.php';
if(!file_exists($file)){
return false;
}
require_once($file);
if(!isset($this->$name)){
$this->$name=new $name();
}
else{
echo 'pas chargé';
}}
, je vais me penché sur cette phrase qui est peut etre la réponse à ma question, car j'aurais apprécié : " $this->$name = new User() ...suivant votre exemple...mais votre réponse est super bien explicite ...1000 merci