【php】 勾搭 Composer\Autoload\ClassLoader 类
来源:互联网 发布:如何用excel做数据库 编辑:程序博客网 时间:2024/05/22 20:38
现在PHP使用composer进行管理包已经越来越平常了,我们也要跟上步伐,一起去学习一下composer是什么. 当然,要深入学习Composer 需要大家有对它一定的基础,不太熟悉的可以去官网瞧瞧.
而对Composer管理器最基本的,就是它的自动加载类了,它支持Psr0和Psr4 两种加载类. 我们也不要在这里细究 Psr0和Psr4是什么.
对于spl_autoload_register 函数想必大家也有所接触了.这是在我们使用类的时候发现并没有被包含住,而会触发 已经注册 的 回掉函数来处理. 这个spl_autoload_register 就是用来注册 回掉函数的.
【类方法如下】
@param array $classMap Class to filename map
# 类名 => 类文件 map 优先级 高 #
ClassLoader::addClassMap( array $classMap )
$autoload->addClassMap( array( "App\Test"=>"src/test.php"));
这样如果我需要 new App\Test(); 的时候 他会去 include "src/test.php"; 然后 创建 App\Test对象成功
@param string $prefix The prefix @param array|string $paths The PSR-0 root directories @param bool $prepend Whether to prepend the directories
# 如果 $prefix 为空时, 则是将 $paths类似于设置与 环境变量path(只是类似),添加了一个符合psr-0的类加载的路径数组 (公共)#
# 如果 $prefix不为空时,则当符合$prefix的类会在该指定的 paths下去寻找对应的文件 #
# $prepend 只是设置添加的path 是否在原有的path之前 #
ClassLoader::add( $prefix , $paths , $prepend = false )
$autoload->add("Test_One","src/",false);$autoload->add("Test_One","src/app",true);当我 new Test_One();的时候 会最先找 src/app/Test/One.php 文件 如果在该路径找不到 Test/One.php , 则会去 src/目录下去找Test/One.php文件。
注意:
1.第二行我使用了 $prepend = true; 表示优先寻找src/app 路径.
2.同时 ".php"文件后缀也是可以通过$autoload进行设置的.
3.下滑线_被转换了 文件夹分隔符 "/" 这就是PSR-0的特点.
@param string $prefix The prefix/namespace, with trailing '\\' @param array|string $paths The PSR-0 base directories @param bool $prepend Whether to prepend the directories# 与 add方法 的参数 实际上是一致的 #
ClassLoader::addPsr4( $prefix , $paths , $prepend = false )
$autoload->addPsr4("App\\","src/app",false);$autoload->addPsr4("App\\","other/app",true);
当我 new App\Test(); 的时候,会去查找 other/app/Test.php 是否存在,如果不存在 则会寻找src/app/Test.php是否存在.
注意:
1. $prefix 会作为 namespace 注册进去, 这样 App\\Console\\Test 类 也可以在注册两个地址上去找地址.
2. $prefix 为空的话, 同样会注册paths变量.
3. $prefix 不能以\\ 开头,必须要有 \\ 结尾.
@param string $prefix The prefix @param array|string $paths The PSR-0 base directories
# 与add() 方法的功能个一致,不过它会进行覆盖 原有的配置而非 添加 #
ClassLoader::set( $prefix , $paths)
* @param string $prefix The prefix/namespace, with trailing '\\'* @param array|string $paths The PSR-4 base directories# 与addPsr4()方法类似 #
ClassLoader::setPrs4( $prefix , $paths)
# 是否使用服务器的path变量获取目标文件include 文件 #
bool ClassLoader::$useIncludePath
# 是否只使用classMap方式 include 自动加载类 #
bool ClassLoader::$classMapAuthoritative
终于,ClassLoader类的主要实用功能都已经介绍完了. 接下来看大家自己自由使用做一些测试了.
- 【php】 勾搭 Composer\Autoload\ClassLoader 类
- php composer autoload添加个性化命名空间
- composer autoload
- composer autoload原理浅析
- 深入 Composer autoload
- 深入 Composer autoload
- 深入理解Composer autoload
- autoload之composer分析
- Yii2与Composer中的autoload
- PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
- php类文件自动载入(autoload)
- php类文件自动载入(autoload)
- 如何使用composer的autoload来自动加载自己编写的函数库与类库
- 如何使用composer的autoload来自动加载自己编写的函数库与类库?
- PHP require 绝对路径 autoload
- PHP autoload机制详解
- PHP autoload机制详解
- PHP autoload 机制
- UESTC 1263-The Desire of Asuna
- iOS之 json数据解析
- c语言关于二叉树的知识和float的一些问题
- 人生在世,不在于读多少,在于读什么?
- 高并发服务端分布式系统设计概要
- 【php】 勾搭 Composer\Autoload\ClassLoader 类
- uestc 人民币的构造 1264 (打表)
- 一种单例的实现方法
- 如何快速研究透一篇 Paper 并提出有价值的问题?
- 途牛谭俊青:多数据中心状态同步&两地三中心的理论
- 石头剪刀布人机对战
- c语言的数据链路层和冒泡法的一些知识
- Android 如何抓取开机Log
- hbase安装(使用已经安装的HDFS和zookeeper)