Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中将另一个类方法调用到另一个类方法中_Php_Oop_Call_Func - Fatal编程技术网

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

如何在PHP中将另一个类方法调用到另一个类方法中,php,oop,call,func,Php,Oop,Call,Func,我试图在PHP中使用call\u user\u func获得该方法,但事实是我无法以正确的方式获得它。我的数据存储在另一个类方法中,我希望将该数据提取到另一个类方法中。首先,我创建了一个对象,其中包含其他类中给定的一些参数。基于参数,类开始它的工作,然后将数据存储到方法中。我的问题是我已经在一个类之后调用了一个对象,现在我如何才能将该对象再次调用到另一个类中。也许您可以通过示例代码理解它: class A{ public $a; public $b; public fun

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

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

public function abc(){
    $printthis = call_user_func(array($obj2,$method_name);
    echo $printthis;
}
您不会在类A中获得
$obj2
$method\u name
,因为您没有初始化它

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


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

基本继承将解决您的所有问题

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

没有正确调用Follow basic OOP conceptsx()。您的代码乱七八糟。尝试学习可能导致书写错误的基本方法,这可能是$obj1->x();像这样@是的,我知道可能有一些问题。。我正试图从中学到一些东西。如果你能帮我,请帮我解决这个问题。。这实际上可以让我学到很多东西。谢谢你的回答。我实际上在oop方面很弱,所以你能给我一些更好的例子吗?我在实际代码中从类B方法返回了一些东西。调用方法x以获取在此方法中分配的属性值。现在在B类中,我已经完成了一些代码,这些代码运行良好,因为我已经在实际代码中进行了测试。但是我有什么想法或者方法可以把这些返回的数据传给类A的方法。我没有得到你的回答,你能说得更具体些吗?谢谢你的回复,并举例说明。我期待着这样的解决方案。谢谢你的帮助。如果真的帮助了你,请把它选为最好的答案,谢谢你的赞赏。我没什么意思,这就是为什么我不能投票的原因。。对不起。但我已经猜到了你的答案。。非常感谢你的帮助!!没问题,谢谢你的欣赏。