Php Laravel 5封装开发

Php Laravel 5封装开发,php,laravel,laravel-5,Php,Laravel,Laravel 5,我在Laravel5中创建包时遇到问题,因为工作台已被移除 正如在本文中一样,Goldorak建议我们必须自己创建自己的包结构 那么,如何手动创建工作台并为包开发做好准备?使用laravel workbench包: 通过添加到composer.json,可以在Laravel 5中添加Illumb/workbench包: 然后将WorkbenchServiceProvider添加到config/app.php文件中: 现在需要创建config/workbench.php文件,因为它已从Larave

我在Laravel5中创建包时遇到问题,因为工作台已被移除

正如在本文中一样,Goldorak建议我们必须自己创建自己的包结构

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

使用laravel workbench包: 通过添加到composer.json,可以在Laravel 5中添加Illumb/workbench包:

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

现在需要创建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' => '',
];
创建自己的包结构 在本例中,我们将在packages目录中创建名为awesome的包

以下是包结构:

packages/
  vendor/
    awesome/
      src/
        Awesome.php
      composer.json
供应商:您的供应商名称,通常是您的github用户名。 真棒:你的包裹的名字 src:您将业务逻辑放在哪里 要生成composer.json文件,可以在packages/vendor/awome目录中使用以下命令:

composer init
现在,我们使用一个简单的方法在src目录中创建一个Awesome.php类:

<?php namespace Vendor/Awesome;

class Awesome
{
    public static function printAwesomeness()
    {
        echo 'Awesome';
    }
}
我们把作曲家的自动装弹机扔了

composer dump-autoload
现在,您可以在laravel 5项目的任何地方使用您的软件包。如果您需要一些特定于laravel的功能,如服务提供商或视图发布,请按照。

laravel 5标准(不带工作台)中的说明使用它们

第1组:像往常一样安装laravel

步骤2:创建包文件夹和服务提供商

在根目录中创建一个文件夹,调用packages/vendorName/packageName/src,例如:root/packages/jai/Contact/src

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

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

注:如果您愿意,您可以进行DDT测试;在启动功能中,转到步骤3,但您已经复制了可能要创建视图、路由、配置和控制器的文件。请检查下面的链接

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

"psr-4": { "App\": "app/", "Jai\Contact\": "packages/jai/contact/src/", }
步骤4:在应用程序配置中添加服务提供商

在providers下的root/conifg/app.php中,添加包服务提供商以将包挂接

   'Jai\Contact\ContactServiceProvider',
步骤5:运行composer dump autoload-确保没有错误

全部完成-现在您可以通过url访问您的包-您的网站/联系人


这里的资源:

您可以在这个名为。composer global需要hadefication/packman,这只是Laravel的一个简单的软件包创建者。

重复:@MartirosAghajanyan,这篇文章没有回答我的问题。这就是为什么我在这里问这个问题,你们可以看到我指向那个帖子的链接。我在这里问的是如何手动创建这些文件结构-结构应该是什么样的-并准备好所有需要的配置,以我们的新文件结构进行包开发。我修复了我的答案,我在laravel 5 beta版和不稳定的版本上测试了它,它现在在stable上工作。@user1995781事实上,您完全可以在没有workbench的情况下编写一个包。workbench命令只是创建一个包含一些基本文件的目录,但您可以从头开始创建。我将更新我的答案,并解释如何在没有它的情况下编写自己的包。@user1995781:删除的原因是包开发应该是框架无关的,所以workbench所做的应该在PHP级别上解决。根据laravel播客的说法,Taylor Otwell正在开发一种与workbench相同的工具。@Nicolas Bouvais是的,一切都是正确的,我找到了解决方案,我的问题是,当我运行composer dump autoload时,当我加载页面时,它会崩溃,L5找不到我的服务提供商,当我运行composer dump autoload-o时,它就像charm一样工作。你知道是什么导致了这种行为吗?一个简单的控制器示例,说明如何访问该包会很有用。可能对某些人来说很容易,但会完成答案。我跟随了3次。不起作用。继续说:ProviderRepository.php第146行中的FatalErrorException:未找到类“Jai\Contact\ContactServiceProvider”您在哪个Laravel版本上使用此选项?
"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Vendor\\Awesome\\": "packages/vendor/awesome/src"
    }
},
composer dump-autoload
"psr-4": { "App\": "app/", "Jai\Contact\": "packages/jai/contact/src/", }
   'Jai\Contact\ContactServiceProvider',