Laravel 5包开发

use*_*781 33 php laravel laravel-5

我很难在Laravel 5中创建workbench已删除的包.

正如在这个帖子中(如何在Laravel 5中创建包?),Goldorak建议我们自己创建自己的包结构.

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

小智 69

使用laravel Workbench包:

您可以illuminate/workbench通过添加到以下内容在Laravel 5中添加该包composer.json:

"illuminate/workbench": "dev-master"
Run Code Online (Sandbox Code Playgroud)

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

'Illuminate\Workbench\WorkbenchServiceProvider'
Run Code Online (Sandbox Code Playgroud)

现在您需要创建该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' => '',
];
Run Code Online (Sandbox Code Playgroud)

在此配置文件中填写您的信息,然后您就可以使用workbench命令:

php artisan workbench vendor/name
Run Code Online (Sandbox Code Playgroud)

创建自己的包结构

在这个例子中,我们将在packages目录中创建名为awesome的包.

这是包结构:

packages/
  vendor/
    awesome/
      src/
        Awesome.php
      composer.json
Run Code Online (Sandbox Code Playgroud)
  • 供应商:您的供应商名称,通常这是您的github用户名.
  • 太棒了:你的包的名字
  • src:放置业务逻辑的位置

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

composer init
Run Code Online (Sandbox Code Playgroud)

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

<?php namespace Vendor/Awesome;

class Awesome
{
    public static function printAwesomeness()
    {
        echo 'Awesome';
    }
}
Run Code Online (Sandbox Code Playgroud)

之后,我们将包添加到laravel psr composer.json-4自动加载器:

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Vendor\\Awesome\\": "packages/vendor/awesome/src"
    }
},
Run Code Online (Sandbox Code Playgroud)

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

composer dump-autoload
Run Code Online (Sandbox Code Playgroud)

现在,您可以在laravel 5项目中的任何位置使用您的软件包.如果您需要某些特定于laravel的功能,如服务提供程序或视图发布,请按照Laravel 5.0文档中的说明使用它们.

  • @NicolasBeauvais是的(一切都是正确的)我找到了解决方案,我的问题是,当我运行`composer dump-autoload`时,当我加载页面时它会崩溃而L5找不到我的服务提供商,当我运行`composer dump-autoload - 时它的功效就像魅力一样.你知道导致这种行为的原因吗? (6认同)
  • @ user1995781:删除的原因是包开发应该是框架无关的,所以工作台应该在PHP级别上解决.根据laravel播客,Taylor Otwell正在开发一种与工作台完成相同的工具. (3认同)

小智 10

laravel 5带有工作台的标准.

设置1:像往常一样安装laravel.

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

在根目录下创建一个文件夹调用"packages" /"vendorName"/"packageName"/src" Eg: root/packages/jai/Contact/src

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

您的服务提供者应该扩展必须实现register方法的ServiceProvider.

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

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

"psr-4": { "App\": "app/", "Jai\Contact\": "packages/jai/contact/src/", }
Run Code Online (Sandbox Code Playgroud)

第4步:在app config中添加服务提供商.

在您的root/conifg/app.php下,在提供商下添加您的包服务提供商以挂钩您的包.

   'Jai\Contact\ContactServiceProvider',
Run Code Online (Sandbox Code Playgroud)

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

全部完成 - 现在您可以通过网址访问您的包裹 - "yourwebsite/contact"

来自这里的资源:https://github.com/jaiwalker/setup-laravel5-package