Laravel 创建自己的扩展包 package

Laravel 扩展包开发与发布指南 作为一名 Laravel 开发者,你可能经常使用扩展包来增强你的应用程序功能。但是,有时候你可能无法找到满足你需求的现有扩展包,这时你可以考虑自己开发一个扩展包。本文将详细介绍如何从开发到发布一个 Laravel 扩展包,并提供相应的源代码示例。 阅读详情


安装laravel之后,我们会根据自己的需要创建自己的扩展包,本文将带你创建属于自己的laravel package 。

1. 创建我们自己的文件包目录

在项目的更目录中创建的 packages 文件夹,与 app 目录同级。

|-app
|-packages
|--- xingfupeng
|----- my-first-laravel-package
|------- src
...

如图:
在这里插入图片描述
创建目录很简单,接下来我们初始化 package 包。

2. composer 初始化 package 包

composer init

composer.json 文件创建如下:

# packages/xingfupeng/my-first-laravel-package/composer.json
{
    "name": "xingfupeng/my-first-laravel-package",
    "description": "xingfupeng's first laravel package",
    "authors": [
        {
            "name": "xingfupeng",
            "email": "xingfupeng@163.com"
        }
    ],
    "require": {}
}

注意: composer.json 文件中的 name 和 authors 等信息要根据自己的内容填写。

如果不想走 composer init 也可以直接复制到 packages/xingfupeng/my-first-laravel-package 目录下。到这里初始化 package 包完成。下一步我们要让 laravel 根目录中的composer.json 自动加载 xingfupeng/my-first-laravel-package

3. 配置composer dump-autoload

在 laravel 根目录的 composer.json 文件中配置如下:按照 psr-4 的规范自动加载。

# / 项目跟目录
"autoload": {
        "psr-4": {
            "App\\": "app/",
            "XingFuPeng\\FirstLaravelPackage\\": "packages/xingfupeng/my-first-laravel-package/src"
        }
    },

配置好之后,我们需要在 laravel 的根目录下的 composer.json 同目录执行 composer dump-autoload

4. 添加服务容器

服务容器是主要的入口,我们用 artisan 创建一个服务容器。

php artisan make:provider XingFuPengLaravelPackageServiceProvider

命令执行完后,会在 app/Providers 目录下创建该文件,然后我们将这个容器文件移动到 packages/xingfupeng/my-first-laravel-package/src 目录下。

此时的容器命名空间还是 namespace App\Providers; 将其改为 namespace XingFuPeng\FirstLaravelPackage; , 这个命名空间是 vendor/package_name 的形式,
也就是 composer 自动加载的命名空间。其他都不用动。

在这里插入图片描述

创建完成服务容器后要注册的 config/app.php 配置中的 providers[] 数组中:

# app/config/app.php
'providers' => [
	App\Providers\RouteServiceProvider::class,
	// XingFuPeng Laravel Package Service Provider
        XingFuPeng\FirstLaravelPackage\XingFuPengLaravelPackageServiceProvider::class
],

好了,此时我们已经创建好服务并注册到 app 中了,接下来我们写一些简单的路由来访问以下容器的内容。

5. 创建路由文件

在 packages/xingfupeng/my-first-laravel-package/src 目录下创建 routes.php

# packages/xingfupeng/my-first-laravel-package/src/routes.php
Route::get('hello', function(){
	echo 'Hello from the my-first-laravel-package package!';
});

创建完路由后,需要在服务的 boot() 方法中包含进去。

# packages/xingfupeng/my-first-laravel-package/src/XingFuPengLaravelPackageServiceProvider.php
public function boot()
{
    $this->loadRoutesFrom(__DIR__ . '/routes.php');
}

让后我们在浏览器中访问以下:
在这里插入图片描述

浏览器访问成功了!!!

小开心一下,接下来我们创建控制器。

6. 创建控制器

还是用 artisan 命令创建控制器:

php artisan make:controller HelloWorldController

