如何在PHP中将另一个类方法调用为另一个类别方法


How can I call another class method into another class method in PHP

我试图在PHP中使用call_user_func获得该方法,但事实是我无法以正确的方式获得它。我的数据存储在另一个类方法中,我想将该数据提取到另一个类别方法中。首先,我创建了一个带有一些参数的对象,这些参数在其他类中给出。根据参数,类启动它的工作,然后将数据存储到方法中。我的问题是,我已经在一个类之后调用了一个对象,现在我如何才能将该对象再次调用到另一个类中。也许你可以通过示例代码来理解它:

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类中。有人能在这个话题上帮我吗?我从这里什么也得不到。代码示例可以解释一切。

基本继承将解决所有问题。

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);

对于这个解决方案来说非常简单,您的问题是函数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);

您将不会得到任何东西,因为您没有返回任何东西。在审查了你的代码之后,你犯了一些错误。

public function abc(){
    $printthis = call_user_func(array($obj2,$method_name);
    echo $printthis;
}

你不会在你的A类中得到$obj2$method_name,因为你没有初始化它

我不知道如何将B类的数据转换成A类的

您可以通过不同的方式获得它,您可以将B继承到A,也可以使用getter-setter来传递您想要传递的数据。这取决于您的需要。