【问题标题】:what i need to consider when building phar file from php application use php framework like laravel从php应用程序构建phar文件时我需要考虑使用像laravel这样的php框架
【发布时间】:2014-05-09 00:44:27
【问题描述】:

我是 php 开发人员,使用 laravel-4 作为构建 web 应用程序的框架,最近几天我想从我在 laravel 框架上创建的 web 应用程序创建 phar 文件。

我在网上搜索了构建 php 存档文件 (.phar) 的工具,我发现 PHP box,这个工具非常好,使用 json 配置文件来构建 phar 文件,但我不能用它来创建我的 phar 文件,因为从 web 应用程序创建 phar 文件时有很多注意事项,使用像 laravel 这样的框架。我的问题是:

laravel 使用 composer autoloader 作为自动加载机制

1- 如何处理composer自动加载机制?

2- 如何处理框架引导过程? '像 laravel'

3- 我需要什么让浏览器从 phar 文件中读取我的索引页?

4- 如何使用phar文件中的框架命令行工具? '像 laravel 工匠'

【问题讨论】:

    标签: php laravel-4 composer-php phar


    【解决方案1】:

    您可以在您的应用程序中使用 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
    }
    

    bootstrap.php

    <?php
    require 'vendor/autoload.php'; //<-- this is autoload.php generated by Composer
    
    use MyApp\Application;
    
    $config = parse_ini_file(__DIR__.'/config.ini');
    
    $app = new Application();
    $app->run($config);
    

    【讨论】:

    • 有些人构建 application.phar 并将他们的 framework.phar 放入其中,所以我只是想让您知道它可能会有点混乱。
    • 首先**非常感谢您回答我**。但我不想在 phar 中访问 phar 。我只需要从我的 web 应用程序中构建 phar 文件,并使用它的依赖项(供应商目录)。如何从phar文件中调用composer/autoload.php文件
    • 相应地更新了我的答案。请参阅 bootstrap.php,我在其中包含了 composer autoloader...
    • 这是这个问题的最佳答案。但不适用于 laravel,因为它在引导和运行过程中是非常复杂的框架。
    猜你喜欢
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 2012-07-21
    • 1970-01-01
    • 2010-10-23
    • 2011-03-03
    相关资源
    最近更新 更多