如何在PHP中将另一个类方法调用到另一个类方法中
我试图在PHP中使用如何在PHP中将另一个类方法调用到另一个类方法中,php,oop,call,func,Php,Oop,Call,Func,我试图在PHP中使用call\u user\u func获得该方法,但事实是我无法以正确的方式获得它。我的数据存储在另一个类方法中,我希望将该数据提取到另一个类方法中。首先,我创建了一个对象,其中包含其他类中给定的一些参数。基于参数,类开始它的工作,然后将数据存储到方法中。我的问题是我已经在一个类之后调用了一个对象,现在我如何才能将该对象再次调用到另一个类中。也许您可以通过示例代码理解它: class A{ public $a; public $b; public fun
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的方法。我没有得到你的回答,你能说得更具体些吗?谢谢你的回复,并举例说明。我期待着这样的解决方案。谢谢你的帮助。如果真的帮助了你,请把它选为最好的答案,谢谢你的赞赏。我没什么意思,这就是为什么我不能投票的原因。。对不起。但我已经猜到了你的答案。。非常感谢你的帮助!!没问题,谢谢你的欣赏。