跟服务文件创建一样,把创建的 HelloWorldController 移动到 packages/xingfupeng/my-first-laravel-package/src/controllers 下,为了控制器以后都可以放在一起,我建了一个controllers目录,更改了控制器的命名空间同时添加了两个方法。这里要注意的是 Controller 一定要再use 一下 use App\Http\Controllers\Controller; 继承 app 的父级控制器。

# packages/xingfupeng/my-first-laravel-package/src/controllers/HelloWorldController.php

<?php

// namespace App\Http\Controllers;
namespace XingFuPeng\FirstLaravelPackage\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class HelloWorldController extends Controller
{
    public function hello($name)
    {
        echo 'HelloWorldController hello ' . $name;
    }

    public function world($name)
    {
        echo 'HelloWorldController world ' . $name;
    }
}

控制器创建好之后,我们需要注册到服务器中:

# packages/xingfupeng/my-first-laravel-package/src/XingFuPengLaravelPackageServiceProvider.php

public function register()
    {
        // register our controller
        $this->app->make('XingFuPeng\FirstLaravelPackage\Controllers\HelloWorldController');
    }

最后呢我们在路由文件中添加两个路由:

# packages/xingfupeng/my-first-laravel-package/src/routes.php

Route::get('hello-world/hello/{name}', 'XingFuPeng\FirstLaravelPackage\Controllers\HelloWorldController@hello');
Route::get('hello-world/world/{name}', 'XingFuPeng\FirstLaravelPackage\Controllers\HelloWorldController@world');

分别访问一下:
在这里插入图片描述

在这里插入图片描述

然后我们想加载模板文件怎么操作呢,我们一起操作一下。

7. 添加模板

我们创建模板文件:

在这里插入图片描述

# packages/xingfupeng/my-first-laravel-package/src/view/hello.blade.php
<!DOCTYPE html>
<html>
<head>
    <title>HelloController hello.blade.php</title>
</head>
<body>
<h1>
    Your Input : {{ $name }}
</h1>
</body>
</html>

注册模板:

# packages/xingfupeng/my-first-laravel-package/src/XingFuPengLaravelPackageServiceProvider.php

public function register()
    {
        //
        // register our controller
        $this->app->make('XingFuPeng\FirstLaravelPackage\Controllers\HelloWorldController');
        $this->loadViewsFrom(__DIR__.'/views', 'xingfupeng');
    }

在控制器中调用模板:

# packages/xingfupeng/my-first-laravel-package/src/controllers/HelloWorldController.php

public function hello($name)
{
    //echo 'HelloWorldController hello ' . $name;
    return view('xingfupeng::hello', compact('name'));
}

public function world($name)
{
    // echo 'HelloWorldController world ' . $name;
    return view('xingfupeng::hello', compact('name'));
}

再次访问如下:

在这里插入图片描述

在这里插入图片描述

至此,我们已经弄好自己的 laravel package 了。

恭喜你掌握了。

8. 发布静态文件

例如上面的第 7 步我们需要一个外部 CSS 文件来渲染页面怎么处理?
在 src 下面创建 public/css/style.css 文件

/* packages/xingfupeng/my-first-laravel-package/src/public/css/style.css */
h1 {
    color: #FF0000;
}

模板中进行应用

那么,style.css 文件如何生效的呢?
我们只需要将 style.css 文件发布到更目录的 public 目录下,xingfupeng 服务配置如下:

#packages/xingfupeng/my-first-laravel-package/src/XingFuPengLaravelPackageServiceProvider.php
public function boot()
{
	// ...
	
    // 把静态资源发布到laravel public/xingfupeng 目录下
    $this->publishes([
        __DIR__ . DIRECTORY_SEPARATOR . 'public' => public_path('xingfupeng'),
    ], 'public');
    
    // ...
}

在 laravel 根目录下执行:

//  --force 覆盖发布文件
php artisan vendor:publish --force

在这里插入图片描述

找到对应的服务编号输入回车。

