我正在尝试在PHP中使用call_user_func
来获取该方法,但事实是我无法以正确的方式获取它。我的数据存储在另一个类方法中,我想将该数据提取到另一个类方法中。首先,我创建了一个带有一些param的对象,这些对象在其他类中给出。基于参数,类开始工作而不是将数据存储到方法中。我的问题是我已经在课后调用了一个对象,现在如何将该对象再次调用到另一个类中。也许您可以通过示例代码了解它:
class A{
public $a;
public $b;
public function __construct(){
}
public function x(){
$this->a = "something";
$this->b = "something1";
}
public function abc(){
$printthis = call_user_func(array($obj2,$method_name);
echo $printthis;
}
}
$obj1 = new A;
$obj1->x;
class B{
public $a;
public $b;
public function __construct($c,$d){
$this->a = $c;
$this->b = $d;
}
public function abc(){
//some code here that returns something
}
public function abd(){
//some code here that returns something
}
}
$obj2 = new B($obj1->a, $obj1->b);
在上面的代码部分中,我不知道如何将B类中的数据转换为A类。任何人都可以帮助我这个主题吗?我从这里得到的一切都没有。代码示例可以解释一切。
答案 0 :(得分:1)
基本继承将解决您的所有问题。
class A{
public $a;
public $b;
public function __construct(){
}
public function x(){
$this->a = "something";
$this->b = "something1";
}
public function abc(){
$printthis = call_user_func(array($obj2,$method_name);
echo $printthis;
}
// to call abd() method from class B inside this class
function call_child_method(){
if(method_exists($this, 'abd')){
$this->abd();
}
}
}
$obj1 = new A;
$obj1->x();
class B extends A{ // object will can call both methods of class A and B
public $a;
public $b;
public function __construct($c,$d){
$this->a = $c;
$this->b = $d;
}
public function abc(){
//some code here that returns something
}
public function abd(){
//some code here that returns something
}
// to call X() method from class A inside this class
parent::X();
}
$obj2 = new B($obj1->a, $obj1->b);
答案 1 :(得分:0)
你不会得到任何东西,因为你没有归还任何东西。在审核完代码后,您已经犯了一些错误。
public function abc(){
$printthis = call_user_func(array($obj2,$method_name);
echo $printthis;
}
您的A类不会获得$obj2
和$method_name
,因为您没有初始化它。
我不知道如何将B类中的数据转换为A类
以不同的方式获得它,您可以将B继承到A,或者您可以使用getter setter来传递您想要传递的数据。这取决于你的需求。
答案 2 :(得分:0)
对于这个解决方案非常简单,你的问题是函数x没有被正确调用,
为此案例更改代码:$this->x;
$this->x();
class A{
public $a;
public $b;
public function __construct(){
}
public function x(){
$this->a = "something";
$this->b = "something1";
}
public function abc(){
$printthis = call_user_func(array($obj2,$method_name);
echo $printthis;
}
}
$obj1 = new A;
$obj1->x(); //call function x correctly
class B{
public $a;
public $b;
public function __construct($c,$d){
$this->a = $c;
$this->b = $d;
}
public function abc(){
//some code here that returns something
}
public function abd(){
//some code here that returns something
}
}
$obj2 = new B($obj1->a, $obj1->b);