1

从今天开始,我将非静态数据库的变量传递给我的 php 项目的函数,这需要数据库访问。我阅读了有关多个数据库连接的所有内容,因此我将数据库连接更改为静态函数,因此我在所有函数中都可以访问我的数据库连接,而无需将其作为函数参数传递。因此,可以通过使用例如 myDatabaseConnection::myFirstdatabase->prepare 等来访问我的数据库连接(甚至是不同的数据库)...

问题是:什么是最佳实践?这样做好不好。我的一些函数(例如从数据库中读取一些数据)依赖于数据库连接,但是如果我从函数的参数中删除数据库连接变量,在我看来,某些东西(一种依赖关系)丢失了.

那么最好的做法是什么?您是否将数据库连接作为变量传递给需要数据库访问的函数?

非常感谢。

我理解连接的事情。但是我项目中的其他功能呢?例如从数据库中读取所有成员名称的函数?您是否将数据库连接变量传递给该函数,或者您是否使用我的“全局”静态数据库连接访问该函数内部的数据库连接。我知道,它不是全局的,但我的静态数据库连接可以从任何地方访问......

4

2 回答 2

0
<?php
require_once('CLASSdatabase.php');

class AUTHENTICATE{
    private $user_database_object;
    private $current;
    private $email_id;
    private $password;
    private $error;

    function __construct($email_id,$password){
        $this->user_database_object=new MYSQL_DATABASE("user");
        $this->email_id=$email_id;
        $this->password=$password;
    }

    private function verify_password(){
        $sql="select password from `users` where email_id='";
        $sql.=$this->email_id."';";
        $this->user_database_object->open_connection();
        $row=$this->user_database_object->fetch_array($this->user_database_object->query($sql));
        // code ...
        $this->user_database_object->close_connection();
    }
}
// code ..
?>

CLASSdatabase.php

<?php
require_once("config.php");

    class MYSQL_DATABASE{
        private $dbname;
        private $connection;
        public $last_query;

        function __construct($dbname){
        $this->dbname=$dbname;
        }

        public function open_connection(){
        }
        public function close_connection(){
        }
        public function query($sql){
        }
        public function fetch_array($result_set){
        }
        // code ...
    }
?>
于 2013-02-02T21:19:57.423 回答
0

您的数据库连接对象应该在实例化时注入它的依赖项。然后你的类是可重用的。恕我直言

于 2013-02-02T21:14:24.533 回答