在这里插入图片描述
将文件发布到指定的目录了。此时看 public 目录下已生成响应的文件。

在这里插入图片描述

静态文件发布后记得在模板文件中引用静态资源

<!DOCTYPE html>
<html>
<head>
    <title>HelloController hello.blade.php</title>
    <!-- 引用静态资源 -->
    <link rel="stylesheet" href="/xingfupeng/css/style.css">
</head>
<body>
<h1>
    Your Input : {{ $name }}
</h1>
<h2>
    Config : {{ $package_name }}
</h2>
</body>
</html>

我们在看一下页面:已经生效为红色字体。
在这里插入图片描述
(由于博文更新时间较长,域名有所改动忽略域名即可)

9. 发布配置文件

与发布静态文件一样
创建 config/xingfupeng.php 文件,配置选项为包名称。

# packages/xingfupeng/my-first-laravel-package/src/config/xingfupeng.php
return [
    'package_name' => 'xingfupeng_my_first_laravel_package'
];

配置服务文件

#packages/xingfupeng/my-first-laravel-package/src/XingFuPengLaravelPackageServiceProvider.php
public function boot()
{
	// ...
	
    // 发布配置文件到 laravel config/xingfupeng.php
        $this->publishes([
            __DIR__ . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'xingfupeng.php' => config_path('xingfupeng.php'),
        ], 'config');
    
    // ...
}

在 laravel 根目录下执行发布:

//  --force 覆盖发布文件
php artisan vendor:publish --force

在这里插入图片描述
已覆盖之前的发布文件

我们怎么调取呢?
我们在控制器调用配置文件,在模板中输出吧。

# packages/xingfupeng/my-first-laravel-package/src/controllers/HelloWorldController.php
public function hello($name)
{
    //echo 'HelloWorldController hello ' . $name;
    $package_name = config('xingfupeng.package_name','null');
    return view('xingfupeng::hello', compact('name','package_name'));
}
# packages/xingfupeng/my-first-laravel-package/src/view/hello.blade.php
<!DOCTYPE html>
<html>
<head>
    <title>HelloController hello.blade.php</title>
</head>
<body>
<h1>
    Your Input : {{ $name }}
</h1>
<h2>
    Config : {{ $package_name }}
</h2>
</body>
</html>

我们运行一下模板查看一下:我们配置的包名称已被正确读取。
在这里插入图片描述

10. 中间件

创建中间件,复制一个laravel的中间件修改一下命名空间和类名称即可。

# packages/xingfupeng/my-first-laravel-package/src/Middleware/ApiAuthMiddleware.php
<?php

namespace XingFuPeng\FirstLaravelPackage\Middleware;

use Closure;

class ApiAuthMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
    	// $status true/false 当满足条件时会进入 if 操作,否则按照 laravel 预定的执行。
        $status = true;
        if ($status) {
            return 'api中间件验证不通过';
        }
        return $next($request);
    }
}

中间件创建完了我们想要的结果就是在路由中直接使用。

# packages/xingfupeng/my-first-laravel-package/src/routes.php

Route::middleware(['xingfupeng.api'])->group(function ($router) {
    $router->get('xingfupeng/api', function () {
        return 'api success';
    });
});

我们访问一下:
在这里插入图片描述

这时候中间件一定是找不到的,我们怎么将上面的中间件注册到laravel当中呢?

配置服务文件:
1、添加中间件的重命名方法
2、boot 方法中调用添加中间件

#packages/xingfupeng/my-first-laravel-package/src/XingFuPengLaravelPackageServiceProvider.php

// boot 方法中添加如下代码
public function boot()
{
	// ...
    $this->addMiddlewareAlias('xingfupeng.api', ApiAuthMiddleware::class);
    // ...
}


# 添加中间件的别名方法
protected function addMiddlewareAlias($name, $class)
{
    $router = $this->app['router'];

    if (method_exists($router, 'aliasMiddleware')) {
        return $router->aliasMiddleware($name, $class);
    }

    return $router->middleware($name, $class);
}

