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


Function redeclaring error when using Drupal API in Laravel project

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

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

引导代码取自drupal网站:

就会突出显示bootstrap . inc/功能/

https://api.drupal.org/api/drupal/includes ! 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方面的任何东西的情况下解决这个问题?

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