【发布时间】:2016-03-23 20:15:05
【问题描述】:
我到处寻找这个问题,但无法得到答案。我试图在另一个类中调用另一个类函数。我的目标是拥有一个处理消息的全局类。我希望能够在其他类中添加消息。这是我正在使用的示例。
class Site {
var $message;
public function setMessage($string) {
$this->message .= $string;
}
public function outputMessage($string) {
echo $this->message;
}
}
还有我的其他班级
class Company {
var $name;
public function setName($string) {
$this->name.= $string;
// TESTING HERE
Site::setMessage("Company Set: " .$string);
}
}
然后我有我的主页
$Site = new Site();
$Site->addMessage("Start");
$Company = new Company();
$Company->addName('Company X');
$Site->outputMessage();
我正试图让我的屏幕显示“开始公司集:公司 X”。因此,该站点可以保留任何类需要存储的任何消息。
我尝试将函数转换为静态函数,但没有任何运气。无论我尝试什么,我都会遇到某种错误。
例如:
致命错误:访问未声明的静态属性:Company::$name
致命错误:不在对象上下文中使用 $this
谁能指出我正确的方向?
【问题讨论】:
-
首先 -
Site类中没有addMessage方法。作为addName中的Company。第二 - 作为静态调用的方法 - 没有this, -
如果你想从另一个类调用一个方法,你需要在尝试调用它之前包含那个类。还要确保你调用的方法是
public。 -
对不起,这应该是 setMessage。我已经编辑了问题以显示正确的功能。我尝试将 setCompany 更改为静态函数并使用 Address::company = $string;但我收到另一个错误:致命错误:访问未声明的静态属性:Company::$name。目前,这些类也在同一个文件中。我认为我不需要包含任何内容。