Tout d'abord, je tiens à vous dire ma structure de répertoireproblèmes de chargement automatique à l'aide spl_autoload_register
- /var/www
|- /social_network/
|- index.php
|- /application/
|-/controllers/
|-user.php
|- /models/
|- framework.php
|-/tmp/
Dans mon index.php i implique notamment l'application/framework.php ici est mon code framework.php
<?php
spl_autoload_register();
class Framework{
public function load($page, $data){
if(is_array($data)){
extract($data);
}
include "views/".$page;
}
}
$object = "controller\\$controller";
$object = new $object;
if(method_exists($object,"$method")){
$object->$method();
} else {
show_404();
}
?>
Maintenant, avec le code ci-dessus, le chargement automatique de ma classe fonctionne très bien. Dans le cas où vous vous demandez $ method et $ controller vient de index.php en fonction de l'URI.
maintenant un de mes amis m'a dit que c'est mauvaise façon de le faire si j'ai changé mon code pour
<?php
function autoload_controller($controller){
include "$controller.php";
}
spl_autoload_register('autoload_controller');
class Framework{
public function load($page, $data){
if(is_array($data)){
extract($data);
}
include "views/".$page;
}
}
$object = "controller\\$controller";
$object = new $object;
if(method_exists($object,"$method")){
$object->$method();
} else {
show_404();
}
?>
Maintenant, je reçois cette erreur ci-dessous
Warning: include(controller\User.php): failed to open stream: No such file or directory in /var/www/social_network/application/framework.php on line 3 Warning: include(): Failed opening 'controller\User.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/social_network/application/framework.php on line 3 Fatal error: Class 'controller\User' not found in /var/www/social_network/application/framework.php on line 16
Comment puis-je résoudre ce problème, Je suis à ce pendant des heures et même s'il est possible s'il vous plaît me montrer comment je peux appeler un modèle à partir du répertoire des modèles à l'intérieur d'une classe de contrôleur à l'aide autoload Merci