我们在访问一下:

在这里插入图片描述

把中间件中的 $status = true 改为 false 再访问:

在这里插入图片描述

至此我们已经掌握了创建 laravel 包的大部分内容。程序目录结构可根据理解和自己的设置设计更合理的包目录结构。若有其他拓展后续再补充也可留言交流。

中国城市统计年鉴1991-2024面板数据真正无缺失值填补指标说明 大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。 阅读详情

相关推荐

RS485差分信号A下拉B上拉导致的乱码问题:一个硬件工程师的踩坑实录

本文通过一个工业网关项目中的RS485通信乱码故障,深入剖析了差分信号偏置电路设计的核心要点。文章详细记录了从波形抓取、原理图分析到多节点冲突排查的全过程,重点揭示了A下拉、B上拉这一反常规配置如何导致总线空闲状态不稳定,进而引发数据包末尾多出0x00字节及前导乱码的问题,并最终给出了硬件与软件协同的系统级解决方案与设计准则。

weixin_29159441的博客 236

Laravel Package 使用教程

Laravel Package 使用教程 1. 项目的目录结构及介绍 laravel-package/ ├── src/ │ ├── Commands/ │ ├── Providers/ │ ├── Services/ │ └── LaravelPackageServiceProvider.php ├── config/ │ └── laravel-package.php ├─...

gitblog_00664的博客 494

SAP采购订单行项目增强实战:用BADI ME_GUI_PO_CUST添加自定义字段(避坑指南)

本文详细解析了如何通过BADI ME_GUI_PO_CUST在SAP采购订单行项目中添加自定义字段,包括技术架构理解、字段扩展步骤、自定义函数组创建及BADI实现。文章特别强调了避开官方文档未提及的陷阱,如字段映射限制和屏幕显示问题,并提供了高级优化技巧和性能建议。

weixin_30402343的博客 594

Laravel Package 开发教程

Laravel Package 开发教程 项目介绍 prooph/laravel-package 是一个用于 Laravel 框架的扩展包,旨在提供高级的事件处理和 CQRS(命令查询职责分离)功能。这个包是 prooph 组件的一部分,prooph 是一个用于构建事件驱动应用程序的 PHP 工具集。 项目快速启动 安装 首先,确保你已经安装了 Laravel 项目。然后,通过 Composer ...

gitblog_00929的博客 643

用MATLAB从零实现六足机器人步态仿真:交替三角与波动步态保姆级教程

本文详细介绍了如何使用MATLAB从零实现六足机器人的两种经典步态仿真:交替三角支撑步态和波动步态。通过参数定义、相位设置、运动轨迹生成和三维可视化等步骤,帮助读者掌握六足机器人步态规划的核心技术。教程包含完整代码和详细解析,适合机器人爱好者和相关专业学生学习实践。

weixin_26765363的博客 228

5G NR 双连接与载波聚合:PCell、SCell、PScell、SpCell 角色全解析

本文全面解析了5G NR中双连接与载波聚合技术的关键概念,详细介绍了PCell、SCell、PScell和SpCell的角色与功能。通过实际案例和配置示例,帮助读者理解这些小区在提升网络覆盖和速率方面的作用,以及在实际组网中的优化策略。

weixin_33220360的博客 373

laravel开发composer扩展包

开发自己的laravel框架composer扩展包

码奴一只猿 778

AI驱动的iOS逆向工程自动化:14阶段工作流与Ghidra集成实践

逆向工程是软件安全分析的核心技术,通过反汇编、调试等手段解析程序内部逻辑与数据流。其原理在于将编译后的二进制代码还原为可理解的逻辑结构,从而发现潜在漏洞或理解软件行为。在移动安全领域,iOS逆向工程具有重要技术价值,能够用于安全审计、漏洞挖掘与恶意软件分析。传统iOS逆向依赖ipsw、class-dump、Frida等工具链组合,存在学习曲线陡峭与流程碎片化问题。本文介绍的ios-reverse-skills项目创新性地将14阶段逆向工程方法论封装为AI可调用的标准化脚本集,通过Ghidra脚本实现Swif

