Php 在另一个类中调用另一个类函数
我到处找这个问题,但找不到答案。我试图调用另一个类中的另一个类函数。我的目标是拥有一个处理消息的全局类。我希望能够在其他类中添加消息。这就是我的例子Php 在另一个类中调用另一个类函数,php,class,Php,Class,我到处找这个问题,但找不到答案。我试图调用另一个类中的另一个类函数。我的目标是拥有一个处理消息的全局类。我希望能够在其他类中添加消息。这就是我的例子 class Site { var $message; public function setMessage($string) { $this->message .= $string; } public function outputMessage($string) { echo $t
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”。因此,该站点可以保存任何类需要存储的任何消息
我试着在没有任何运气的情况下将函数转换为静态函数。不管我怎么做,我都会犯一些错误
例如:致命错误:访问未声明的静态属性:公司::$name 致命错误:不在对象上下文中使用$this
有人能给我指出正确的方向吗?尽管我对这种模式有所保留,但你真的希望
站点
类成为一个单例:
class Site {
private static $instance = new Site();
public static getInstance() {
return Site::$instance;
}
private $message;
private function __construct() {
}
public function addMessage($message) {
$this->message .= $message;
}
public static function addNewMessage($message) {
$instance->addMessage($message);
}
}
现在您可以使用
Site::addNewMessage(“…”)
或通过Site::getInstance()
访问Site的实例。我无法使上述工作正常进行。如果有人有别的办法,请告诉我。再次感谢你
class Company {
private $Site;
var $name;
function __construct(Site $Site) {
$this->Site = $Site;
}
public function addMessage ($string) {
$this->Site->addMessage($string);
}
public function setName($string) {
$this->name.= $string;
// TESTING HERE
$this->Site->addMessage($string);
}
}
$Site = new Site();
$Site->addMessage("Start");
$Company = new Company($Site);
$Company->addName('Company X');
$Site->outputMessage();
首先-在Site
类中没有addMessage
方法。作为Company
中的addName
。第二,作为静态调用的方法,没有这个
,如果您想从另一个类调用一个方法,您需要在尝试调用它之前包含该类。还要确保您调用的方法是public
。对不起,这应该是setMessage。我已编辑问题以显示正确的功能。我尝试将setCompany更改为静态函数,并使用Address::company=$string;但我得到了另一个错误:致命错误:访问未声明的静态属性:Company::$name。目前,这些类也在同一个文件中。我想我不需要包含任何内容。私有函数构造
@u\u mulder:谢谢你的关注。我总是搞砸PHP中的构造函数。谢谢大家的帮助。非常感谢。然而,我在课堂上的第一行上遇到了一个错误。解析错误:语法错误,意外的“new”(T_new)忘记了在PHP中不能这样做。我会马上更新我的答案。