静态数据库连接作为函数的参数

时间:2013-02-02 21:06:30

标签: php database function parameters

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

事情是:什么是最佳做法?这样做是否好。我的一些函数(例如从数据库中读取一些数据)取决于数据库连接,但是如果我从函数的参数中删除数据库连接变量,我觉得缺少某种东西(一种依赖)

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

非常感谢。

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

2 个答案:

答案 0 :(得分:0)

您的数据库连接对象应该在实例化时注入它的依赖项。然后你的课程可以重复使用。 IMHO

答案 1 :(得分: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 ...
    }
?>