php __autoload()无效

时间:2014-07-14 17:33:20

标签: php

我的文件中没有看到任何错误,但是当我运行我的代码时,它会显示以下错误:

  

警告:require_once(Core.php):无法打开流:第7行的C:\ xampp \ htdocs \ completed \ inc \ autoload.php中没有此类文件或目录

     

致命错误:require_once():无法在C:\ xampp \ htdocs \ completed \ inc \ autoload.php中打开所需的'Core.php'(include_path ='。; C:\ xampp \ php \ PEAR')第7行

我的代码是:

类/ core.php中

 <?php
  class Core {

   public function run() {
      ob_start();
      require_once(Url::getPage());
      ob_get_flush();
     }

}

INC / autoload.php

 <?php
 require_once('config.php');

function __autoload($class_name) {
   $class = explode("_", $class_name);
   $path = implode("/", $class).".php";
   require_once($path);
}

的index.php

<?php
require_once('inc/autoload.php');
$core = new Core();
$core->run();

4 个答案:

答案 0 :(得分:2)

我知道有点晚了。我正在研究这个因为我有同样的问题。这是我尝试过的,它对我有用。

//此代码适用于inc / autoload.php文件。

define('__ROOT__', dirname(dirname(__FILE__)));
require_once(dirname(__FILE__) . "/config.php");

//require_once(inc/config.php);


function __autoload($className){
$class = explode("_",$className);
$path = implode("/",$class).".php";
require_once($path);    

}

请我开始学习PHP,我的立场由你们纠正。 我希望这有帮助。

答案 1 :(得分:1)

您的Core课程显然定义于:

C:\xampp\htdocs\completed\classes\Core.php

但您尝试加载此文件:

C:\xampp\htdocs\completed\Core.php

构建一个使用相对路径*的类自动加载器并不是一个好主意。我建议你在这里添加一个前缀来构建一个绝对路径:

 $path = implode("/", $class).".php";

E.g:

 $path = __DIR__ . '/../classes/' . implode("/", $class).".php";


(*)除其他原因外,因为PHP中的相对路径是相对于 main 脚本(而不是发生路径使用时的文件)所以源目录取决于你的脚本从。

加载autoload.php

答案 2 :(得分:1)

我遇到了与你同样的问题。我觉得你迟到了。但可能对其他人有帮助。

没有在autoload.php文件中包含config.php文件

<强> INC / autoload.php

//require_once('config.php');

在index.php 中包含了config.php文件,如下所示:

<强>的index.php

require_once('inc/config.php');
require_once('inc/autoload.php');

这对我有用,我希望这也适合你:)。感谢您抽出时间阅读我的评论。

答案 3 :(得分:0)

因为在同一个文件夹中

require_once('inc/autoload.php');

require_once('config.php');

所以..我想可能应该这样

require_once('inc/config.php');