我是php开发人员使用laravel-4作为构建Web应用程序的框架,最近几天我想从在laravel框架上创建的Web应用程序创建phar文件。
我在网上搜索了构建php存档文件(.phar)的工具,我发现PHP框,这个工具非常好,使用json配置文件来构建phar文件,但我不能使用它来创建我的phar文件,因为在从Web应用程序创建phar文件时有很多注意事项,使用像laravel这样的框架。我的问题是:
Laravel使用作曲家自动加载器作为自动加载机制
1-如何处理作曲家自动加载机制?
2- 如何处理框架引导过程? "像拉拉维尔"
3-我需要什么才能使浏览器从phar文件内部读取我的索引页?
4-如何使用phar文件中的框架命令行工具? "像拉拉维尔工匠"
你可以在应用程序中使用 composer.json,并在那里需要框。当你的应用程序在 laravel 上运行时,你知道你的引导程序可以工作,也可以在 phar 中工作。
我相信Box带来了很多作曲家自己的东西,所以你不会遇到麻烦。我认为class_map会自动包含在内。
要考虑的一件事是,必须传入配置详细信息!
通常,您需要"转发"到位于 phar 内部的应用程序,如下所示:
<?php
require_once "phar://myapp.phar/frontcontroller.php"; // maybe index.php
$config = array('dsn' => 'database-config');
Application::run($config);
在 PHAR 中访问 PHAR 也是一个问题!
您无法直接访问打包在 PHAR 中的 PHAR。首先,您需要提取打包的 PHAR,其次执行转接调用并传递 CLI 命令。这里解决的问题:https://stackoverflow.com/a/13537329/1163786
完整示例
box.json.dist
{
"main": "bootstrap.php",
"output": "application.phar",
"compactors": ["Herrera\Box\Compactor\Composer"],
"chmod": "0755",
"directories": ["src/"],
"stub": true
}
引导程序.php
<?php
require 'vendor/autoload.php'; //<-- this is autoload.php generated by Composer
use MyAppApplication;
$config = parse_ini_file(__DIR__.'/config.ini');
$app = new Application();
$app->run($config);