如何获取PHP一个请求的生命周期的调用栈?

在PHP当中我们如何知道一次请求下去背后的调用栈呢?比如说加载了哪些文件?执行了哪些方法?这些方法在调用栈的中当时传入的参数是什么?PHP为我们提供了 debug_backtrace 函数来说去上面的信息,下面是我在 laravel 框架的使用及输出:Route::get('/', function () { return debug_backtrace(); });输出结果(精简版):[

- 阅读全文 -

利用 go-laravel-broadcast 实现laravel的即时通讯

最近,小滕基于Go写了 laravel-echo-server 的Go语言版本,开源仓库地址:https://github.com/Qsnh/go-laravel-broadcast ,感兴趣的小伙伴可以去看下。下面是是 go-laravel-broadcast 的使用教程:环境Laravel5.8RedisStep首先,修改 EventServiceProvider 文件,在 $listen 添

- 阅读全文 -

lumen引入laravel的notification

Lumen的性能要高出laravel一大截,很大一部分原因是因为加载的文件变少了,少了非常多,但是正因为少了很多文件,功能方面也就丢失了很多,所以如果需要用到laravel的一些功能,还需要自己集成进去,今天就来演示下如何集成laravel的notification。lumne本身是不带有这个的。首先,看下我的lumen版本:Laravel Framework Lumen (5.6.4) (Lar

- 阅读全文 -

php单元测试的覆盖率

由于绩效中写到了代码的单元测试覆盖率,于是就准备在每次需求上线前导出下覆盖率报告,就有了下面的配置。首先,覆盖率的统计需要用到扩展 xdebug ,所以先安装下:pecl install xdebug可能需要手动添加 zend_extension=xdebug.so这里给出一份我本地的测试。目录结构是这样的:├── app │   └── Demo.php ├── composer.json ├─

- 阅读全文 -

Laravel如何修改request的值

如何在request验证之前修改request里面的值?我们可以这样:<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class DemoRequest extends FormRequest { /** * Determine if the user is

- 阅读全文 -

PHP洋葱模型

<?php $arr = [ function ($param, $callable) { $param *= 1; echo $param."\n"; return $callable($param); }, function ($param, $callable) { $param *= 2; echo $param."

- 阅读全文 -

laravel的collection的pluck方法的妙用

比如说,有这样一张表 sku :它有三个字段:skuid,spuid,skcid现在我有一个数组:$skuIds = [1, 2, 3];现在呢,我想读取出 $skuIds 所对应的 skcid ,然后组装成一个数组,数组的格式是这样的:$arr = [ // skuid => $skcid ];这样的话我就可以直接通过 skuid 来获取到对应的 skcid 了,之前我是这样做的:

- 阅读全文 -

Laravel使用Kafka异步延迟写入日志的方法

日志写入量较高的情况下,需要考虑一个缓冲器来延迟写入日志,这里给的是Kafka的方法。我的环境Laravel5.5Kafka需要安装的扩展包扩展包解释nmred/kafka-phpKafka的PHP扩展包开始首先,我们需要自定义一个 LogHandler 来替代 Laravel 内置的日志记录服务,于是,我在 app/Hubs 创建了 KafkaLogHandler.php :<?php

- 阅读全文 -

在Laravel中利用模型事件清除冗余数据

比如说,用户与角色是多对多关系,通过中间表关联,那么,在删除一个角色的时候,对应的中间表数据也需要删除,否则就产生冗余数据了,一般通常是这样写的:$role->users()->detach(); $role->delete();写两行代码,先清空与用户的关系,在删除自身。其实我们也可以利用事件这样写:在 ROLE 模型中这样定义:protected static functio

- 阅读全文 -

strtotime()的-1month的问题

在PHP当中我们可以这样获取距离当前时间的每个月的月份,比如说下面的代码是获取当前时间往前的12个月份:<?php $i = 12; while($i >= 1) { echo date('Y-m', strtotime('-' . $i . ' month')) . "\n"; $i--; }输出结果:2017-09 2017-10 2017-

- 阅读全文 -

php内置的web Server无法访问静态文件

今天录制视频发现tp5使用内置的server访问资源一直显示404,之后找到了php的官方文档:http://www.php.net/manual/zh/features.commandline.webserver.php 文中说明了:<?php // router.php if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["

- 阅读全文 -

laravel的optional的详细使用

Laravel 的辅助函数 optional() 我们经常使用到,它是避免我们直接从一个 null 变量上读取属性导致报错的问题,我们可以这样:optional($user)->name如果 $user 为 null 的话,那么直接 $user->name 系统会报错的,但是使用 optional($user)->name 在 $user 为 null 的情况下整个语句返回 nu

- 阅读全文 -