在Laravel项目中使用Drupal API时函数重新声明错误

时间:2015-10-25 17:21:59

标签: php laravel drupal drupal-7 laravel-5

我已经尝试通过将此代码放在laravel项目目录中的(public / index.php)文件中来引导我的laravel项目中的drupal API:

 $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
 define('DRUPAL_ROOT', $DOCUMENT_ROOT.'drupal738');
 require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
 drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

引导代码来自drupal网站:

https://api.drupal.org/api/drupal/includes!bootstrap.inc/function/drupal_bootstrap/7

但是当我在laravel项目中打开登录页面时,会出现以下错误:

Fatal error: Cannot redeclare url() (previously declared in C:\wamp\www\laravelTest\vendor\laravel\framework\src\Illuminate\Foundation\helpers.php:566) in C:\wamp\www\drupal738\includes\common.inc on line 2333

那是因为有一些具有相同名称的函数都在laravel和drupal中定义,例如url()base_path()

那么有什么方法可以解决这个问题而不会在laravel或Drupal那边破坏任何东西吗?

1 个答案:

答案 0 :(得分:2)

这就是为什么全球功能是不好的做法。您最终可以深入研究drupal代码并删除与laravel相同名称的函数,如果它们不会影响其余代码,或者您可以使用一些智能IDE在drupal代码库中重构(重命名)函数。