我不想使用drupal db_规则。我宁愿使用我自己的pdo技术进行数据库查询和更新等。但是我设法让pdo工作,唯一的问题是我有要在每个自定义页面上使用连接,我社区中的一些用户可以编辑页面并且能够看到连接信息.. require 和 require_once 似乎不起作用。
有没有其他人遇到过这个问题并且知道如何避免它?
您可以创建自己的模块并使用 init 挂钩:
https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_init/7
function yourmodulename_init() {
// This code will be executed on every page
}
但是,您应该尝试使用 drupal 数据库机制,因为它带有许多最佳实践和强大的工具。例如视图集成:
https://api.drupal.org/api/views/views.api.php/function/hook_views_data/7
在 Drupal 7 中,Database::getConnection
允许您检索DatabaseConnection
所有已配置数据库的对象。并且DatabaseConnection
扩展PDO
所以如果你真的想绕过 Drupal 的数据库 API(它本身基于 PDO 并且可以在所有地方重用或扩展 PDO 类),你可以像使用你自己的PDO
对象一样使用它。
但是,如果您的社区用户能够编辑您的自定义页面,我猜您实际上是在使用 PHP 过滤器将 PHP 代码嵌入 Drupal 节点中。这本身就是一个非常糟糕的主意(比忽略 Drupal 的数据库 API 更糟糕)。相反,您应该考虑编写适合您需求的自定义模块。