weixin_27268733的博客 432

idea创建包怎么让包分层_Laravel 创建自己的扩展包 package

Laravel 如何创建自己的扩展包 package安装laravel之后,我们会根据自己的需要创建自己的扩展包,本文将带你创建属于自己的laravel package 。1. 创建我们自己的文件包目录在项目的更目录中创建的 packages 文件夹,与 app 目录同级。|-app|-packages|--- customtest|----- my-first-laravel-package|-...

weixin_31018573的博客 566

后悔没早点知道!用AI只需四步,一次性讲清高质量论文引言写法(附公式+AI指令)

帮我写SCI 论文撰写引言的“研究背景与重要性”,要求从本研究所属领域的小背景切入,使用现在时态描述该领域的总体状况与发展趋势,突出其在学术研究、实际应用或社会层面的重要价值,并通过一个吸引人的钩子开头,如关键事实、现实问题或学术热点,引导读者关注本主题的重要性。梳理你所在领域和你研究相关的关键成果,但不能罗列所有文献,重点抓核心脉络,这部分最重要的实际上是让你了解别人的研究脉络,然后在每个关键的节点上,引用几篇关键参考文献作支撑,来体现你对领域的熟悉度就可以了。3)研究缺口模糊,没法突出问题的真实价值;

qq_64378896的博客 116

【Claude Code 源码解析教程】总体大纲

本教程旨在深入解析 Anthropic Claude Code 项目的源码架构和实现细节。Claude Code 是一个基于 TypeScript + Bun 构建的 AI 编程助手 CLI 工具,代号 "Tengu",具有复杂的多模块架构和丰富的功能特性。本教程基于Claude Code 的源码分析来生成,将帮助您全面掌握 Claude Code 的源码架构和实现细节,为开发类似 AI 编程助手工具奠定坚实基础。

rengang66的博客 387

Laravel Package Maker 项目教程

Laravel Package Maker 项目教程 1. 项目目录结构及介绍 Laravel Package Maker 项目的目录结构如下: ├── package │ ├── codecov.yml │ ├── composer.json │ ├── CONTRIBUTING.md │ ├── .gitignore │ ├── LICENSE.md │ ├── php...

gitblog_00072的博客 744

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Laravel 扩展包开发指南

Laravel扩展包开发指南:从创建到发布的完整流程。首先明确功能边界并遵循命名规范(vendor/package-name)。初始化项目时建立标准目录结构和Composer配置。核心开发包括服务提供者注册、功能类实现、Facade门面设计。提供配置文件、路由视图、数据库迁移模板。配置本地测试环境后,可发布到Packagist。关键实践包括版本兼容、CI集成、文档规范和语义化版本控制。该流程覆盖扩展包全生命周期,适用于支付、SEO等特定功能开发。

深山技术宅的博客 979

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

实战-基于laravel的rbac扩展包的开发与发布

实战-基于laravel的rbac扩展包的开发与发布前提准备工作创建扩展包目录合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前提 在项目发开过程中经常会更换不同的框架,每次在使用新的框架的同时,虽然已经有很多基于后台权限的二次封装,但是除

Bennett_G博客 661

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Laravel扩展包开发全流程指南

Laravel扩展包是PHP生态中实现功能复用的重要方式,通过Composer依赖管理和PSR-4自动加载标准实现模块化开发。其核心原理基于服务提供者机制,作为扩展包与Laravel框架的桥梁,负责注册服务、配置和资源。这种设计模式显著提升了开发效率,使开发者能快速集成如Carbon日期处理等常用功能。在实际工程中,扩展包开发涉及配置系统、视图集成、数据库迁移等关键技术点,需遵循语义化版本规范进行发布。通过PHPUnit测试和GitHub Actions持续集成,可确保扩展包质量。典型应用场景包括开发通用工

