使用 PHP 中的命名空间扩展 class
extending a class with namespace in PHP
我正在尝试编写我的第一个带有名称空间的框架。
我在扩展 class 控制器时遇到问题。
我得到
Fatal error: Class 'Controller' not found in xxx/src/controllers/index.php on line 3
控制器看起来是:
namespace src\libs;
class Controller
{}
这是我在 src/controllers/
中的索引 class
namespace src\controllers;
use src\libs as libs;
class Index extends libs\Controller
{}
我的自动加载:
function autoLoader($class)
{
$class = str_replace('\', '/', $class);
if (file_exists('./' . $class . '.php')) {
require( './' . $class . '.php');
} else {
$class = explode('/', $class);
if (file_exists( LIBS . end($class) . '.php')) {
require( LIBS . end($class) . '.php');
} else {
echo 'Critical error!!';
exit;
}
}
}
LIBS = ./src/libs/
AutLoader 可以工作,因为它包含带有 class 控制器的文件,我没有收到错误。我不知道为什么它不起作用。
它对我来说很好
文件: /var/www/html/PHP/Randoms/src/libs/Controller.php
<?php
namespace src\libs;
class Controller
{
}
文件: /var/www/html/PHP/Randoms/src/controllers/Index.php
namespace src\controllers;
use src\libs as libs;
spl_autoload_register(function($classname){
$classPath=str_replace("\", "/", $classname);
$filePath= dirname(__FILE__)."/../../".$classPath.".php";
if(file_exists($filePath))
{
require_once $filePath;
}
});
class Index extends libs\Controller
{}
我正在尝试编写我的第一个带有名称空间的框架。 我在扩展 class 控制器时遇到问题。 我得到
Fatal error: Class 'Controller' not found in xxx/src/controllers/index.php on line 3
控制器看起来是:
namespace src\libs;
class Controller
{}
这是我在 src/controllers/
namespace src\controllers;
use src\libs as libs;
class Index extends libs\Controller
{}
我的自动加载:
function autoLoader($class)
{
$class = str_replace('\', '/', $class);
if (file_exists('./' . $class . '.php')) {
require( './' . $class . '.php');
} else {
$class = explode('/', $class);
if (file_exists( LIBS . end($class) . '.php')) {
require( LIBS . end($class) . '.php');
} else {
echo 'Critical error!!';
exit;
}
}
}
LIBS = ./src/libs/
AutLoader 可以工作,因为它包含带有 class 控制器的文件,我没有收到错误。我不知道为什么它不起作用。
它对我来说很好
文件: /var/www/html/PHP/Randoms/src/libs/Controller.php
<?php
namespace src\libs;
class Controller
{
}
文件: /var/www/html/PHP/Randoms/src/controllers/Index.php
namespace src\controllers;
use src\libs as libs;
spl_autoload_register(function($classname){
$classPath=str_replace("\", "/", $classname);
$filePath= dirname(__FILE__)."/../../".$classPath.".php";
if(file_exists($filePath))
{
require_once $filePath;
}
});
class Index extends libs\Controller
{}