当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在变量类上调用静态方法?》经验,为你挑选了2个好方法。

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


如果我像这样使用它:


它应该包括并实例化会话类.

BTW:静态getInstance函数来自以下代码:



问题是,现在使用类中的函数的方法是这样的:


但是现在我想将它构建成一个函数,以便我再也不必使用那行代码.我只是说loadClass('session'); 而且我可以使用$ session-> blablablafunction();



1> talentedmrjo..:

在PHP 5.3中显然可以在变量类名上调用静态函数:

Foo::aStaticMethod();
$classname = 'Foo';
$classname::aStaticMethod(); // As of PHP 5.3.0

http://php.net/manual/en/language.oop5.static.php

我自己肯定可以使用它.

在此之前,您无法真正假设您正在加载的每个类都设计为单例.只要你使用<5.3,就必须加载类并通过构造函数实例化:

function loadClass($class) {
  $sClassPath = SYSPATH."/classes/{$class}.php";
  if (file_exists($sClassPath)) {
    require_once($sClassPath);
    $class = new $class;
  }

}

要么

只需加载类而不从中创建对象.然后在那些意味着是单例的东西上调用":: getInstance()",在loadClass()函数之外调用那些不是"new"的东西.

虽然,正如其他人早先指出的那样,__ autoload()可能对您有用.



2> Greg..:

你可以使用call_user_func():

$class = call_user_func(array($class, 'getInstance'));

第一个参数是一个callback类型,在这种情况下包含类名和方法名.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有