我有一个类的文件Resp.路径是:
C:\xampp\htdocs\One\Classes\Resp.php
Run Code Online (Sandbox Code Playgroud)
我index.php在这个目录中有一个文件:
C:\xampp\htdocs\Two\Http\index.php
Run Code Online (Sandbox Code Playgroud)
在这个index.php文件中,我想实例化一个类Resp.
$a = new Resp();
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用require或include关键字包含一个类的文件:
require("One\Classes\Resp.php"); // I've set the include_path correctly already ";C:\xampp\htdocs". It works.
$a = new Resp();
Run Code Online (Sandbox Code Playgroud)
但我想导入类而不使用require或include.我试图了解use关键字的工作原理.我尝试了这些步骤,但没有任何作用:
use One\Classes\Resp;
use xampp\htdocs\One\Classes\Resp;
use htdocs\One\Classes\Resp;
use One\Classes;
use htdocs\One\Classes; /* nothing works */
$a = new Resp();
Run Code Online (Sandbox Code Playgroud)
它说:
Fatal error: Class 'One\Classes\Resp' not found in C:\xampp\htdocs\Two\Http\index.php
Run Code Online (Sandbox Code Playgroud)
关键字如何use运作?我可以用它来导入课程吗?
我有以下PHP代码:
的index.php
<?php
spl_autoload_extensions(".php");
spl_autoload_register();
use modules\standard as std;
$handler = new std\handler();
$handler->delegate();
?>
Run Code Online (Sandbox Code Playgroud)
模块\标准\ handler.php
<?php
namespace modules\standard {
class handler {
function delegate(){
echo 'Hello from delegation!';
}
}
}
?>
Run Code Online (Sandbox Code Playgroud)
在运行WAMP的Windows 7下,代码生成消息"Hello from Delegation!" 但是在Linux下,我得到以下内容:
致命错误:spl_autoload():无法在第15行的/var/www/index.php中加载类modules\standard\handler
Windows在WAMP下运行PHP 5.3.0,Linux在Ubuntu 9.10下运行5.3.2 dotdeb软件包.
这是我的linux机箱上的配置问题,还是在不同操作系统上处理命名空间和自动加载的方式不同