我试图在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来传递您想要传递的数据。这取决于您的需要。