php 命名空间和自动加载

标签 php namespaces spl-autoload-register

我有一些课

/library/QPF/Loader.php

namespace QPF;

class Loader
{
    protected static $loader = null;

    public function __construct()
    {
        spl_autoload_register('QPF\Loader::_autoload');
    }

    public static function init()
    {
        if (null === self::$loader) {
            self::$loader = new Loader();
        }
        return self::$loader;
    }

    public function _autoload($class)
    {
        //if (class_exists($class)) return true;

        $classFile = str_replace('\\', '/', $class) . '.php';
        require_once $classFile;
        if (!class_exists($class)) throw new Extension('Not found class');

    }
}

/图书馆/Version.php
namespace QPF;

class Version
{
    public function getVersion()
    {
        return '0.1';
    }
}

/public/index.php
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../library');
define('APPLICATION_PATH', dirname(__FILE__) . '/../application');


require_once 'QPF/Loader.php';
QPF\Loader::init();

echo 'start';

use QPF;

$v = new QPF\Version();
var_dump($v);

echo 'ss';

版本类加载,但 var_dump 显示它是没有函数 getVersion() 的空类;
startobject(QPF\Version)#2 (0) { } ss

最佳答案

方法未出现在 var_dump 中或 print_r输出,因为它们不是对象状态的一部分。尝试调用该方法;它应该按预期工作。

关于php 命名空间和自动加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4726680/

相关文章:

Javascript,对象原型(prototype) - 避免编写完整路径

PHP class_exists - 出现 fatal error : Cannot redeclare clas instead?

namespaces - PHP 命名空间行为导致 spl_autoload_register 出现严重错误

php - 当我使用变量后跟大于 9 的数字时,我的代码 (php/js) 会感到困惑

php - DIV 视频仅在第一次加载首页时显示

matlab - 加载文件只知道名称的开头

文件夹 App_Code 中的 C# 访问类

php - 使用多个插入和多个 LAST_INSERT_ID() 的 SQL 查询不起作用

php - 我可以在 guest 操作系统上设置使用 Windows 主机中的文件的 WAMP 虚拟机吗?

java - 获取java项目中的包列表