gpt4 book ai didi

php - 从另一个类宽度 '$this' 调用类的静态方法

转载 作者:可可西里 更新时间:2023-10-31 23:28:51 25 4
gpt4 key购买 nike

我遇到了一些问题。我想从另一个类调用类的 static 方法。类名和方法是动态创建的。

做起来并不难:

$class = 'className';
$method = 'method';

$data = $class::$method();

但是,我想这样做

class abc {
static public function action() {
//some code
}
}

class xyz {
protected $method = 'action';
protected $class = 'abc';

public function test(){
$data = $this->class::$this->method();
}
}

如果我不将 $this->class 分配给 $class 变量,并且 $this->method$method 变量。有什么问题?

最佳答案

在 PHP 7.0 中,您可以使用如下代码:

<?php
class abc {
static public function action() {
return "Hey";
}
}

class xyz {
protected $method = 'action';
protected $class = 'abc';

public function test(){
$data = $this->class::{$this->method}();

echo $data;
}
}

$xyz = new xyz();
$xyz->test();

对于 PHP 5.6 及更低版本,您可以使用 call_user_func功能:

<?php
class abc {
static public function action() {
return "Hey";
}
}

class xyz {
protected $method = 'action';
protected $class = 'abc';

public function test(){
$data = call_user_func([
$this->class,
$this->method
]);
echo $data;
}
}

$xyz = new xyz();
$xyz->test();

关于php - 从另一个类宽度 '$this' 调用类的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35876580/

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