簡體   English   中英

PHP:自動加載器找不到文件

[英]PHP: autoloader can't find the file

我正在使用自動加載器按名稱空間加載類,它在localhost上運行良好,但在服務器在線上卻無法運行。
Autoloader.php加載類時,PHP向我顯示此錯誤:

Warning: require(\..\backoffice\controllers\EquipementsManager.php) failed to open stream: No such file or directory

但是我確定路徑是正確的,並且該路徑中存在EquipementsManager.php文件!這意味着自動加載器正在正確地使用正確的路徑加載類,但是PHP一直No such file or directory給我No such file or directory錯誤!
Autoloader.php代碼:

<?php
/**
 * Class Autoloader
 */

class Autoloader{
    /**
     * Enregistre notre autoloader
     */
    static function register(){
        spl_autoload_register(array(__CLASS__, 'autoload'));
    }

    /**
     * Inclue le fichier correspondant à notre classe
     * @param $class string Le nom de la classe à charger
     */
    static function autoload($class){
        require '\\..\\'.$class . '.php';
    }

}

類EquipementsManager:

namespace backoffice\controllers;

use backoffice\entities\Connexion;
use backoffice\entities\Equipement;

class EquipementsManager{
    //---some stuff to do----
}

我也嘗試了__DIR__.'\\\\..\\\\'.$class . '.php' __DIR__.'\\\\..\\\\'.$class . '.php'仍然是同樣的問題,可以在localhost上運行,但不能在線運行。
立即編輯(2016年2月20日):
我將autoload()函數編輯為:

static function autoload($class){
        $file = (strpos($class, 'backoffice') === false) ? $class : str_replace('\\', DIRECTORY_SEPARATOR, $class);
        require $file . '.php';
    }

現在,我的文件已正確加載,但出現另一個錯誤:

require(JsonSerializable.php) [function.require]: failed to open stream: No such file or directory

我使用\\JsonSerializable interface將對象轉換為jason數組,如下所示:

namespace backoffice\entities;

/**
 * PropertyType
 */
class PropertyType implements \JsonSerializable
{

}

如您所知,此接口位於SPL中,所以他為什么不知道它?

嘗試

$require = str_replace('\\', DIRECTORY_SEPARATOR, '..\\'.$class.'.php');
require($require);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM