我將直截了當地指出這一點。似乎無法在互聯網上的任何地方找到它。也許這是不可能的,我不知道。我真的很喜歡用「分而治之」的方法,自己創造它。儘可能多地分割文件以便於管理(小文件等)。PHP使用另一個包含文件中的包含文件中的對象
但這裏是我的問題:
我有5個文件:
index.php
inc/config.php
inc/Database.class.php
inc/sidebar.php
inc/forms.php
好吧,我做了什麼是這樣的:
在我的config.php文件我包括數據庫。 class.php文件並創建一個對象。
include 'Database.class.php';
$user = "root";
$pass = "";
$host = "localhost";
$database = "blah blah";
$db = new Database($user, $pass, $host, $database);
$db->connect();
所以我將這個config.php和sidebar.php包含在我的index.php文件中。
(縮短了的代碼,但它的作用是相同的)
include 'inc/config.php';
include 'inc/sidebar.php';
在我的側欄我有一個形式,供用戶登錄。我使用print_r來調試我的文件,看看是否有任何東西返回,我省略了方法loginFormShow,因爲它非常長,不相關)
function loginFormProcess($user, $pass)
{
$db->select(blah blah some variables);
$res = $db->getResult();
print_r($res);
}
if (!isset($_POST['submit'])) {
loginFormShow();
} else {
if ($_POST['user'] == "")
{
loginFormShow(1);
}
else if ($_POST['pass'] == "")
{
loginFormShow(2);
}
else
{
$user = $_POST['user'];
$pass = $_POST['pass'];
loginFormProcess($user, $pass);
}
}
因此,問題是什麼。當我嘗試調用函數loginFormProcess時,它不能使用對象$ db。
我可以爲此使用1個對象嗎?因爲在索引頁面上,我將要求數據庫中的其他數據。我是否需要爲索引頁面和登錄表單創建一個對象?
有沒有其他解決方案? 如果我不清楚,我想提供一些更多的解釋。
乾杯,
Clemenz
作用域規則仍然適用於$ db變量,即使它是一個對象而不是一個簡單的標量......僅僅因爲它是一個對象,不會使它成爲全局的 - 所以它不是' t在你的loginFormProcess()函數中的作用域 –
我如何在沒有創建另一個對象的情況下在正確的作用域中獲取它。我只想爲一個對象使用多個函數。這是否可行? – Clemenz
您將它作爲參數傳遞給loginFormProcess()函數,正如Madara的答案所示,完全如同您將任何其他變量傳遞給函數一樣 –