从另一个 class 触发 __construct 函数
Trigger __construct function from another class
我创建了一个名为 connect 的 class,它包含一个用于我的数据库的构造函数:
construct.php
<?php
include('includes/constants.php');
class connect {
public $db;
function __construct() {
$this->db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME) or die();
}
}
?>
我正在尝试从另一个 class:
中实现此 class & 功能
mysql.php
<?php
include_once('construct.php');
$connect = new connect();
class mysql {
function verifyLogInData($email, $password) {
$query = "SELECT * FROM users WHERE email = ? AND password = ? LIMIT 1";
if($stmt = $connect->db->prepare($query)) {
$stmt->bind_param('ss', $email, $password);
$stmt->execute();
if($stmt->fetch()) {
$stmt->close();
return true;
}
}
}
}
?>
但是,我似乎无法触发 $connect 对象。执行此操作的正确方法是什么,或者我应该用其他方法触发此功能?
给我错误的行:
if($stmt = $connect->db->prepare($query)) {
提前致谢。
PS:非常感谢对我的代码提出任何建议:)
您需要了解变量作用域。在这种情况下,您可以将实例传递到方法中:
function verifyLogInData($email, $password, $connect) {...}
虽然通过构造函数将它注入 mysql class 可能更好,或者确实将两者合并为一个 class - 我没有看到很好的反响当他们如此紧密地耦合时有两个
我创建了一个名为 connect 的 class,它包含一个用于我的数据库的构造函数:
construct.php
<?php
include('includes/constants.php');
class connect {
public $db;
function __construct() {
$this->db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME) or die();
}
}
?>
我正在尝试从另一个 class:
中实现此 class & 功能mysql.php
<?php
include_once('construct.php');
$connect = new connect();
class mysql {
function verifyLogInData($email, $password) {
$query = "SELECT * FROM users WHERE email = ? AND password = ? LIMIT 1";
if($stmt = $connect->db->prepare($query)) {
$stmt->bind_param('ss', $email, $password);
$stmt->execute();
if($stmt->fetch()) {
$stmt->close();
return true;
}
}
}
}
?>
但是,我似乎无法触发 $connect 对象。执行此操作的正确方法是什么,或者我应该用其他方法触发此功能?
给我错误的行:
if($stmt = $connect->db->prepare($query)) {
提前致谢。
PS:非常感谢对我的代码提出任何建议:)
您需要了解变量作用域。在这种情况下,您可以将实例传递到方法中:
function verifyLogInData($email, $password, $connect) {...}
虽然通过构造函数将它注入 mysql class 可能更好,或者确实将两者合并为一个 class - 我没有看到很好的反响当他们如此紧密地耦合时有两个