写给thinkphp开发者的laravel系列教程(八)自定义函数和类

我有一个 p 函数是用来打印数据的;
以符合人类阅读的方式打印 php 数组
不管走到哪个项目我都会带上她;
虽然框架一般也都自带打印函数;
但是并不一定符合我们的习惯或要求;
这时候就需要自定义函数了;
开发中定义一些常用的函数可以大大的提升我们的效率;
避免重复代码;
thinkphp 的公共函数是放在 Application/Common/Common/function.php 目录下的;
然鹅 laravel 默认并没有为我们定义一个写函数的文件;
于是我就搜了下全球最大的工单系统 stackoverflow ;
以及从其他地方搜刮了一些方案整理如下;

首先是最简单粗暴的方式;
手动创建 app/Libraries/Functions/helpers.php文件 ;
把函数写在 helpers.php 中;
在入口文件中 public/index.php 的顶部直接引入即可;

require __DIR__.'/../app/Libraries/Functions/helpers.php';

然后就可以愉快的使用自定义的函数了;

上面这种方式简单是简单了但是过于粗暴;
直接把 laravel 引以为傲的优雅拉到城乡结合部发廊的水平;
不可取;不可取;
那咱来个优雅的方式;
先用命令行创建一个服务提供者;

php artisan make:provider HelperServiceProvider

执行命令会生成 app/Providers/HelperServiceProvider.php 文件;
然后我们在 register 中引入函数文件;

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        require app_path().'/Libraries/Functions/helpers.php';
    }

最后在 config/app.php 文件中的 providers 数组中注册提供者;

    'providers' => [
        // 此处省略无数 ServiceProvider ...
        App\Providers\HelperServiceProvider::class,
    ],

上面这种方法优雅是优雅了但是略微繁琐;
那可不可以有种方式既简单又不粗暴呢?
这就要靠我们根目录下的 composer.json 文件了;
autoload 中加上 files

    "autoload": {
        "classmap": [
            "database",
            "app/Libraries/Org"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files": [
            "app/Libraries/Functions/helpers.php"
        ]
    },

然后运行下面的命令更新一下;

composer dump-autoload

ok;就这么完了;

除了自定义的函数;
咱还会用到自定义的类;
thinkphp 是放在 ThinkPHP/Library/Org 目录下的;
laravel 是推崇模块化开发的;
第三方的包都是通过 composer 引入的;
但是如果因为历史的原因或者其他情况;
实在是需要引入自定义的类的;
我上面其实已经讲过了;
讲过了?没错;
其实还是上面那段写在 composer.json 中的内容;
autoload 下的 classmap 增加一条 app/Libraries/Org就搞定了;;
自定义的类放在 app/Libraries/Org 目录下;
写好命名空间;
使用的时候直接 use 就可以了;
laravel自定义函数和类

白俊遥博客
请先登录后发表评论
  • latest comments
  • 总共19条评论
白俊遥博客

一杯のお茶白俊遥博客

2019-03-21 15:48:34 回复

白俊遥博客

41802679白俊遥博客

2018-11-19 16:48:34 回复

白俊遥博客

花舞千魂殇:composer 这就很洋气了

2018-07-27 09:58:43 回复

白俊遥博客

月之门:写的真鸡儿通俗易懂...赞白俊遥博客

2018-06-29 10:19:08 回复

白俊遥博客

旅途:请问一下大神 , 您博客里面的title上的 "白" 怎么去除 ,还有有您的这个开源博客的一些别的说明吗 , 除了您现有的一篇文章

2017-11-05 19:27:19 回复

白俊遥博客 白俊遥博客
  • 云淡风晴 回复 旅途:后台有配置项可以直接改;新系统完成我会写更详细的文档;
  • 2017-11-07 23:59:41 回复
白俊遥博客

Echo:编辑器添加图片之后,不能移动光标,也不能继续添加文本内容,没有报错

2017-10-08 06:32:41 回复

白俊遥博客
  • Echo 回复 Echo:知道原因了,因为默认的广告禁用插件里面禁用了js。蠢哭,哈哈
  • 2017-10-08 06:36:59 回复
白俊遥博客

淡远如风:好样的!好久没来了更新这么多了

2017-09-23 17:21:43 回复

白俊遥博客
  • 土豪 回复 淡远如风:111
  • 2017-09-27 00:22:30 回复
白俊遥博客
  • 土豪 回复 土豪:22
  • 2017-09-27 00:22:34 回复
白俊遥博客
  • AuroraLZDF 回复 土豪:333
  • 2017-10-13 11:02:14 回复
白俊遥博客

阿根廷大大华人网:好样的  点赞

2017-09-22 16:29:12 回复

白俊遥博客

醉是清瀮:紧抱大神腿毛

2017-09-21 21:40:28 回复

白俊遥博客

Small~parcel白俊遥博客哈喽哈喽,请问你的随言碎语中的时间轴是用的上面插件?

2017-09-19 17:56:11 回复

白俊遥博客 白俊遥博客
  • 云淡风晴 回复 Small~parcel:没插件;手写的;
  • 2017-09-20 22:47:10 回复
白俊遥博客
  • 若只初见 回复 云淡风晴:65y56
  • 2017-11-09 09:17:57 回复
白俊遥博客
  • 若只初见 回复 若只初见:44444
  • 2017-11-09 09:19:18 回复
白俊遥博客

PHP部门白俊遥博客

2017-09-18 11:33:40 回复

白俊遥博客

萧逸:laravel也可以优雅的打印 使用的dd()   我们公司开发使用的函数库 都是定义的一个函数类  里边都定义了很多静态方法  每次还得className::function  哎呦吗呀  

2017-09-16 11:58:23 回复

白俊遥博客 白俊遥博客
  • 云淡风晴 回复 萧逸:恩恩;这篇文章就是为下一篇讲打印数据做铺垫的;
  • 2017-09-17 15:07:47 回复
白俊遥博客

急速野驴:大神文章必看!

2017-09-15 13:55:16 回复

白俊遥博客 白俊遥博客
  • 云淡风晴 回复 急速野驴:多谢支持;
  • 2017-09-17 15:08:34 回复
白俊遥博客

诗意林:紧跟大神步伐

2017-09-15 10:44:32 回复

白俊遥博客

缺氧:一直紧跟大神的步伐白俊遥博客

2017-09-14 22:49:21 回复

白俊遥博客

白俊遥博客朋友  你的博客源码  我装了  一直失败...是我的人品问题吗?????还请你看看...能回复我下吗?

2017-09-14 22:27:57 回复

白俊遥博客 白俊遥博客
  • 云淡风晴 回复 :有什么错误提示?
  • 2017-09-17 15:08:11 回复
白俊遥博客

正在连接中......白俊遥博客

2017-09-14 11:06:01 回复

白俊遥博客

V:你github上的composer.json  files helper.php   少了个S

2017-09-12 18:23:06 回复

白俊遥博客 白俊遥博客
  • 云淡风晴 回复 V:多谢提醒;已同步;
  • 2017-09-17 15:08:23 回复
白俊遥博客

灵魂摆渡白俊遥博客

2017-09-12 11:14:10 回复