Laravel扩展包开发详细步骤

1、第一步在自己项目中根目录(和app同目录)创建packages目录,进入packages目录创建www目录(最好是作者名之类的),进入www目录创建扩展包名,我们这里是测试,所以就叫packagetest,进入packagetest创建src目录,src下就是放置我们代码的地方。

2、修改项目根目录下composer.json

   "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Www\\": "packages/www/packagetest/src/"
        },
    },

3、执行composer dump-autoload
4、src 目录创建PackageTestService.php具体代码

5、src下创建服务提供者

publishes([
            __DIR__.'/config/packagetest.php' => config_path('packagetest.php'), // 发布配置文件到 laravel 的config 下
        ]);
    }

    public function register()
    {
        $this->app->singleton('packagetest', function () {
            return new PackageTestService();
        });
    }

6、src下创建config目录用来配置参数文件 config/packagetest.php

7、如果想使用门面,可以创建一个门面Facades目录 Facades/PackageTest.php

8、根目录config/app.php下注册服务

'providers' => [
    ……
    Www\PackageTestProvider::class,
],
'aliases' => [
    ……
    'PackageTest' => Www\Facades\PackageTest::class,
],

9、测试

image.png

10、发布扩展包php artisan vendor:publish
在packages/www/packagetest/目录下执行composer init生成composer.json

{
    "name": "www/packagetest",
    "description": "packagetest",
    "authors": [
        {
            "name": "name",
            "email": "[email protected]"
        }
    ],
    "require": {}
}

最后我们说 修改根目录的composer.json ,我们要发布我们的包,让所有人都能使用 composer 安装,那么执行如下步骤
去掉 添加的 那行 "Www\\": "packages/www/packagetest/src/" 然后 修改 packages/www/packagetest/composer.json 添加 autoload:

   "autoload": {
        "psr-4": {
            "Www\\": "src/"
        }
    },

在github创建个项目,将www目录的代码推送到github上。

打开https://packagist.org/ 注册个账号,提交git的地址就可以了。

最后,如果拓展包第三方没有提供 composer 安装方法,手动将其放在vendor目录下,那么,就需要手动添加需要自动加载的目录或者文件。
在根目录composer.json 文件里的 autoloadclassmap 里加上第三方包的文件夹路径,如果是单独自动加载某个文件,则将其放在 files 里面,执行composer dump-autoload
例如:"vendor/www"

"autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "vendor/www"
        ],
        "files":[
            "app/functions.php",
            "vendor/www/packagetest/src/Functions.php"
        ]
    },

你可能感兴趣的:(Laravel扩展包开发详细步骤)