laravel - 5.3中间件执行流程重大改变!
伊谢尔伦
伊谢尔伦 2017-05-16 16:49:21
0
2
656

国内没人用最新版本,没发现这个逻辑变化?都不在构造函数里判断用户登录的(没发现的你悲剧了)?
帮我看下这个官方回复:https://github.com/laravel/fr...
**我英文不好!解释下!laravel5.3很重要的改进
为什么这么做?
我应该怎么写新的逻辑?**
我需要这样改进的理由,还有我怎么解决我的逻辑!

疑问这样做就是废了__construct
那么中间件的except应该加到中间件作为一个属性比较合理!
protected $except =['login','register','oauth_callback'];
纠结:加了这个觉得不合理(多个组调用这个的话就不合理了),不加这个吧为了一个登陆写__construct又觉得不好!

目前答案:1楼的其实也可以,不过这个优雅多了
callAction说明:https://laravel.com/api/maste...

laravel 5.3,反正是最新的,每次都update!
现在有这3个,中间件,控制器,构造函数
有2个函数必须在构造函数里实例化。而且必须登录状态下,不登录不准实例化。
构造函数:

中间件:

方法:

输出:


路由里


自定义中间件

按laravel的逻辑输出:
2构造函数
1中间件
3这是推广

但是这样的话构造函数里没登录就实例化了,而且不管中间件放在哪,都是先运行构造函数再运行中间件的,
我要的结果是:
1中间件,判断登录,没登陆就跳转
2构造函数,登录后实例化
3这是推广,执行推广!
怎么修改逻辑,我要登录后才调用公用方法,没登录的跳转登录(排除注册和登录)!

大概的问题就是laravel必须先运行构函数,然后才可以调用中间件,
那我应该怎么个逻辑才可以实现我的要求的!

$this->wx_api();
$this->agent();

这2个公用的,一般都写到__construct里的吧!

我还是纳闷,按常理,路由器里定义了,判断类里有这个方法,然后这时候调用中间件,然后执行构造函数,然后是方法!怎么会这种流程呢!


粗暴方法问题,看下面的(不能在构造函数里跳转,写echo和exit在laravel你会觉得超级难看,反正我受不了,上面的演示纯粹为了看!)

http://laravelacademy.org/pos...
仔细的想了一下,发现这个完美的破坏了面向对象的职责分离的要求,并成功的提高了耦合度   
因为这句话,我才想使用中间件!(到底哪个好,我是新手,我都不知道怎么说!)


laravel 5.3是构造Middleware -> 构造Controller -> 执行中间件handle -> 执行Controller中间件 -> Controller的方法,所以中间件是在构造函数后执行的

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!