Laravel 开发扩展包基本流程

 2023-09-15 阅读 28 评论 0

摘要:介绍 在Laravel中就有Laravel Composer Package开发的相关介绍 这其中需要运用 Service Providers 当然对于我们Laravel开发人员来说 开发一个扩展包还是很值得学习的 现在就来开发一个消息通知的扩展包 laravel框架,扩展包的地址:https://github.com/GeekGhc/LaraFlash 整个

介绍

Laravel中就有Laravel Composer Package开发的相关介绍 这其中需要运用 Service Providers 当然对于我们Laravel开发人员
来说 开发一个扩展包还是很值得学习的 现在就来开发一个消息通知的扩展包

laravel框架,扩展包的地址:https://github.com/GeekGhc/LaraFlash

整个package参照 Jeffrey Way的Flash Packages

新建包

thinkphp扩展开发、在生成好的Laravel项目中新建packages目录(和app同级) 接着在packages目录下新建包目录 packages/geekghc/laraflash

我们需要去laravel项目下去声明包的命名空间:

"autoload": {"classmap": ["database"],"psr-4": {"App\\": "app/","GeekGhc\\LaraFlash\\":"packages/geekghc/laraflash/src/"}
},

开发firefox扩展程序。声明完毕之后别忘了去执行重新生成autoload文件

$ composer dump-autoload

我们需要新建src目录来存放我们的源文件

接着因为我们是开发一个扩展包 之后还需要进行测试开发 所以我们去生成一个composer.json文件

$ composer init

填写完基本信息之后 在packages/geekghc/laraflash目录下就会生成一个composer.json文件:

我先给出

{"name": "geekghc/flash","description": "flash for laravel","license": "MIT","authors": [{"name": "GeekGhc","email": "ghcgavin@sina.com"}],"minimum-stability": "dev","require": {"php": ">=5.5.9",},"require-dev": {"phpunit/phpunit": "~5.7","mockery/mockery": "0.9.*"},"autoload": {"psr-0": {"GeekGhc\\LaraFlash": "src/"},"files": ["src/GeekGhc/LaraFlash/function.php"]}
}

完成好composer.json后 我们可以去src/GeekGhc/LaraFlash目录下新建一个Flash.php

<?php
namespace GeekGhc\LaraFlash;
use Illuminate\Support\Facades\Facade;
class Flash extends Facade
{public static function getFacadeAccessor(){return 'laraflash';}
}

我们这里继承了Facade类,用Facades可以访问IoC容器中注册的类 这样我们就可以去调用注册的类

同时我们需要去新建一个Service Provider

$ php artisan make:provider FlashProvider

将生成的 app/Providers/FlashProvider.php 文件移动到我们的 packages/geekghc/laraflash/src/GeekGhc/LaraFlash/ 目录下面,并注册 FlashProviderconfig/app.php

FlsahProvider里面我们去写一下之后我们需要绑定的类:

public function register()
{$this->app->bind('GeekGhc\LaraFlash\SessionStore','GeekGhc\LaraFlash\LaravelSessionStore');$this->app->singleton('laraflash',function(){return $this->app->make('GeekGhc\LaraFlash\FlashNotifier');});
}

这边我们就绑定了封装好的SessionStore 之后我们去配置一下视图的路径

public function boot()
{$this->loadViewsFrom(__DIR__.'/../../views','laraflash');$this->publishes([__DIR__.'/../../views'=>base_path('resources/views/vendor/laraFlash'),]);
}

这里我们就发布了我们的视图文件 如果在项目里去执行

$ php artisan vendor:publish

我们就可以在resources/views/vendor/laraFlash去自定义自己需要的样式效果

接着在config/app.php去注册我们的服务

'providers' => [GeekGhc\LaraFlash\MyFlashProvider::class,
];

为了方便使用 可以再去添加一个alias

'aliases' => ['LaraFlash'=>GeekGhc\LaraFlash\Flash::class,
];

接着我们可以去实现flash的主要功能服务 每个包的功能都根据需求而来 这里也不多做介绍
最后的目录结构是这样的

|
|—— packages 
| |—— geekghc
|   |—— laraflash 
|     |—— src            源文件
|       |—— GeekGhc      源文件
|         |—— LaraFlash     
|           |—— Flash.php     
|           |—— FlashNotifier.php     
|           |—— function.php     
|           |—— FlashProvider.php     
|           |—— SessionStore.php     
|           |—— LaravelSessionStore.php     
|       |—— views        视图文件
|     |—— tests          测试目录
|     |—— vendor         测试需要的包
|     |—— .gitignore    
|     |—— composer.json    
|     |—— composer.lock    
|     |—— phpunit.xml  
|     |—— readme.md

这样的话 我们就在本地写好了扩展包 我们其实可以去创建一个控制器去测试我们这个包是否正常

在视图home.blade.php我们就可以去包含views里面的视图文件

@include('laraflash::notification')

或者

@include('laraflash::header-notification')

接着在控制器去使用类似这样的形式:

  • LaraFlash::success('Message')

  • LaraFlash::info('Message')

  • LaraFlash::error('Message')

  • LaraFlash::warning('Message')

包的具体使用去GeekGhc/LaraFlash看一下具体使用就知道了

最后的效果大概就是这样的:
图片描述
图片描述

显示正常之后我们就可以去发布我们的package

github先创建一个仓库 当然我这里的就是创建了LaraFlash这个远程仓库

紧接着我们去推好我们的代码到github

接着我们需要去仓库的setting => Intergrations&services添加Packagist服务(填写好用户名和Token)

添加完毕之后去Packagist Submit这个仓库(提供远程仓库的地址)

github进入packagist测试通过之后就ok了

因为我们之前定义的dev版本 如果后期有人提出了一些issues你去修改了自己的package

那么我们会去增加别的tag 也是就是说你修改package之后 再去添加一个tag:

$ git tag 2.0 -a

填写说明信息后 推送这个tag:

$ git push --tags

这样一来我们就发布了v2.0这个版本 这就是我们发布扩展包大概流程

博客文章地址Laravel Package

参考资料

  • Laravel Composer Package 开发简明教程

  • Laravel 的扩展插件开发指南

  • Laravel Package Development

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/64433.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息