Laravel
Laravel
AirGo.
[WHY]每一个你不满意的当下,都有一个你不曾努力的过去。
展开
-
Lumen使用tideways加中间件记录慢接口以及对应接口执行的SQL
先上代码:<?phpnamespace App\Http\Middlewares;use Closure;use Illuminate\Support\Facades\DB;class ProfilerMiddleware{ public function handle($request, Closure $next) { $extens...原创 2019-12-07 17:43:26 · 552 阅读 · 0 评论 -
依赖倒置原则应用,Lumen基于PHPMailer封装邮件服务
EmailInterface<?phpnamespace App\Services\Email;interface EmailInterface{ public function send($email, $subject, $content, $attachments = []);}PhpMailerService<?phpnamespace A...原创 2019-12-06 19:11:09 · 398 阅读 · 0 评论 -
理解Laravel的中间件
<?phpnamespace App\Http\Middlewares;use Closure;use Illuminate\Support\Facades\Log;class TestMiddleware{ public function handle($request, Closure $next) { Log::info($r...原创 2019-12-03 13:11:02 · 694 阅读 · 0 评论 -
使用Tideways和Toolkit对PHP代码进行性能分析
安装Tidewaysgit clone https://github.com/tideways/php-xhprof-extension.gitcd php-profiler-extensionphpize./configuremake && make installphp.ini加入 extension=tideways.soservice php-fpm...原创 2019-12-03 12:39:17 · 655 阅读 · 0 评论 -
使用PHPMAILER实现PHP发邮件功能
第一步:下载PHPMailer(https://github.com/PHPMailer/PHPMailer/),PHPMailer 需要 PHP 的 sockets 扩展支持,而登录 QQ 邮箱 SMTP 服务器则必须通过 SSL 加密的, PHP 还得包含 openssl 的支持。使用 phpinfo() 函数查看 socket 和 openssl 扩展信息,没有需要开启第二...原创 2018-10-06 10:42:07 · 1362 阅读 · 0 评论 -
Laravel自动拼接where条件
$where = [];$where['user_id'] = $user->id;$where[] = ['created_at', '>=', $date['start']];$where[] = ['created_at', '<', $date['end']];$cateDatas = Question::select('category_id', DB::r...原创 2019-11-21 11:36:42 · 2803 阅读 · 0 评论 -
laravel记录接口执行的sql,并将pdo的绑定参数替换到sql中
将下面这段代码加到某个Provider的boot中即可if(env('APP_DEBUG') == true){ DB::listen(function ($sql) { $bindings = $sql->bindings; foreach ($bindings as $i => $bind...原创 2019-11-08 12:48:06 · 485 阅读 · 0 评论 -
Laravel和Lumen的Redis底层实现
举分布式锁的例子调用app('cache')->lock($lockName, $timeout)->get();ServiceProvider public function register() { $this->app->singleton('cache', function ($app) { re...原创 2019-10-22 17:14:10 · 709 阅读 · 0 评论 -
Laravel定义command可选参数
<?phpnamespace App\Console\Commands;use App\Master\Models\Dealer\Account;use App\Master\Models\QA\Question;use App\Master\Models\User\AccountLog;use App\Master\Models\User\UserAccount;use ...原创 2019-10-17 15:06:08 · 5839 阅读 · 0 评论 -
php封装MongoDB类
Service:<?phpnamespace App\Services\Mongo;class Mongo{ private $_manager; private $_host; private $_username; private $_password; private $_db; public function connect($config){ ...原创 2018-12-28 17:54:17 · 1690 阅读 · 0 评论 -
laravel Queue——监听和消费,优雅的设计模式,知其然并知其所以然
入口:Illuminate\Queue\Console\WorkCommand类运行handle方法,监听失败处理,获取connection参数,获取queue,最后运行自身的runWorkder方法public function handle() { if ($this->downForMaintenance() && $this-&...原创 2019-10-02 16:40:16 · 2582 阅读 · 0 评论 -
Laravel事件监听+队列异步处理
前言看到公司里的API里用到了事件监听+队列的方法去异步处理,所以稍微研究了一下,是观察者模式在Laravel中的实现。在我的例子里看不到优势,可能感觉还有点复杂,其实真正的应用场景很多。生活实例比如淘宝某个用户付款,称之为一个Event事件,此时需要通知卖家、物流、淘宝官方等等,同时这些通知是不受先后顺序影响的,此时卖家、物流、淘宝官方等则为多个监听者Listener。所以Eve...原创 2019-09-26 17:56:26 · 4186 阅读 · 0 评论 -
laravel通过服务提供者注册mongo服务
<?phpnamespace App\Providers;use Illuminate\Support\ServiceProvider;use App\Services\Mongo\Mongo;class MongoServiceProvider extends ServiceProvider{ //延迟加载 protected $defer = true...原创 2019-09-26 11:18:19 · 158 阅读 · 0 评论 -
laravel执行过程
1、载入Composer的自动加载文件,自动加载的真正实现是通过/vendor/autoload.php实现的,代码如下2、加载/bootstrap/app.php文件,实例化服务容器,存在$app3、向服务容器里绑定了三个服务:HTTP、Console、Excepiton4、make方法取出http,存到$request变量中($request变量贯穿始终)5、按照app配置文件...原创 2019-01-23 10:40:26 · 2126 阅读 · 0 评论 -
laravel权限验证:View维度+Route维度
路由设计:Route::group(array('middleware' => ['auth', 'permission']), function(){ Route::get('/Index/index', ['uses' => 'IndexController@index', 'permissions'=>['index.index'], 'top_tab'=...原创 2019-05-30 16:48:34 · 1361 阅读 · 0 评论 -
Monolog使用
Service<?php namespace App\Master\Services;use Monolog\Logger;use Monolog\Handler\StreamHandler;use Illuminate\Log\Writer;class BLogger{ private static $loggers = array(); // 获取一...原创 2019-05-31 15:46:00 · 1853 阅读 · 0 评论 -
laravel的Validator使用
自定义validator:(注意目录和Facades对应的目录,我的是5.5版本)<?php namespace App\Http\Service;use Illuminate\Support\Facades\Request;use Illuminate\Support\Facades\Validator;use Illuminate\Support\Facades\Vie...原创 2019-05-29 15:02:59 · 4556 阅读 · 0 评论 -
laravel ORM with用法
$builder = UserMechanicDataVerify::query(); $builder->with( [ 'user' => function($query) use ($mobile){ $query->select('id', 'mobile'); $query->wit...原创 2019-08-13 13:14:04 · 7150 阅读 · 0 评论 -
Laravel Queue — 生产和消费
公司的日志系统、推送系统,都是用的Laravel自带的Queue系统,之前只是调用大佬封装好的,不知道实现的原理,今天仔细看了看Queue的源码,总结一下,有不严谨和错误的地方,还希望大佬们指正。生产首先我们的业务用的是Beantalked,所以代码查看从BeanstalkdQueue.php的push入队(later方法为延迟队列)方法开始 /** * Push a ne...原创 2019-09-16 12:53:12 · 2193 阅读 · 0 评论 -
laravel技术关键字
平时在使用Laravel时,尽管一切东西都可以自己去手动实现,但是真正开发中利用好这些技巧,可以大幅度提升开发效率,代码复用,使代码看起来更优雅Laravel速查表:https://learnku.com/docs/laravel-cheatsheet/6.0Laravel API文档:https://laravel.com/api/6.x/index.htmlLaravel内助...原创 2019-09-26 18:08:13 · 286 阅读 · 0 评论 -
laravel和依赖注入
依赖注入分为两种:一种是自动依赖注入,依靠PHP的反射实现,使用是通过在构造函数中注入,此时不需要注册服务提供者。另一种是依赖注入,可以在任何方法中注入,需要注册服务提供者。 laravel中的依赖注入:简单绑定:每次注入的时候都需要实例化单例绑定:只在容器中实例化一次绑定实例:绑定一个已经实例化的对象绑定原始值:规定在某个控制器中注入时,自动传入参数make方...原创 2019-01-07 22:07:41 · 1161 阅读 · 0 评论