假设我有一个文件结构,如下所示:
/
index.php // holds db connection, login information, ...
...
/someSubSite
content_someSite.html // basic structure, texts, forms, ...
styles_someSite.css // styling of content_someSite.html
backend_someSite.php // should send answers of AJAX requests
frontend_someSite.js // sends AJAX requests
// (when a form is submitted)
...
index.php中的数据库连接是通过PDO实现的。因此,很明显,我不能在backend_someSite.php中直接使用这个db对象,因为它是在index.php->两个不同的范围中声明和初始化的,这些文件之间没有交互。
所以我现在的问题是:解决这个问题的最佳方法是什么?
我应该为每个子站点的每个php文件创建一个PDO吗?并通过php会话共享index.php收集的登录信息?
基本上,问题是:当前端通过AJAX查询子网站时,在index.php和backend_some(sub)Site.php之间共享信息甚至整个PDO和其他对象的最佳方式是什么。
还不清楚index.php中还有什么。如果它与您描述的完全一样,您可以在backend_someSite.php
中include
它。
如果它还有其他东西,例如任何输出到浏览器的东西,那么你应该创建一个只包含连接信息之类的东西的文件(我建议称之为config.php
),然后包括这个文件(在index.php和backend_someSite.php中)
也许您可以尝试将带有连接信息的代码放在一个单独的文件中,称之为connection.php
<?php
try {
$connection = new PDO('db_driver:host=myhost;dbname=db_name', 'username', 'password');
} catch (PDOException $e) {
die(print ("Error!: " . $e->getMessage()));
}
?>
这只是一个例子。然后,您可以每隔一个.php
中需要连接到数据库的include
文件,并在那里使用$connection
变量。
如果希望在不复制代码的情况下在脚本之间共享会话信息,则可以对会话检查执行同样的操作。
一切由您决定