http://oomusou.io/laravel/laravel-for-newbie/ 给laravel初学者的几点建议

(一)Laravel必须知道的PHP基础

PHP 闭包( Closure )

参考网址

http://www.njphper.com/detail/143.html

PHP 函数 call_user_func 和 call_user_func_array 的使用

Laravel中很多地方使用到这个函数,所以必须掌握

参考网址

http://www.njphper.com/detail/60.html

PHP 魔术方法

__construct()、 __destruct()、 __call()、 ==__callStatic()==、 __get()、 __set()、 __isset()、 __unset()、   
 __sleep()、 __wakeup()、 __toString()、 __invoke()、 __set_state()、   __clone()、 __debugInfo()

参考网址

http://www.php.net/manual/zh/language.oop5.magic.php


PHP 新特性 trait

自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait。
Laravel 中有大量使用该特性

参考网址

http://php.net/manual/zh/language.oop5.traits.php

理解OAuth 2.0

参考网址

http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
http://blog.csdn.net/seccloud/article/details/8192707

(二)Laravel 底层研究

参考网址

http://www.cnblogs.com/lyzg/p/6181055.html#_label0
https://www.insp.top/article/learn-laravel-container
http://www.njphper.com/detail/142.html

依赖注入

http://oomusou.io/tdd/tdd-di/ 深入探討依賴注入
https://dotblogs.com.tw/hatelove/2013/01/11/learning-tdd-in-30-days-catalog-and-reference [30天快速上手TDD]目錄與附錄

控制反转

顾名思义,一个系统通过组织控制和对象的完全分离来实现”控制反转”。对于依赖注入,这就意味着通过在系统的其他地方控制和实例化依赖对象,从而实现了解耦。

一些 PHP 框架很早以前就已经实现控制反转了,但是问题是,应该反转哪部分以及到什么程度?比如, MVC 框架通常会提供超类或者基本的控制器类以便其他控制器可以通过继承来获得相应的依赖。这就是控制反转的例子,但是这种方法是直接移除了依赖而不是减轻了依赖。

依赖注入允许我们通过按需注入的方式更加优雅地解决这个问题,完全不需要任何耦合。

laravel 依赖注入,不需要手动new操作后再传进对象,是因为用到了php的反射机制,自动new对象后传进对象

访问控制器流程

  1. 获取控制器方法的所有参数
  2. 判断参数类型,如果是类,直接new类
  3. 把new好的类同传进控制器方法

依赖反转准则

依赖反转准则是面向对象设计准则 S.O.L.I.D 中的 “D” ,倡导 “依赖于抽象而不是具体”。简单来说就是依赖应该是接口/约定或者抽象类,而不是具体的实现。我们能很容易重构前面的例子,使之遵循这个准则

反射

RESTful架构

参考网址

http://www.ruanyifeng.com/blog/2011/09/restful.html
http://www.ruanyifeng.com/blog/2014/05/restful_api.html

Ioc 服务容器

参考网址

http://www.cnblogs.com/lyzg/p/6181055.html#_label0

含义

你应该明白的第一件事是依赖注入容器和依赖注入不是相同的概念。容器是帮助我们更方便地实现依赖注入的工具,但是他们通常被误用来实现反模式设计 Service Location 。把一个依赖注入容器作为 Service Locator 注入进类中隐式地建立了对于容器的依赖,而不是真正需要替换的依赖,而且还会让你的代码更不透明,最终变得更难测试。

大多数现代的框架都有自己的依赖注入容器,允许你通过配置将依赖绑定在一起。这实际上意味着你能写出和框架层同样干净、解耦的应用层代码

服务提供者

Facade

参考地址

http://www.njphper.com/detail/104.html

含义

门面为应用的服务容器中的绑定类提供了一个“静态”接口
如:/routes/web.php 文件代码

Route::resource('user', 'Admin\UserController');
Route::post('/user/ajax', 'Admin\UserController@ajax');
Route::post('/user/deleteImg', 'Admin\UserController@deleteImg');

Router 类其实没有这些静态方法,是通过 __callStatic() 方法调用的

中间件

类似Java里面的拦截器或叫过滤器

restfulAPI

Laravel 的中大型专案架构

http://oomusou.io/laravel/architecture/