【发布时间】:2016-04-17 20:13:31
【问题描述】:
我是 OOP PHP 新手,自从我开始 Web 开发以来,我一直在使用过程 API,所以我很难迁移到 OOP。
假设我在下面有这四个.php 文件和结构。
connection.db.php
<?php
define("DB_HOST", "127.0.0.1");
define("DB_USER", "root");
define("DB_PASS", "");
define("DB_NAME", "sample_db");
$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
echo (!$db->connect_error) ? NULL : die("<pre>Unable to connect to the MySQL Server -> $db->connect_error</pre>");
?>
sampleclass.class.php
<?php
public $db;
class MySQLqueries {
public function samplefunction($queryString) {
$sqlQry = mysqli->query($queryString);
return ($sqlQry) ? "<pre>Query Executed Successfully</pre>" : die("<pre>An error occured -> $db->error</pre>");
}
}
?>
包括.inc.php
<?php
error_reporting(0);
date_default_timezone_set("Asia/Manila");
require 'connection.db.php';
require 'sampleclass.class.php';
?>
index.php
<?php
require 'includes.inc.php';
$todo = new MySQLqueries;
echo $todo->samplefunction("SELECT `sample_column` FROM `sample_table` WHERE `sample_column` = 'sample_value';");
?>
您可能注意到也可能没有注意到,我的问题是如何在sampleclass.class.php 的samplefunction 中使用来自connection.db.php 的$db
你可能会问我,为什么不在 sampleclass.class.php 中创建一个__construct() 方法,然后移动“$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);”那里 ?。好吧,如果我要这样做,所有其他类都必须有它自己的 constructor 和 $db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 声明在那里对吗?
在connection.db.php 上使用$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);,我认为我可以灵活地重复使用它。
你看我已经在sampleclass.class.php 中声明了一个public $db;,但我不知道接下来会发生什么。如果有人能帮助我,我将不胜感激。
PS:我已经咨询过 Google 博士。关于这个问题,我只有大量的文章或视频教程展示了如何使用和进行 OOP PHP-MySQLi 编程,但没有使用类和方法。
【问题讨论】: