相关疑难解决方法(0)

如何在变量类上调用静态方法?

我正在尝试创建一种从给定变量加载和实例化类的函数.像这样的东西:

<?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 oop class function instance

37
推荐指数
2
解决办法
5万
查看次数

从类的字符串名称,我可以得到一个静态变量?

给定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猜测的那样,静态变量是从父类继承的.

php static

9
推荐指数
2
解决办法
9088
查看次数

标签 统计

php ×2

class ×1

function ×1

instance ×1

oop ×1

static ×1