laravel 5 自laravel 定义全局函数数,怎么弄

Laravel 5.1中进行自定义包开发的例子-Php框架模板-Php教程-壹聚教程网Laravel 5.1中进行自定义包开发的例子
Laravel 5.1中进行自定义包开发的例子,我们用过许多的工具都可以自定义自己的开发工具及开发包了,下面来看Laravel 5.1开发包的实现方法。
1、安装Laravel
已安装Laravel的略过本步骤,未安装的参考Laravel安装文档:Laravel 5.1安装及配置
2、创建目录和服务提供者
在根目录下创建文件夹 packages/jai/contact/src
进入src目录并创建一个服务提供者ContactServiceprovider.php:
&?php namespace Jai\C
use Illuminate\Support\ServiceP
use Illuminate\Routing\R
class ContactServiceprovider extends ServiceProvider
&&&& * Indicates if loading of the provider is deferred.
&&&& * @var bool
&&& protected $defer =
&&& public function boot()
&&&&&&& $this-&loadViewsFrom(realpath(__DIR__.'/../views'), 'contact');
&&&&&&& $this-&setupRoutes($this-&app-&router);
&&&&&&& // this for conig
&&&&&&& $this-&publishes([
&&&&&&&&&&& __DIR__.'/config/contact.php' =& config_path('contact.php'),
&&&&&&& ]);
&&&& * Define the routes for the application.
&&&& * @param \Illuminate\Routing\Router $router
&&&& * @return void
&&& public function setupRoutes(Router $router)
&&&&&&& $router-&group(['namespace' =& 'Jai\Contact\Http\Controllers'], function($router)
&&&&&&&&&&& require __DIR__.'/Http/routes.php';
&&&&&&& });
&&& public function register()
&&&&&&& $this-&registerContact();
&&&&&&& config([
&&&&&&&&&&& 'config/contact.php',
&&&&&&& ]);
&&& private function registerContact()
&&&&&&& $this-&app-&bind('contact',function($app){
&&&&&&&&&&& return new Contact($app);
&&&&&&& });
在src目录下新建一个Http目录并在其中创建一个routes.php:
Route::get('contact', 'ContactController@index');
创建控制器
在Http目录下新建Controllers目录并在其中创建控制器ContactController.php:
&?php namespace Jai\Contact\Http\C
use App\Http\Controllers\C
use Illuminate\Support\Facades\C
class ContactController extends Controller
&&&& * Show the application welcome screen to the user.
&&&& * @return Response
&&& public function index()
&&&&&&& dd(Config::get(&contact.message&));
&&&&&&& return view('contact::contact');
创建配置文件
在src目录下新建config目录并在其中创建配置文件contact.php:
&&& return [
&&&&&&& &message& =& &Welcome to your new package&
创建视图文件
在packages/jai/contact目录下创建views文件夹,并在其中创建视图文件template.blade.php:
&&& &head&
&&&&&&& &meta charset=&UTF-8&&
&&&&&&& &title&title&/title&
&&& &/head&
&&& &body&
&&&&&&& @yield('content')
&&& &/body&
和视图文件contact.blade.php:
@extends('contact::template')
@section('content')
Laravel Academy
最终生成的目录结构如下:
3、添加包路径到composer.json
在根目录下修改composer.json,将&Jai\\Contact\\&: &packages/jai/contact/src/&添加到r-4:
&psr-4&: {
&&& &App\\&: &app/&,
&&& &Jai\\Contact\\&: &packages/jai/contact/src/&
4、注册服务提供者
在Laravel应用根目录下修改config/app.php,将服务提供者追加到providers数组:
Jai\Contact\ContactServiceProvider::class
5、加载包并发布资源
完成上述操作之后还要在命令行执行两个命令,首先在应用根目录下运行
composer dump-autoload
来更新Composer的autoloader,然后运行
php artisan vendor:publish
将自定义包的配置文件发布到应用根目录的config目录下以便可以访问。
6、在浏览器中测试
完成上述操作后即可在浏览器中访问http://laravel.app:8000/contact,页面输出如下:
&Welcome to your new package&
修改ContactController.php的代码如下:
//dd(Config::get(&contact.message&));
return view('contact::contact');
则页面输出为:
Laravel Academy
至此,表明我们的自定义包开发完成并通过测试。
上一页: &&&&&下一页:相关内容为Laravel 5 添加自定义辅助函数 - 推酷
为Laravel 5 添加自定义辅助函数
Laravel内包含了很多非常好用的辅助函数,比如array_get()、array_first()、app_path()等等,具体可以查看http://laravelacademy.org/post/205.html文档,这些辅助函数为我们提供了很多简单易用的功能,提升了我们的开发效率,但是如果要新增自定义的辅助函数怎么办呢?其实很容易,四步即可搞定:
一、 创建自定义辅助函数
在这里我们把函数放在app/Support/Helpers/CustomHelper.php内:
if (! function_exists('test_function')) {
function test_function() {
echo "我是一个自定义辅助函数";
二、辅助函数文件载入
创建文件app/Support/Helpers/Helpers.php,并载入包含有自定义函数的文件:
$helpers = [
'CustomHelper.php'
foreach ($helpers as $helperFileName) {
include __DIR__ . '/' .$helperFileN
三、 在composer.json中自动载入Helpers.php文件
/*composer.json*/
"autoload": {
"classmap": [
"database"
"psr-4": {
"App\\": "app/"
"files": [
"app/Support/Helpers/helpers.php"
四、 重新编译autoload.php文件
运行如下命令:
composerdump-autoload
运行后就可以在任意地方调用你的自定义函数了,就是这么简单。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致在laravel中我们想分页相当方便,但是默认显示的分页,官方没有提供控制的方法,默认显示如图所示,他默认显示10个数字,有些时候我们可能觉得太长,不方便控制,我们想把它修改短一点,方便我们控制和美化,如下图我们把它变成了6个方法如下:在/vendor/laravel/framework/src/Illuminate/Pagination/UrlWindow.php:中找到getSliderTooCloseToBeginning,样式如下修改这里就可以了,比如我想现实减少或者增加自定义分页样式显示的个数,不过这里有一个bug,就是我必须要页数量大于9,才能显示第二种样式,今天没时间细看,大家研究了可以给我留言,或者我有时间再去研究了修改哦,其实主要就是在/vendor/laravel/framework/src/Illuminate/Pagination/里修改啦,本文章会持续更新到解决所有问题
转载请注明 :原文出处:
问题交流群 :
发布时间 : 17:15:07
59010 次点击,
215 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
改变自己 , 让每天发现不同 !
闽ICP备号-2
交换链接: (QQ)
Copyright (C) 2016Laravel框架中扩展函数、扩展自定义类的方法
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Laravel框架中扩展函数、扩展自定义类的方法,非常实用的技术文章,需要的朋友可以参考下
一、扩展自己的类
在app/ 下建立目录 libraries\class&
然后myTest.php 类名格式 驼峰 myTest
class myTest
public& function test()
return '1asdasd111';
在 app/start/global.php
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
app_path().'/libraries/class', //增加这一段
用 make 载入
class HomeController extends BaseController {
&&& protected $layout = 'layouts.main';
public function index()
$a = App::make('mytest'); // 用法
echo $a-&test();
二、扩展自己的函数
在app/ 下建立目录 libraries\function
建立helper.php
函数格式,如下用function_exists,防止与系统重名
if (! function_exists('test2'))
function test2()
echo 2222;
在 app/filters.php
App::before(function($request)
require app_path().'/libraries/function/helper.php'; //载入 自定义函数
在app/bootstrap/autolad.php
require __DIR__.'/../app/functions.php'; // 引入自定义函数库
我感觉方法一会比较好。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具(window.slotbydup=window.slotbydup || []).push({
id: '3284507',
container: s,
size: '0,0',
display: 'inlay-fix'
在Laravel中使用自己的类库三种方式
虽然Composer使得我们可以重用很多现有的类库(例如packagist.org中的),但是我们仍然可能用到一些不兼容 composer的包或者类库。另外在某一项目中,我们也可能会创建某一类库,而且可能并没有制作成为composer package 的打算。这个时候我们可以通过以下方式来自己的特有类库。
增加可直接实例化的类
有些需要直接在项目中使用的类,可以通过以下方式增加到Laravel中
创建类库文件app/libraries/class/myClass.php
写入文件内容
class Message {
public static function display() {
在app/start/globals.php中增加类导入路径
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
app_path().'/libaries/class', // 在这里增加
在composer.json中增加autoload目录
&autoload&: {
&classmap&: [
&app/commands&,
&app/controllers&,
&app/models&,
&app/database/migrations&,
&app/database/seeds&,
&app/tests/TestCase.php&,
&app/libraries/class&
//在这里增加
执行composer dump-autoload来创建导入映射
使用自己导入的类直接调用Message::display()即可
这种方法同样也是增加队列类的方法,很多人不知道Laravel中队列处理类应该放在哪里,其实按照上面的方法,在app目录下创建一个queues目录,然后让其可以直接实例化即可
增加可直接调用的函数
有人喜欢用v()来代替var_dump(),想要在Laravel中这么做也非常容易
创建一个函数文件app/libraries/function/helper.php
写入文件内容
function v($msg){
var_dump($msg);
把文件增加到composer自动导入列表中
&autoload&: {
&classmap&: [
&files&: [
&app/libraries/function/helper.php&
或者在项目中显示require这个文件。打开app/start/global.php,在末尾增加:
require app_path().'/libraries/function/helper.php';
个人感觉这两种方式都OK,如果想要控制这个文件加载的时间,甚至可以在filter.php文件中增加以下内容
App::before( function( $request ) {
require( &{$GLOBALS['app']['path.base']}/app/libraries/function/helper.php& );
在项目中直接使用函数v('hello world');
增加稍微复杂的类库
有的时候一个类库不仅仅是一个文件那么简单,因此下面的方式更加适合有多个文件多个结构的类库。
创建psr0或者psr4标准的目录结构。
Search (note directory is capitalized)
Search.php
SearchFacade.php
SearchServiceProvider.php
AnotherLib
Myapp/Search/Search.php中Search类的命名空间为Myapp\Search。
修改composer中autoload
&autoload&: {
&classmap&: [
&app/commands&,
&app/controllers&,
&app/models&,
&app/libraries&,
&app/database/migrations&,
&app/database/seeds&,
&app/tests/TestCase.php&
&psr-0&: {
&Myapp&: &app/libraries&
在项目中使用new Myapp\Search\Search()来实例化某一类
虽然Laravel没有强制哪种方式最好,但是有一定的标准可以使得项目结构清晰,多人合作开发时省去很多交流成本。
标签(Tag):
------分隔线----------------------------
------分隔线----------------------------}

我要回帖

更多关于 laravel 全局函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信