在一个消息传递项目中,我有两个类,number 和 message。第一类处理数字,第二类处理消息。
number->recive()
应该打电话message->getPass()
。然后message->getPass
应该产生一个密码,并使用它回复用户message->send()
.
并且有很多这样的情况,我希望在那个和那个中的这个类......
$this->number = new number()
我在消息类中尝试过__constructor()
,反之亦然,但出现致命错误:允许的内存大小为 33554432 字节已用尽(尝试分配 65488 字节)。
我认为错误原因很明显,我正在导致实例化的无限循环。
有没有办法让两个类互相使用?什么是正确的方法?
谢谢
编辑 0:感谢超快速的回答/评论!
编辑 1:我看到了这个问题如何在 C++ 中创建两个相互用作数据的类?我不知道这些星号到底是什么意思,如果我可以在 php 中使用它!
编辑2:关于导致错误的代码,简单地说:
测试.php:
include_once './number.php';
$number = new number();
$number->recive();
数字.php:
include_once './message.php';
class number {
public function __construct($numberId = NULL) {
$this->message = new message();
$this->pdo = new PDO("mysql:host=localhost;dbname=madb", "root", "root");
}
...
}
消息.php:
class message {
protected $pdo, $rows, $sql, $number;
public function __construct($messageId = NULL) {
$this->number = new number();
$this->pdo = new PDO("mysql:host=localhost;dbname=madb", "root", "root");
}
...
}
编辑 3:
某种解决方案可能是这样的:
为每个类添加一个load
方法:
public function load($className) {
require_once $className . '.php';
$this->{$className} = new $className();
}
所以你应该$this->load('number')
在我需要的时候调用从 number.php 加载数字类,然后以这种方式使用它$this->number->numberMethod()
。