germmy-神一样的开发 557

Laravel扩展包开发指南:从基础到实践

Laravel扩展包是PHP开发中实现功能模块化的重要方式,通过Composer依赖管理工具与Laravel框架深度集成。其核心原理在于服务提供者(ServiceProvider)机制,通过register()和boot()方法实现服务绑定与资源加载。这种架构设计显著提升了代码复用性,使开发者能够快速构建包含路由、数据库迁移、视图等完整组件的功能模块。在实际开发中,标准化目录结构、自动化注册机制和资源发布流程是关键实践要点。典型的应用场景包括开发支付网关、第三方API集成等通用功能组件。本文以Laravel

weixin_30699955的博客 356

Laravel扩展包开发全流程指南与安全实践

Laravel扩展包是PHP生态中实现功能复用的重要技术方案,通过Composer依赖管理实现模块化开发。其核心原理是利用服务提供者机制与框架进行深度集成,支持路由、数据库迁移等全套功能封装。这种开发模式能显著提升代码复用率,特别适合支付网关、CMS系统等通用业务场景的快速实现。在Laravel 9等新版本中,反序列化安全链等问题的出现,使得扩展包开发需要更多安全考量。本文以Laravel扩展包为例,详解从环境配置、架构设计到CI集成的完整开发流程,并重点介绍如何结合PestPHP测试框架和GitHub A

weixin_30596023的博客 351

package-skeleton-laravel:终极Laravel包开发骨架完全指南

package-skeleton-laravel是一个专为Spatie Laravel包设计的骨架仓库,为开发者提供了快速构建高质量Laravel扩展包的完整解决方案。无论是新手还是有经验的开发者,都能通过这个强大的工具快速上手Laravel包开发,节省大量配置时间,专注于核心功能的实现。 ## 📋 为什么选择package-skeleton-laravel? 在Laravel生态系统中开发

gitblog_01101的博客 1005

laravel-package-top-100

排名 排名 下载次数 Star 数 扩展包 一句话描述 1 2883968 3968 intervention/image 图片处理扩展包,支持裁剪、水印等处理,使用教程请见https://phphub.org/topics/1903 2 2215372 3694 barryvdh/laravel-debugbar 页面调试工具栏 (对 phpdebugbar 的封装),教程请见:https://phphub.org/top.

qmister 468

Laravel Onboard快速开始教程:构建你的第一个用户引导流程

Laravel Onboard是一款强大的Laravel扩展包,专为构建用户引导流程设计。它提供了简洁的API和灵活的配置选项,帮助开发者轻松实现用户引导功能,提升用户体验和留存率。本教程将带你快速掌握如何使用Laravel Onboard构建你的第一个用户引导流程。 ## 为什么选择Laravel Onboard? 用户引导是现代Web应用不可或缺的一部分,良好的引导流程可以显著提高用户留存

gitblog_00040的博客 709

laravel扩展包开发步骤总结

1. 创建包 1 php artisan workbench vendor/package--resources 注: vendor:开发商名 package:包名 2.修改下包里composer.json中的authors 1 2 3 4 5 ...

weixin_30954265的博客 128

laravel-composer 发布扩展包

/home$cd blog /home/blog$ mkdir -ppackages/unrelaxs/eslog/src /home/blog目录下修改composer.json "psr-4": { "App\\": "app/", "Unrelaxs\\Eslog\\": "packages/unrelaxs/eslog/src" }, /home/blog$...

zhazhaji的博客 465

10步创建一个Laravel 5 package(翻译)

http://laraveldaily.com/how-to-create-a-laravel-5-package-in-10-easy-steps/

AlphaH的技术之旅 376
上一篇: laravel判断是否是ajax及postman模拟ajax请求
下一篇: Apache ab 测试工具分析
邢富鹏
博客等级 码龄9年 14粉丝 43原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值