- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在学习并试图理解 namespace
和 use
在 PHP 中的使用。我还使用 spl_autoload_register
作为 php.net documentation 中提到的.我仍然对使用它感到困惑并收到错误。
我的教程文件夹中有 2 个文件:
php_oop.php
<?php
namespace php_oop;
class php_oop
{
public function __construct($name){
$this->name = $name;
}
public function get(){
return $this->name;
}
}
tutor.php
<?php
spl_autoload_register(function ($class_name) {
var_dump($class_name);
include $class_name . '.php';
// include 'php_oop.php';
});
use php_oop;
$tutor = new php_oop('My Name');
echo $tutor->get();
输出
Warning: The use statement with non-compound name 'php_oop' has no effect in C:\xampp\htdocs\tutorial\oop\tutor.php on line 9 string(7) "php_oop" Fatal error: Class 'php_oop' not found in C:\xampp\htdocs\tutorial\oop\tutor.php on line 11
我可以知道如何正确使用它吗?
最佳答案
use
不像 import
。您必须使用
您正在使用的每个类,而不是每个命名空间。对于您的示例,它将是:
use php_oop\php_oop;
这将从 php_oop
命名空间 导入 php_oop
类。
参见 the documentation for importing namespaces获取更多信息和有用的提示。
(副作用:传递给 spl_autoload_register
的回调的 $class_name
包含类的全名,包括命名空间。对于您的自动加载器要正确加载您的类,您需要更改您的自动加载器代码或将您的 php_oop.php
文件移动到名为 php_oop
的文件夹以匹配它来自的命名空间。)
关于PHP - spl_autoload_register 不适用于 `namespace` 和 `use`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44234273/
我是一名优秀的程序员,十分优秀!