[英]Calling class method from other class (PHP)
我意识到这是一个常见问题,我已经尝试自己解决它,但是在按照其他答案的说明进行操作后,我无法使其正常工作。 所以,这就是问题所在——我需要从 ClassTwo 中的 ClassOne 类调用一个方法。 所以我这样做了:
class ClassOne{
public function methOne($par1,$par2){
mysql_query("insert into ps_loyalty_events (customer_id,event_id) values ('$par1','$par2') ") or die(mysql_error());
}
}
class ClassTwo{
private $customer; //initialize $customer in the constructor, to be defined as an instance of ClassOne() class and used as $this->customer
function __construct() {
$this->customer = new ClassOne();
}
public function methTwo(){
//some stuff here
$this->customer->methOne(6,10); //6,10 - randomly chosen parameters, irrelevant
//some more stuff here, this doesn't get executed at all
}
}
问题不在 ClassOne 或方法 methOne() 中,因为以以下方式直接从常规 PHP 文件调用它们是有效的:
$customer = new ClassOne();
$customer->methOne(6,10);
但是,当我从 ClassTwo 方法调用它时,它什么也不做——它只是停止该函数的执行。 使用 try-catch 似乎没有输出任何内容。 我究竟做错了什么?
这是因为您的methTwo
是静态的。 当您调用类的静态方法时,该类不会实例化为对象,因此它没有$this->customer
属性。
除非有静态方法的原因,否则您可以更改methoTwo
:
public function methTwo(){
编辑:既然你已经解决了这个问题:是什么让你认为它不起作用? 你在methOne
什么都不做。
给出的代码很好,请参阅此Codepad 演示它的工作原理。 这意味着还有一些我们看不到的其他代码导致了问题。
为了简单的解决办法,尝试在classtwo中使用extend classone,这样所有的方法都可以在classtwo中默认使用
class class_two extends class_one
首先,第一类的方法将被访问到第二类并且也可以轻松使用。 尝试一下
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.