2012-05-10 54 views
0

首先,我想告訴你我的目錄結構自動加載的問題

- /var/www 
    |- /social_network/ 
     |- index.php 
     |- /application/ 
     |-/controllers/ 
       |-user.php 
     |- /models/ 
     |- framework.php 
    |-/tmp/ 

在我的index.php我包括應用/ framework.php 這裏是我的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(); 
} 

?> 

現在使用上面的代碼,自動加載我的類工作正常。 如果你想知道$方法和$控制器來自index.php取決於URI。

現在,我的一個朋友告訴我,這是錯誤的方式做到這一點,所以我改變了我的代碼

<?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(); 
} 

?> 

現在我得到這個錯誤低於

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 

我怎樣才能解決這個問題,我一直在這個小時,如果可能的話,請告訴我如何我可以調用模型目錄從控制器類內使用自動加載 謝謝

回答

0
set_include_path(get_include_path().PATH_SEPARATOR.'/var/www/social_network/application/'); 

或某些常數而不是硬編碼字符串