如何在Laravel中包含遗留的PHP代码层次结构

时间:2015-02-10 21:02:54

标签: php laravel include require relative-path

我正在将遗留的PHP应用程序移植到Laravel,并且需要将各种PHP文件中定义的函数包含到Laravel控制器中。将这些文件复制到Laravel项目中并不方便,因为它们仍将用于站点的非Laravel部分,我想确保代码仍然是共享的。如何在Laravel中的某个地方使用require()与所有遗留PHP文件的相对路径?

例如,在页面顶部,我将转换为Laravel:

<?php

require("../include.php");
require_once("../../trades/trades_include.php");
require_once("account_access_page.php");
require_once("../includes/accounts.php");

如您所见,.. / include.php包含具有相对路径的其他文件:

<?php

require_once("general.php");

require_once("../../config.php");
require_once("../../includes/utility.php");
require_once("../../includes/session_helper.php");

require_once("../../includes/date.php");
require_once("../../includes/form.php");
require_once("../../includes/mysql.php");
require_once("../../includes/page.php");
require_once("../../includes/table.php");

编辑:在composer.json中包含文件无法解决我的问题,因为嵌套的require_once()失败了。有没有人知道解决方法?

1 个答案:

答案 0 :(得分:6)

加载文件的最佳方法可能是使用composer。转到Laravel应用程序根目录中的composer.json,并将其添加到"autoload"部分:

"files": [
    "../include.php",
    "../../trades/trades_include.php"
    // and so on...
],

路径相对于目录composer.json所在。

添加文件后,运行composer dump-autoload