首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取调用类的名称( PHP)

如何获取调用类的名称( PHP)
EN

Stack Overflow用户
提问于 2010-09-02 02:15:21
回答 3查看 38.8K关注 0票数 25
代码语言:javascript
复制
define('anActionType', 1);
$actionTypes = array(anActionType => 'anActionType');
class core {
    public $callbacks = array();
    public $plugins = array();
    public function __construct() {
        $this->plugins[] = new admin();
        $this->plugins[] = new client();
    }
}
abstract class plugin {
    public function registerCallback($callbackMethod, $onAction) {
        if (!isset($this->callbacks[$onAction]))
            $this->callbacks[$onAction] = array();

        global $actionTypes;
        echo "Calling $callbackMethod in $callbacksClass because we got {$actionTypes[$onAction]}" . PHP_EOL;

        // How do I get $callbacksClass?

        $this->callbacks[$onAction][] = $callbackMethod;
    }
}
class admin extends plugin {
    public function __construct() {
        $this->registerCallback('onTiny', anActionType);
    }
    public function onTiny() { echo 'tinyAdmin'; }
}
class client extends plugin {
    public function __construct() {
        $this->registerCallback('onTiny', anActionType);
    }
    public function onTiny() { echo 'tinyClient'; }
}
$o = new core();

$callbacksClass应为管理员或客户端。或者我完全理解不了这一点,应该用另一种方式来解决这个问题?应该注意的是,我只接受不需要将类名作为参数发送到registerCallback方法的答案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-02 02:16:38

使用get_class()

代码语言:javascript
复制
$this->callbacks[$onAction][] = $callbackMethod;
$className = get_class($this);

// Call callback method
$className->$callbackMethod();
票数 17
EN

Stack Overflow用户

发布于 2010-09-02 02:37:29

你真的应该这样做:

代码语言:javascript
复制
$this->registerCallback(array($this, 'onTiny'), anActionType);

这就是PHP如何处理对象方法的句柄。

票数 4
EN

Stack Overflow用户

发布于 2021-12-03 15:43:34

在PHP 8+中,你可以使用static::class而不是get_class($this)

这个问题也可以通过PHP Code Sniffer和规则SlevomatCodingStandard.Classes.ModernClassNameReference 自动修复

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3620923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档