0

我只是在创建一个简单的独立股票更新程序并将我的手转向 OOP 而不仅仅是基于函数的。我创建了一个简单的类,它需要我的数据库连接,但想知道包含和使用数据库连接的最佳实践。第一个应用是将使用数据库的类。第二个是“dbconnector.php”的内容。

class stockUpdater {

    var $data = '';

    function __construct() {
        include('dbconnector.php');
        print_r($mysqli);

        //check and get file
        $fp = fopen('stockfiles/stockfile.csv', 'r');
        if($fp){
            while(! feof($fp)) {
                $prods[] = fgetcsv($fp);
            }
        }

        if(empty($prods)){
            $this->logError(time(),'No data found in file');
        }
    }

    //error logging function
    private function logError($time, $message){

    }
}

$updateStock = new stockUpdater();

我知道我在这里所做的工作,但不知道是否有比在每个类中包含数据库连接脚本更好的方法,因为这可以在只需要 1 个时创建多个数据库连接。

$mysqli = new mysqli(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

/*
 * This is the "official" OO way to do it,
 * BUT $connect_error was broken until PHP 5.2.9 and 5.3.0.
 */
if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
}

/*
 * Use this instead of $connect_error if you need to ensure
 * compatibility with PHP versions prior to 5.2.9 and 5.3.0.
 */
if (mysqli_connect_error()) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}
4

1 回答 1

1

解决此问题的最简单方法是环绕$mysqli实例。

定义StockUpdater类(建议类名首字母大写)

class StockUpdater {
    private $mysqli;

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

    public function doStuff() {
        // do stuff with $this->mysqli
    }
}

并像使用它一样

require_once('dbconnector.php');

$su = new StockUpdater($mysqli);
$su->doStuff();
于 2013-04-04T13:39:30.663 回答