Laravel 扩展包开发

  Packages是向Laravel中添加功能最重要的途径。composer.json中require的都是包。关于包的详细说明请查看官网 http://v4.golaravel.com/docs/4.2/packages . 下面一起创建一个简单的Package :

  1. 环境配置

  我们以Artisan的workbench命令来创建一个Package ,首先要配置 app/confg/workbench.php  

1 <?php
2
3 return array(
4
5     ‘name‘ => ‘brudeke‘,
6
7     ‘email‘ => ‘[email protected]‘,
8
9 );

 

 2. 创建Package

  其中vendor是厂商名称,用于区别相同名称的包;package是要创建的包名;  

1 php artisan workbench vendor/package --resources

  执行以上命令后会在根目录出现workbench目录,其中workbench/vendor/package/src/Vendor/Package目录下会自动生成PackageServiceProvider.php(以下称此文件为引导类),该文件相当于包的引导类。

  

  3. 在包中添加功能类

  在这里我们在包中添加一个工具类,在“引导类”的同级创建Utils/Turbo.php  

 1 <?php
 2
 3 namespace Vendor\Package\Utils;
 4
 5 use Illuminate\Http\RedirectResponse;
 6
 7 class Turbo {
 8
 9     public function __construct() {}
10
11     public function setUp(){
12         echo "this is a tool";
13     }
14 }

  4. 创建Facades

  Facades的功能就是美化类,可以使成员函数以静态成员的方式调用,在引导类同级创建Facades/Turbo.php  

 1 <?php
 2 namespace Vendor\Package\Facades;
 3
 4 use Illuminate\Support\Facades\Facade;
 5
 6 class Turbo extends Facade {
 7
 8     protected static function getFacadeAccessor() {
 9         return ‘turbo‘;
10     }
11 }

  

  5. 绑定功能类到Ioc容器

  修改引导类如下,其中$defer是表示延迟加载服务提供器。  

 1 <?php
 2 namespace Vendor\Package;
 3
 4 use Illuminate\Support\ServiceProvider;
 5
 6 class PackageServiceProvider extends ServiceProvider {
 7
 8     /**
 9      * Indicates if loading of the provider is deferred.
10      *
11      * @var bool
12      */
13     protected $defer = true;
14
15     /**
16      * Bootstrap the application events.
17      *
18      * @return void
19      */
20     public function boot(){
21         $this->package(‘vendor/package‘);
22     }
23
24     /**
25      * Register the service provider.
26      *
27      * @return void
28      */
29     public function register(){
30         $this->app->bindShared(‘turbo‘, function(){
31             return new \Vendor\Package\Utils\Turbo;
32         });
33     }
34
35     /**
36      * Get the services provided by the provider.
37      *
38      * @return array
39      */
40     public function provides()
41     {
42         return array(‘turbo‘);
43     }
44
45 }

  

  6.修改配置app/config/app.php

  在providers数组中添加以下代码:

1 "providers" => array(
2     ‘Vendor\Package\PackageServiceProvider‘,
3 ),

  在aliases数组中添加别名Turbo:

1 ‘aliases‘ => array(
2     ‘Turbo‘            =>  ‘Vendor\Package\Facades\Turbo‘,
3 ),

  接下来就可以在项目任何地方以Turbo::setUp()的形式运用包了。

时间: 2024-10-09 10:25:53

Laravel 扩展包开发的相关文章

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

 Laravel/ 1年前/  4022 /  11 现在已经有了很多,关于如何开发 Laravel 扩展包的文章.但是大多文章写的太过片面,不够完整,而且我在实际进行开发扩展包的时候,还是遇到了很多的问题,我把自己的开发经验,以及遇到的问题记录下来,分享给大家. 扩展包开发 1. 创建新项目,初始化扩展包配置 首先创建一个新的 Laravel 项目: composer create-project laravel/laravel laradmin -vvv 接下来在此项目中,创建目录 pack

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

如何开发 Laravel 扩展包并发布到 Composer 发布于 2019-01-22 cxp1539  1074 Vie 开发扩展包 我们来做一个根据第一个字符或者汉字生成头像的laravel扩展包.其实原理就是我们自己去写一个服务提供者,把服务提供者配置到app/providers数组中. 1.第一步现在自己项目中跟目录创建packages/cxp/avatar/src 2.修改 composer.json "psr-4": { "App\\": "

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

我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的: composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害. 因为 composer update 的逻辑是按照 composer.json 指定的扩展包版本规则,把所有扩展包更新到最新版本,注意,是 所有扩展包,举个例子,你在项目一开始的时候使用了 monolog,当时的配置信息是 "monolog/monolog": "1.*", 安装的是 mon

laravel扩展包服务提供者的注册的两种方式

一. 包自动发现 在 Laravel 应用的配置文件 config/app.php 中,providers 配置项定义了一个会被 Laravel 加载的服务提供者列表.当安装完新的扩展包后,在老版本中需要将扩展包的服务提供者添加到这个列表以便被 Laravel 使用.从 Laravel 5.5 开始,我们不必再手动添加服务提供者到该列表,而是将提供者定义到扩展包下 composer.json 文件的 extra 选项中,除了服务提供者之外,我们还可以以这种方式注册门面: "extra"

laravel 扩展包

1 验证错误中文提示 composer require "overtrue/laravel-lang:~3.0"   在app.php中修改:'locale' => 'zh-CN' 原文地址:https://www.cnblogs.com/muwu/p/9032313.html

Laravel大型项目系列教程(七)之7 扩展包和Artisan开发

本节教程将讲解扩展包开发和Artisan扩展开发,并浏览不同分辨率下的自适应效果.本节结束后整个教程就结束了,文章最后有完整版程序代码的下载. 1.扩展包开发 在前面开发中,我们经常要用到通知,如修改用户信息时视图要写 @if (Session::has('message')) <div class="am-alert am-alert-{{ Session::get('message')['type'] }}" data-am-alert> <p>{{ Ses

10个Laravel4开发人员必用扩展包

Laravel是一个新的基于最新PHP版本语法,支持IoC等设计模式的快速开发框架.目前最新版本为4.2,推荐安装PHP版本5.5+. 本文列举10个基本软件包,都是开发人员使用Laravel框架来构建WEB应用过程中应该要用到的,无需自己重复构建,如认证.调试.网站优化. 代码生成器(Laravel Generators) 使用简单的命令行就可以自动根据代码模板生成Model/View/Controller代码以及模块(Module). IDE帮手(Laravel IDE Helper) 可以

laravel 表单和HTML扩展包

安装 通过composer安装扩展包. 在根目录的composer.json文件中添加laravelcollective/html. "require": { "laravelcollective/html": "5.3.*" } 接着在终端中更新composer: composer update 然后,在config/app.php文件中添加新的providers: 'providers' => [ // ... Collective\H

一款你不容错过的Laravel后台管理扩展包 —— Voyager

http://laravelacademy.org/post/6401.html Posted on 2016年11月1日 by  学院君 1.简介 Voyager是一个你不容错过的Laravel后台管理扩展包,提供了CRUD操作.媒体管理.菜单构建.数据管理等操作. 官网:https://the-control-group.github.io/voyager/ Github:https://github.com/the-control-group/voyager 视频演示:https://de