【问题标题】:Trigger __construct function from another class从另一个类触发 __construct 函数
【发布时间】:2015-03-23 22:47:34
【问题描述】:

我创建了一个名为 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:非常感谢您对我的代码提出任何建议 :)

【问题讨论】:

    标签: php mysql class mysqli


    【解决方案1】:

    您需要了解变量范围。在这种情况下,您可以将实例传递给方法:

    function verifyLogInData($email, $password, $connect) {...}
    

    虽然通过构造函数将它注入 mysql 类可能会更好,或者实际上将两者合并到一个类中 - 我认为当它们如此紧密耦合时有两个是一个很好的理由

    【讨论】:

      猜你喜欢
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-19
      • 2020-05-15
      • 2019-08-01
      • 1970-01-01
      相关资源
      最近更新 更多