创建一个空的laravel项目

composer create-project --prefer-dist laravel/laravel pkg
在新建的 laravel 项目中建立如下目录 qiangzhiwang\testpkg\src,packages 目录和 app 目录同级。我们开发包的代码都放在这个 src 目录中,qiangzhiwang和 testpkg完全自定义。
mkdir -p packages/qiangzhiwang/testpkg/src

修改项目composer.json设定 PSR-4 命名空间

"psr-4": {
"App\\": "app/",
"Qiangzhiwang\\Testpkg\\" : "packages/qiangzhiwang/testpkg/src"
},

进入命令行执行composer dump-autoload将autoload重新生成一次

composer dump-autoload

在qiangzhiwang/testpkg/src目录下书写一个简单的Md5Hasher类

<?phpnamespace Qiangzhiwang\Testpkg;/**
* Class Md5Hasher
* @package Qiangzhiwang\Testpkg
*/class Md5Hasher{
/**
* @param $value
* @param array $options
* @return string
*/
public function make($value, array $options =[])
{
$salt = isset($options['salt']) ? $options['salt'] :"";
return hash('md5',$value . $salt);
}
/**
* @param $value
* @param $hashValue
* @param array $options
* @return bool
*/
public function check($value , $hashValue , array $options=[])
{
$salt = isset($options['salt']) ? $options['salt'] :"";
return hash('md5',$value . $salt) === $hashValue;
}
}

接下来就是怎么把这个类融入到laravel容器中

php artisan make:provider Md5HasherProvider

执行完以上命令后,会在app/Providers目录下生成Md5HasherProvider.php将此文件移动到packages/qiangzhiwang/testpkg/src目录下

mv app/Providers/Md5HasherProvider.php packages/qiangzhiwang/testpkg/src/Md5HasherProvider.php

移动完成之后,要进行简单的修改以及完成容器注册

<?php
namespace Qiangzhiwang\Testpkg;
use Illuminate\Support\ServiceProvider;
class Md5HasherProvider extends ServiceProvider{
/**
* Register services.
*
* @return void
*/
public function register()
{
//
} /**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
//
$this->app->singleton("md5hash",function (){
return new Md5Hasher();
});
}
}

在config/app.php文件中,providers数组中最后一行添加上

'providers' => [

    /*
* Application Service Providers...
*/
.......
\Qiangzhiwang\Testpkg\Md5Hasher::class
],

测试使用

php artisan tinker
>>> app("md5hash")->make("")
=> "e10adc3949ba59abbe56e057f20f883e"

发布包提供给其他开发者下载,需要进入packages/qiangzhiwang/testpkg进行操作

composer init

然后通过git工具发布到github上,并同步https://packagist.org上,方可进行composer进行安装使用

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处

开发 Laravel 扩展的基本流程的更多相关文章

  1. 如何开发 Laravel 扩展包并发布到 Composer

    如何开发 Laravel 扩展包并发布到 Composer  发布于 2019-01-22 cxp1539  1074 Vie   开发扩展包 我们来做一个根据第一个字符或者汉字生成头像的larave ...

  2. 如何开发、本地测试、发布 Laravel 扩展包?

    如何开发.本地测试.发布 Laravel 扩展包?  Laravel/ 1年前/  4022 /  11   现在已经有了很多,关于如何开发 Laravel 扩展包的文章.但是大多文章写的太过片面,不 ...

  3. 基于Composer的Laravel扩展包开发工作流 ,实现laravle项目的文件管理(记录成长)

    PHP Composer包开发 基于Composer的Laravel扩展包开发工作流 实现laravle项目的文件管理,添加文件/文件夹,删除文件,查看代码/文件(代码支持缩进,支持语法高亮) com ...

  4. 【转】下载量最高的 100 个 Laravel 扩展包推荐

    说明 Laravel 另一个令人喜欢的地方,是拥有活跃的开发者社区,而活跃的开发者社区带来的,是繁华的扩展包生态. 本文对 Packagist 上打了 Laravel 标签 的扩展包进行整理,截止到现 ...

  5. 使用 Composer 安装Laravel扩展包的几种方法

    使用 Composer 安装Laravel扩展包的几种方法 以下的三种方法都是需要你在项目的根目录运行 第一种:composer install 如有 composer.lock 文件,直接安装,否则 ...

  6. 如何有效地开发 Jmix 扩展组件

    扩展组件的概念在使用 Jmix 框架开发中扮演着非常重要的角色.我们将在本文探索什么是扩展组件以及 Jmix Studio 在扩展组件开发和应用程序模块化方面能给开发者带来什么帮助. Jmix 中的扩 ...

  7. 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单

    手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单   手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩 ...

  8. Sublime Text 前端开发常用扩展插件推荐

    Sublime Text 前端开发常用扩展插件推荐 Sublime Text Sublime Text 是程序员们公认的编码神奇,拥有漂亮的用户界面和强大的功能 更重要的是,Sublime Text ...

  9. 【翻译】我钟爱的Visual Studio前端开发工具/扩展

    原文:[翻译]我钟爱的Visual Studio前端开发工具/扩展 怎么样让Visual Studio更好地编写HTML5, CSS3, JavaScript, jQuery,换句话说就是如何更好地做 ...

随机推荐

  1. 了解Spring的基本概念

    参考资料:https://www.jianshu.com/p/1c483bd8fd6d 在正式学习Spring框架之前,肯定有很多疑问,比如说: 1.Spring中经常出现的IOC.AOP.DI是什么 ...

  2. spark基于yarn的两种提交模式

    一.spark的三种提交模式 1.第一种,Spark内核架构,即standalone模式,基于Spark自己的Master-Worker集群. 2.第二种,基于YARN的yarn-cluster模式. ...

  3. day 35 协程 IO多路复用

    0.基于socket发送Http请求 import socket import requests # 方式一 ret = requests.get('https://www.baidu.com/s?w ...

  4. 概率分布的python实现

    接上篇概率分布,这篇文章讲概率分布在python的实现. 文中的公式使用LaTex语法,即在\begin{equation}至\end{equation}的内容可以在https://www.codec ...

  5. Stack Overflow 上 370万浏览量的一个问题:如何比较 Java 的字符串?

    在逛 Stack Overflow 的时候,发现了一些访问量像喜马拉雅山一样高的问题,比如说这个:如何比较 Java 的字符串?访问量足足有 370万+,这不得了啊!说明有很多很多的程序员被这个问题困 ...

  6. win10在python3.6里安装pycrypto-2.6.1

    简单的一步搞定 下载pycrypto-2.6.1-cp36-cp36m-win_amd64.whl文件,然后pip install即可 链接: https://pan.baidu.com/s/1Awl ...

  7. 螺旋矩阵II

    Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral ord ...

  8. Spring 框架基础(06):Mvc架构模式简介,执行流程详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.SpringMvc框架简介 1.Mvc设计理念 MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集 ...

  9. Android Jni开发,报com.android.ide.common.process.ProcessException: Error configuring 错误解决方案

    今天在练习JNI项目时,Android studio版本为:3.1.3,Gradle版本为4.4.由于Android studio 3.X弃用了 android.useDeprecatedNdk=tr ...

  10. mybatis中因为不理解$与#而出现的bug

    最近项目中遇到一个bug,正常的流程是这样的:要上传一个应用,首先检查系统中是否已经存在这个应用的更高版本,如果存在,则上传操作将被取消. bug体现为当传入系统中存在的所有应用与新上传的应用的ver ...