资讯专栏INFORMATION COLUMN

Laravel 开发扩展包基本流程

AaronYuan / 2500人阅读

摘要:介绍在中就有开发的相关介绍这其中需要运用当然对于我们开发人员来说开发一个扩展包还是很值得学习的现在就来开发一个消息通知的扩展包扩展包的地址整个参照的新建包在生成好的项目中新建目录和同级接着在目录下新建包目录我们需要去项目下去声明包的命名空间

介绍

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

扩展包的地址:https://github.com/GeekGhc/LaraFlash

整个package参照 Jeffrey Way的Flash Packages

新建包

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

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

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

声明完毕之后别忘了去执行重新生成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": {
            "GeekGhcLaraFlash": "src/"
        },
        "files": [
            "src/GeekGhc/LaraFlash/function.php"
        ]
    }
}

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


我们这里继承了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(
        "GeekGhcLaraFlashSessionStore",
        "GeekGhcLaraFlashLaravelSessionStore"
    );

    $this->app->singleton("laraflash",function(){
        return $this->app->make("GeekGhcLaraFlashFlashNotifier");
    });
}

这边我们就绑定了封装好的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" => [
    GeekGhcLaraFlashMyFlashProvider::class,
];

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

"aliases" => [
    "LaraFlash"=>GeekGhcLaraFlashFlash::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://www.ucloud.cn/yun/22719.html

相关文章

  • 如何正确使用 Composer 安装 Laravel 扩展

    摘要:流程一新项目流程创建,并添加依赖到的扩展包运行,安装扩展包并生成提交到代码版本控制器中,如流程二项目协作者安装现有项目克隆项目后,根目录下直接运行从中安装指定版本的扩展包以及其依赖此流程适用于生产环境代码的部署。 本文经授权转自 PHPHub 社区 问题说明 我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的: showImg(https://dn-...

    BlackMass 评论0 收藏0
  • Laravel 深入核心系列教程

    摘要:前言年底了不太忙,最近一段时间也一直在研究,就想写篇关于比较深一点的教程系列啥的,于是就找到站长给开了写教程的渠道。优点的就是为艺术家创造的框架,它也是工程化的趋势。项目维护方便也是事实。如果有遇到问题可以直接在教程下面留言。 前言 年底了不太忙,最近一段时间也一直在研究laravel,就想写篇关于laravel比较深一点的教程系列啥的,于是就找到站长给开了写教程的渠道。由于第一次写,...

    wemall 评论0 收藏0
  • 人人必备的10个 Laravel 4 扩展

    摘要:更多扩展包中有丰富的扩展包来帮你完成几乎任何你想实现的功能。我们不能把所有的扩展包都整理出来,然而,这里还是列出了一些很有用的。总之,你几乎总是能够找到一个扩展包可以解决你当前的问题。 Laravel 是一个非常流行且简单易用的PHP框架,它提供了很多基础的工具(如 RESTful 路由、内置的ORM、模版等)使你能够快速的创建应用。这意味着你可以花费更少的时间来建立应用程序的模版,给...

    darkbug 评论0 收藏0
  • 基于Composer的Laravel扩展开发工作流

    使用场景 在引用第三方包的时候,对第三方包有改动需求,需要将代码放在自己的仓库;并且自己的其他项目也有需求引用自定义的第三方包;甚至自己会发布修改后的第三方包; 读完本文你讲获得: Git Submodule的基本使用 从本地加载第三方包 从自定义仓库地址获取扩展包 快速创建第三方包 本文是在我自己想要创建一个基础第三方包的时候记录下的操作步骤 1、利用git submoudle在已有项目中使...

    Faremax 评论0 收藏0
  • 如何开发、本地测试、发布 Laravel 扩展

    摘要:现在已经有了很多,关于如何开发扩展包的文章。提交代码到首先,需要把扩展包的代码提交到上,记录下版本库的地址,注意是。填写完毕,提交后,记得测试一次,完成首次同步,成功会提示信息。 现在已经有了很多,关于如何开发 Laravel 扩展包的文章。但是大多文章写的太过片面,不够完整,而且我在实际进行开发扩展包的时候,还是遇到了很多的问题,我把自己的开发经验,以及遇到的问题记录下来,分享给大家...

    nanchen2251 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<