我意识到这是一个常见的问题,我已经尝试过自己解决它,但是在按照其他答案的指示后,我无法让它工作。所以,这就是问题 - 我需要从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
}
}
priblem不在ClassOne或方法methOne()中,因为以下列方式直接从常规PHP文件中调用它们有效:
$customer = new ClassOne();
$customer->methOne(6,10);
但是,当我从ClassTwo方法调用它时,它什么都不做 - 它只是停止执行该函数。使用try-catch似乎没有输出任何东西。我做错了什么?
答案 0 :(得分:0)
这是因为您的methTwo
是静态的。当您调用类的静态方法时,该类不会实例化为对象,因此它没有$this->customer
属性。
除非有静态方法的原因,否则您可以更改methoTwo
:
public function methTwo(){
编辑:既然你已经解决了这个问题:是什么让你觉得它不起作用?您在methOne
。
给出的代码很好,请参阅此Codepad demo。这意味着我们无法看到其他一些代码导致问题。
答案 1 :(得分:-1)
对于简单的解决方案,尝试在classtwo中使用extend classone,以便默认情况下所有方法都可以在classtwo中使用
class class_two extends class_one
首先,第一类的方法将被访问到第二类,并且也可以轻松使用它。试试吧