PHP自动加载SplClassLoader?
发布时间:2020-12-13 14:01:53 所属栏目:PHP教程 来源:网络整理
导读:我正在学习 PHP 5.3中的命名空间,我想使用命名空间自动加载.我发现这个 SplClassLoader class,但我不知道它是如何工作的. 假设我有这样的目录结构: system - framework - http - request.php - response.phpindex.phpSplClassLoader.php 如何启用类自动加载
我正在学习
PHP 5.3中的命名空间,我想使用命名空间自动加载.我发现这个
SplClassLoader class,但我不知道它是如何工作的.
假设我有这样的目录结构: system - framework - http - request.php - response.php index.php SplClassLoader.php 如何启用类自动加载? request.php和response.php有什么命名空间? 这是request.php: namespace frameworkhttp; class Request { public function __construct() { echo __CLASS__ . " constructer!"; } } 这是response.php: namespace frameworkhttp; class Request { public function __construct() { echo __CLASS__ . " constructed!"; } } 在index.php我有: require_once("SplClassLoader.php"); $loader = new SplClassLoader('frameworkhttp','system/framework'); $loader->register(); $r = new Request(); 我收到这个错误消息: Fatal error: Class 'Request' not found in C:wampapachehtdocsphp_autoloadingindex.php on line 8 为什么这不工作?如何在我的项目中使用SplClassLoader,以便加载/需要我的类,以及如何设置和命名文件夹和命名空间?
您的文件和目录名称需要与您的类和命名空间的情况完全匹配,如以下示例所示:
system - framework - http - Request.php - Response.php index.php SplClassLoader.php 另外,您只需要在注册SplClassLoader对象时声明根命名空间,如下所示: <?php require_once("SplClassLoader.php"); $loader = new SplClassLoader('framework','system/framework'); $loader->register(); use frameworkhttpRequest; $r = new Request(); ?> 希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |