我是新來做事的oop方式。這是我得到的。PHP OOP在其他類中的訪問方法
首先,我創建了一個將我連接到數據庫的類。然後我創建了一個類來從數據庫中獲取結果。
/engine/classes.php
class DB
{
public static function dbConnect()
{
$db = new mysqli(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
if ($db->connect_error) {
die('A connection to the database cannot be made.');
}
}
}
class Blog
{
public function fetchBlog()
{
DB::dbConnect();
$results = array();
if ($blog = $db->query('SELECT * FROM blog')) {
if ($blog->num_rows) {
while ($row = $blog->fetch_object()) {
$results[] = $row;
}
$blog->free();
}
}
}
}
然後,我有一個core.php
文件,其中包括我我classes.php
文件,這些類別實例。像這樣
/engine/core.php
require_once 'classes.php';
$con = new DB();
$con->dbConnect();
$blog = new Blog();
於是最後我有我的index.php
當我想呼應的結果我得到。看起來像這樣
的index.php
<?php include 'engine/core.php'; ?>
html stuff
<div id="blog">
<?php
$blog->fetchBlog();
if (!count($results)) {
echo'There are no blog posts at this time.';
} else {
foreach ($results as $r) {
echo'<div class="blogPost">
<em>', escape($r->postDate), '</em>
<h1>', escape($r->postTitle), '</h1>
<div>', escape($r->postBody), '</div>
</div>';
}
}
?>
</div>
我有錯誤報告和關於core.php
或classes.php
沒有得到錯誤。但是我index.php
頁面上我得到這些錯誤
Notice: Undefined variable: db in C:\wamp\www\website\engine\classes.php on line 138
Fatal error: Call to a member function query() on a non-object in C:\wamp\www\website\engine\classes.php on line 138
我如何糾正呢?我假設我需要一個__construct,並且我還假設我沒有正確調用dbConnect
方法。我嘗試了很多東西,但是在這裏列出它們太多了?誰能告訴我我做錯了什麼?
在您的Blog類的構造函數內部傳遞數據庫依賴關係,以使其在本地可訪問。 –