【发布时间】:2019-05-08 08:22:10
【问题描述】:
我创建了一个名为class_one 的类,其命名空间为MyClassOne,如下所示。
class_one.php
namespace MyClassOne;
class class_one
{
function __construct()
{
echo 'I am from Class One Constructor';
}
}
我正在尝试在index.php 文件中使用它:
namespace MyClassOne;
require_once('class_one.php');
$one = new class_one();
它工作正常,但是当我尝试将 __autoload 魔术函数包含为:
namespace MyClassOne;
function __autoload($className)
{
include_once("$className.php");
}
$one = new class_one();
它给出了一个错误:
致命错误:未捕获的错误:类 'MyClassOne\class_one' 未在 C:\xampp\htdocs\PHP\autoload\index.php:9 堆栈跟踪:#0 {main} 抛出 在第 9 行的 C:\xampp\htdocs\PHP\autoload\index.php 中
请帮助我在这段代码中哪里做错了?有没有更好的方法来做到这一点?
【问题讨论】:
-
根据您存储类文件的位置及其扩展名,它可以像
spl_autoload_extensions(".class"); spl_autoload_register();一样简单。我更喜欢将我的类文件存储在 Web 根目录之外,并将绝对路径添加到包含路径。让添加和使用新类变得非常简单。 -
我已将我的课程放在
classes文件夹中并在其外部使用。
标签: php oop namespaces include magic-function