gpt4 book ai didi

php在函数中remove()以方便使用

转载 作者:行者123 更新时间:2023-12-01 21:26:15 25 4
gpt4 key购买 nike

我正在创建一个小系统,允许用户使用自己的类扩展系统。

Class Core {
static $confArray;
static $extendArray;
protected static $instance;
public function read($name)
{
return self::$confArray[$name];
}
public function put($name, $value)
{
self::$confArray[$name] = $value;
}
public function extend($function, $handler, $args=null){

self::$extendArray[$function] = new $handler($args);
}
public function __call($method, $args){
return self::$extendArray[$method];
}
public static function getInstance()
{
if (!isset(self::$instance))
{
$object =__CLASS__;
self::$instance= new $object;
}
return self::$instance;
}
}

有了这个,现在用户可以从这样的类注册一个简单的扩展:

class WorkersTest{
function isWorking($who){
echo "$who is working";
}
function isNotWorking($who){
echo "$who is not working";
}
}

要调用函数(isworking/isNotWorking),程序员需要通过以下方式注册test类:

Core::getInstance->extend("worker","WorkersTest");

然后现在可以通过以下方式调用:

Core::getInstance->worker()->isWorking("George");

这工作得很好。我的问题是如何删除通话中的 () (不用担心为什么)并具有:

Core::getInstance->worker->isWorking("George");

可能吗?

最佳答案

您可以使用神奇的__get()方法,就像__call():

public function __get($name)
{
return $this->$name();
}

关于php在函数中remove()以方便使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25566774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com