理解Laravel IOC容器

理解Laravel IOC容器 IOC容器是Laravel框架一个非常重要的概念 依赖注入 理解IOC容器首先要从依赖注入开始。依赖注入和控制反转是差不多因果关系,通过使用依赖注入这种手段实现功能模块对其依赖组件的控制反转。 拿一个使用OAuth登录应用场景举例: interface Login { public function login(); } //微信账号登录 class WechatLogin implements Login { public function __construct(){} public function login() {} } //新浪微博登录 class WeiboLogin implements Login { public function __construct(){} public function login() {} } //QQ登录 class QQLogin implements Login { public function __construct(){} public function login() {} } //站点登录 class SiteLogin { protected $oauthClient; public function setOauthClient($oauthClient) { $this->oauthClient = $oauthClient } public function appLogin() { $this->oauthClient->login(); } } 一般可以使用两种方法实现注入...

November 25, 2017 · 2 min

Composer Autoload 配置说明

Composer Autoload 配置说明 谈到现代PHP,肯定离不开Composer。对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件。你可以简单的引入这个文件,你会得到一个免费的自动加载支持。(注意⚠️:php5.3之后才有namespace) require 'vendor/autoload.php'; namespace的应用大大的给开发提供的便利。autoload 是composer.json中的一个配置参数。autoload利用命名空间进行对应规则或标准的路径映射,从而找到最终的类文件。 四种Autoload模式 1. PSR-0 在 psr-0 key 下你定义了一个命名空间到实际路径的映射(相对于包的根目录)。注意,这里同样支持 PEAR-style 方式的约定(与命名空间不同,PEAR 类库在类名上采用了下划线分隔)。 请注意,命名空间的申明应该以 \\ 结束,以确保 autoloader 能够准确响应。 在 install/update 过程中,PSR-0 引用都将被结合为一个单一的键值对数组,存储至 vendor/composer/autoload_namespaces.php 文件中。 { "autoload": { "psr-0": { "Monolog\\": "src/", "Vendor\\Namespace\\": "src/", "Vendor_Namespace_": "src/" } } } ⚠️下划线 _ 对 psr-0 是有特殊意义的。psr-0 的加载器会将类名中的 _ 解析成目录分隔符。 即 Foo_Bar_Test 类会去加载 Foo/Bar/Test.php 文件。 2. PSR-4 将实际路径定义为命名空间。 { "autoload": { "psr-4": { "Monolog\\": "src/", "Vendor\\Namespace\\": "" } } } 3....

November 18, 2017 · 1 min