PHP SplClassLoader class 未找到
PHP SplClassLoader class not found
使用 SplClassLoader 我不断收到 class not found
错误。我尝试了各种 sources,复制了它们的确切文件夹结构和命名,但仍然 not found
.
我的结构
application
- Router
- Exceptions
- HttpException.php
- Klein.php
index.php
SplClassLoader.php
index.php
$loader = new SplClassLoader('application', 'application');
$loader->register();
$klein = new \router\Klein();
Klein.php
namespace application\router;
class Klein{
__construct()
HttpException.php
namespace Klein\Exceptions;
use RuntimeException;
class HttpException extends RuntimeException implements HttpExceptionInterface
{
我如何将它们都包含在类加载器中?
准确的错误是:
Fatal error: Class 'router\Klein' not found in /home/i366963/domains/[domain]/private_html/public/index.php on line 44
第 44 行是 $klein = new \router\Klein();
建议:
$loader = new SplClassLoader('application', 'application');
$loader->register();
$klein = new application\Router\Klein();
给出错误:
Warning: require(application/application/Router/Klein.php): failed to open stream: No such file or directory in /home/i366963/domains/[domain]/private_html/SplClassLoader.php on line 140
Fatal error: require(): Failed opening required 'application/application/Router/Klein.php' (include_path='.:/usr/local/lib/php') in /home/i366963/domains/[domain]/private_html/SplClassLoader.php on line 140
所以看看 SplClassLoader
的签名,它需要两个参数
$ns (namespace)
$includePath
现在您要添加 'application' 的名称space 并在 'application' 目录中搜索。
这意味着应用程序名称 space 将以应用程序目录中的所有内容为前缀。
因此,当您加载 \application\router 时,它会在 application\application 目录中查找。
你可以通过 $loader = new SplClassLoader('application');
来解决这个问题,这意味着它只会从当前目录向前搜索。
现在看看你的其他帖子 类 你会 运行 问题是你的名字 space 不符合 PSR-0 标准,所以你会需要确保你的名字spaces 与你的目录结构和文件名完全匹配(在任何基于 *nix 的系统上都是区分大小写的)
使用 SplClassLoader 我不断收到 class not found
错误。我尝试了各种 sources,复制了它们的确切文件夹结构和命名,但仍然 not found
.
我的结构
application
- Router
- Exceptions
- HttpException.php
- Klein.php
index.php
SplClassLoader.php
index.php
$loader = new SplClassLoader('application', 'application');
$loader->register();
$klein = new \router\Klein();
Klein.php
namespace application\router;
class Klein{
__construct()
HttpException.php
namespace Klein\Exceptions;
use RuntimeException;
class HttpException extends RuntimeException implements HttpExceptionInterface
{
我如何将它们都包含在类加载器中?
准确的错误是:
Fatal error: Class 'router\Klein' not found in /home/i366963/domains/[domain]/private_html/public/index.php on line 44
第 44 行是 $klein = new \router\Klein();
建议:
$loader = new SplClassLoader('application', 'application');
$loader->register();
$klein = new application\Router\Klein();
给出错误:
Warning: require(application/application/Router/Klein.php): failed to open stream: No such file or directory in /home/i366963/domains/[domain]/private_html/SplClassLoader.php on line 140
Fatal error: require(): Failed opening required 'application/application/Router/Klein.php' (include_path='.:/usr/local/lib/php') in /home/i366963/domains/[domain]/private_html/SplClassLoader.php on line 140
所以看看 SplClassLoader
的签名,它需要两个参数
$ns (namespace)
$includePath
现在您要添加 'application' 的名称space 并在 'application' 目录中搜索。
这意味着应用程序名称 space 将以应用程序目录中的所有内容为前缀。
因此,当您加载 \application\router 时,它会在 application\application 目录中查找。
你可以通过 $loader = new SplClassLoader('application');
来解决这个问题,这意味着它只会从当前目录向前搜索。
现在看看你的其他帖子 类 你会 运行 问题是你的名字 space 不符合 PSR-0 标准,所以你会需要确保你的名字spaces 与你的目录结构和文件名完全匹配(在任何基于 *nix 的系统上都是区分大小写的)