Пространство имен PHP и автозагрузка
-
12-10-2019 - |
Вопрос
У меня есть класс
/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');
}
}
/library/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
вывод, поскольку они не являются частью состояния объекта. Попробуйте позвонить в метод; это должно работать, как и ожидалось.
Не связан с StackOverflow