【问题标题】:Laravel 5 package developmentLaravel 5 包开发
【发布时间】:2015-04-07 08:15:54
【问题描述】:

我无法在 Laravel 5 中创建包,因为 workbench 已被删除。

正如在此线程 (How create package in Laravel 5?) 中,Goldorak 建议我们必须自己创建自己的包结构。

那么,如何手动创建工作台并为包开发做好一切准备?

【问题讨论】:

  • @MartirosAghajanyan 那篇文章没有回答我的问题。这就是我在这里问它的原因,你可以看到我指向那个帖子的链接。我在这里的问题是如何手动创建这些文件结构(结构应该如何)并为包开发做好一切准备(我们的新文件结构所需的所有配置)。

标签: php laravel laravel-5


【解决方案1】:

你可以在这个名为packman 的包上使用包。 composer global require "hadefication/packman",只是一个简单的 Laravel 包创建者。

【讨论】:

    【解决方案2】:

    没有工作台的 laravel 5 标准

    Set 1 : 像往常一样安装 laravel。

    第 2 步:创建包文件夹和服务提供者

    在根目录中创建一个名为“packages”的文件夹/"vendorName"/"packageName"/src" Eg: root/packages/jai/Contact/src

    现在导航到 src 文件夹并创建一个服务提供者类:“ContactServiceprovider.php”

    您的服务提供者应该扩展必须实现注册方法的 ServiceProvider。

    注意:如果你愿意,你可以有 dd("testing");在启动功能中并转到第 3 步,但您已经复制了您可能想要创建视图、路由、配置和控制器的文件,请查看下面的链接

    第 3 步:在根 composer.json 文件 "jai\Contact\": "packages/jai/Contact/src/" 在 psr-4 下添加根 composer.json 中的包路径

    "psr-4": { "App\": "app/", "Jai\Contact\": "packages/jai/contact/src/", }
    

    第 4 步:在应用配置中添加服务提供商。

    在你的根目录/conifg/app.php 下的 providers 下添加你的包服务提供者来钩住你的包。

       'Jai\Contact\ContactServiceProvider',
    

    第 5 步:运行 composer dump-autoload - 确保没有错误。

    全部完成 - 现在你可以通过 url 访问你的包 - "yourwebsite/contact"

    来自这里的资源:@​​987654321@

    【讨论】:

    • 我关注了 3 次。不工作。继续说:ProviderRepository.php 第 146 行中的 FatalErrorException:找不到 Class 'Jai\Contact\ContactServiceProvider'
    • 你在哪个 Laravel 版本上使用这个?
    【解决方案3】:

    使用 laravel Workbench 包:

    您可以在 Laravel 5 中添加 illuminate/workbench 包,方法是添加到您的 composer.json

    "illuminate/workbench": "dev-master"
    

    然后将 WorkbenchServiceProvider 添加到您的 config/app.php 文件中:

    'Illuminate\Workbench\WorkbenchServiceProvider'
    

    现在您需要创建 config/workbench.php 文件,因为它已从 Laravel 5 中删除:

    <?php
    
    return [
        /*
        |--------------------------------------------------------------------------
        | Workbench Author Name
        |--------------------------------------------------------------------------
        |
        | When you create new packages via the Artisan "workbench" command your
        | name is needed to generate the composer.json file for your package.
        | You may specify it now so it is used for all of your workbenches.
        |
        */
        'name' => '',
        /*
        |--------------------------------------------------------------------------
        | Workbench Author E-Mail Address
        |--------------------------------------------------------------------------
        |
        | Like the option above, your e-mail address is used when generating new
        | workbench packages. The e-mail is placed in your composer.json file
        | automatically after the package is created by the workbench tool.
        |
        */
        'email' => '',
    ];
    

    在此配置文件中填写您的信息,然后您将能够使用工作台命令:

    php artisan workbench vendor/name
    

    创建自己的包结构

    在此示例中,我们将在包目录中创建名为 awesome 的包。

    这是包结构:

    packages/
      vendor/
        awesome/
          src/
            Awesome.php
          composer.json
    
    • 供应商:您的供应商名称,通常是您的 github 用户名。
    • 真棒:你的包的名称
    • src:放置业务逻辑的位置

    要生成 composer.json 文件,您可以在 packages/vendor/awesome 目录中使用此命令:

    composer init
    

    现在我们用一个简单的方法在src目录下创建一个Awesome.php类:

    <?php namespace Vendor/Awesome;
    
    class Awesome
    {
        public static function printAwesomeness()
        {
            echo 'Awesome';
        }
    }
    

    之后我们将包添加到 laravel composer.json psr-4 autoloader:

    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Vendor\\Awesome\\": "packages/vendor/awesome/src"
        }
    },
    

    然后我们转储作曲家自动加载器

    composer dump-autoload
    

    现在您可以在 laravel 5 项目中的任何地方使用您的包。如果您需要一些 laravel 特定的功能,例如服务提供者或视图发布,请按照Laravel 5.0 documentation 中的说明使用它们。

    【讨论】:

    • 我修正了我的答案,我在 laravel 5 测试版和不稳定版本上对其进行了测试,它现在可以稳定运行。
    • @user1995781 事实上,你完全可以在没有工作台的情况下编写一个包。 workbench 命令只是创建一个包含一些基本文件的目录,但您可以从头开始执行此操作。我将通过一些关于如何在没有它的情况下编写自己的包的解释来更新我的答案。
    • @user1995781:删除的原因是包开发应该与框架无关,因此工作台所做的事情应该在 PHP 级别上解决。根据 laravel 播客,Taylor Otwell 正在开发一种与 Workbench 完成相同功能的工具。
    • @NicolasBeauvais 是的(一切都正确),我找到了解决方案,我的问题是当我运行 composer dump-autoload 时它在我加载页面时崩溃,当我运行 @ 时 L5 找不到我的服务提供商987654340@ 它就像魅力一样。你知道是什么导致了这种行为吗?
    • 如何访问包的简单示例控制器会很有用。对某些人来说可能看起来很容易,但会完成答案。
    猜你喜欢
    • 1970-01-01
    • 2015-04-07
    • 2015-09-19
    • 2016-05-16
    • 2017-02-07
    • 2016-03-14
    • 1970-01-01
    • 2022-07-30
    • 1970-01-01
    相关资源
    最近更新 更多