从另一个类触发__construct函数


Trigger __construct function from another class

我创建了一个名为connect的类,它包括我的数据库的构造函数:

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();
        }
    }   
?>

我正在努力达到这个级别&来自另一类的函数:

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类中可能更好,或者确实将两者合并为一个类-但当它们如此紧密耦合时,我认为拥有两个是不好的。