我正在尝试创建一种从给定变量加载和实例化类的函数.像这样的东西:
<?php
function loadClass($class) {
$sClassPath = SYSPATH."/classes/{$class}.php";
if (file_exists($sClassPath)) {
require_once($sClassPath);
$class = $class::getInstance();
}
}
?>
Run Code Online (Sandbox Code Playgroud)
如果我像这样使用它:
<?php
loadClass('session');
?>
Run Code Online (Sandbox Code Playgroud)
它应该包括并实例化会话类.
BTW:静态getInstance函数来自以下代码:
<?php
function getCallingClass() {
$backtrace = debug_backtrace();
$method = $backtrace[1]['function'];
$file = file($backtrace[1]['file']);
$line = $file[($backtrace[1]['line'] - 1)];
$class = trim(preg_replace("/^.+?([A-Za-z0-9_]*)::{$method}\(.*$/s", "\\1\\2", $line));
if(! class_exists($class)) {
return false;
} return $class;
}
class Core {
protected static $instances = array();
public static function getInstance() {
$class = getCallingClass();
if (!isset(self::$instances[$class])) {
self::$instances[$class] = new $class();
} …Run Code Online (Sandbox Code Playgroud) 给定PHP中类的字符串名称,如何访问其中一个静态变量?
我想做的是:
$className = 'SomeClass'; // assume string was actually handed in as a parameter
$foo = $className::$someStaticVar;
Run Code Online (Sandbox Code Playgroud)
...但PHP给了我一个可爱的"解析错误:语法错误,意外的T_PAAMAYIM_NEKUDOTAYIM",这显然是双冒号(::)的希伯来名字.
更新:不幸的是,我必须使用PHP 5.2.X.
更新2:正如MrXexxed猜测的那样,静态变量是从父类继承的.