我将直截了当地指出这一点。似乎无法在互联网上的任何地方找到它。也许这是不可能的,我不知道。我真的很喜欢用“分而治之”的方法,自己创造它。尽可能多地分割文件以便于管理(小文件等)。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的答案所示,完全如同您将任何其他变量传递给函数一样 –