Laravel自动加载类教程
2014-04-23 17:20
423 查看
八月六日的时候写过一次关于Laravel源码的文章,其实要读懂一个项目的代码,必须事先了解它的自动加载机制,这里就接上篇文章说一下Laravel的自动加载。
Laravel中所有关于自动加载的部分都在laravel/autoloader.php文件中,从它声明的数组里我们就可以知道Laravel为我们提供的自动加载类型:
我们可以加载单个文件($mappings)、一个目录($directories)、一个命名空间(namespace)。其中的$aliases数据则保存的是类的别名,在application/config/application.php中可以找到application插件包类别名的数组。而underscored则是为了对PHP5.3以下版本的兼容,是命名空间的替代方法。
查看Autoloader的load方法可以知道Laravel自动加载的判断规则。当加载一个类的时候,最先检查的是类别名,如果在别名数组中存在要加载的类,则直接声明一个别名。再检查文件数组,然后才是需要迭代才能判断的命名空间,最后是目录加载。
对于Laravel自动加载的使用方法可以参考官方文档写得很明白,如果想要进一步了解一些自动加载类的编写标准,可以阅读一下PSR-0
Autoloading Standard
Laravel中所有关于自动加载的部分都在laravel/autoloader.php文件中,从它声明的数组里我们就可以知道Laravel为我们提供的自动加载类型:
public static $mappings = array();
public static $directories = array();
public static $namespaces = array();
public static $underscored = array();
public static $aliases = array();
我们可以加载单个文件($mappings)、一个目录($directories)、一个命名空间(namespace)。其中的$aliases数据则保存的是类的别名,在application/config/application.php中可以找到application插件包类别名的数组。而underscored则是为了对PHP5.3以下版本的兼容,是命名空间的替代方法。
public static function load($class) { if (isset(static::$aliases[$class])){ return class_alias(static::$aliases[$class], $class); } elseif (isset(static::$mappings[$class])){ require static::$mappings[$class]; return; } foreach (static::$namespaces as $namespace => $directory){ if (starts_with($class, $namespace)){ return static::load_namespaced($class, $namespace, $directory); } } static::load_psr($class); }
查看Autoloader的load方法可以知道Laravel自动加载的判断规则。当加载一个类的时候,最先检查的是类别名,如果在别名数组中存在要加载的类,则直接声明一个别名。再检查文件数组,然后才是需要迭代才能判断的命名空间,最后是目录加载。
对于Laravel自动加载的使用方法可以参考官方文档写得很明白,如果想要进一步了解一些自动加载类的编写标准,可以阅读一下PSR-0
Autoloading Standard
相关文章推荐
- Laravel框架中composer自动加载的实现分析
- 每天laravel[002]-自动加载函数流程
- [ADN DevCast]AutoCAD API视频教程-- 应用程序自动加载Autoloader
- laravel框架学习-自动加载项目
- ThinkPHP教程--17--自动加载
- laravel 自动加载类
- Laravel 学习笔记之 Composer 自动加载
- php composer 在laravel中自动加载autoload_class.php中的配置
- [李景山php]每天laravel[002]-自动加载函数流程之bootstrap autoload.php
- php laravel 源码阅读3(注册自动加载)
- 【PHP面向对象(OOP)编程入门教程】23.自动加载类 __autoload()函数
- 64.iOS AutoLayout自动布局中级开发教程(5)-修改约束的值,延迟加载
- [李景山php]每天laravel[003]-自动加载函数流程之vendor autoload.php
- iOS AutoLayout自动布局中级开发教程(5)-修改约束的值,延迟加载
- 关于laravel 自动加载和依赖注入、服务容器、服务提供者的理解--1
- [李景山php]每天laravel[004]-自动加载函数流程之composer autoload_real.php
- Laravel5.2之Composer自动加载
- laravel自动加载
- iOSAutoLayout自动布局中级开发教程(5)修改约束的值 延迟加载
- laravel composer自动加载函数