我的问题很简单,在检查了这里的一些细节后,我觉得最好再问一个新问题。
比方说我有两个班
class FirstClass {
function test() {
return "info";
}
}
class SecondClass {
function test() {
return "info";
}
}
然后我有我的mysqli对象
$mysqli = new mysqli(host, user, password, db);
我需要做些什么才能在类中的函数中使用mysqli对象。
到目前为止,这是我的两个想法,尽管我还没有把它放在网站上进行测试。
class FirstClass {
global $mysqli;
function test() {
$mysqli->query("some query");
return "info";
}
}
或
class FirstClass {
function test() {
global $mysqli;
$mysqli->query("some query");
return "info";
}
}
如果需要的话,我很确定我可以设置一个构造,但我只需要知道哪种方式是共享mysqli对象的最佳方式/唯一方式。
感谢
编辑:
所以我已经做了大量的学习,现在在传递信息方面有了更多的经验。
这是我使用的最新的工作示例类型。
namespace Page;
use mysqli;
class edit extends details{
protected $db;
//this function is actually in the details class but there is no point in demoing 2 classes
function __construct(mysqli $con){
$this->db = $con;
}
}
扩展Kneel在评论中告诉你的内容,并反驳其他答案
class foo {
function __construct($mysqli){
$this->mysqli = $mysqli;
}
function test() {
return $this->mysqli->query("some query");
}
}
这是必须的。
您应该在类之外的某个地方创建一个mysqli实例,然后将其传递给coustructor。
您可以使用__construct()
来初始化您的MYSQLi。然后,您可以使用$this
在课堂上访问它。
class FirstClass {
public function __construct(){
$this->mysqli = new mysqli("host", "user", "password", "db");
}
function test() {
$this->mysqli->query("some query");
return "info";
}
}
如果你也想在第二个类中使用它,你可以用同样的方式构造它,或者扩展你的第一个类。
class SecondClass extends FirstClass {
public function __construct(){
parent::__construct();
}
function test() {
return "info";
}
}