[英]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.