vendor类库导入 分析源码 (thinkphp3.1)
2016-09-22 16:37
423 查看
根据以下thinkphp3.1的源码分析,所以vendor导入的时候要注意 vendor(class,baseUrl,ext); class: 类库 baseUrl: 基础路径,指定''时为 /Vendoer ext: 类库后缀,默认为.php 比如导入Vendor/phpanalysis/phpanalysis.class.php 则代码为:
vendor('phpanalysis.phpanalysis','','.class.php');
其中点号(.) 为目录分隔符
/// 以下为thinkphp3.1的源码
/** * 快速导入第三方框架类库 所有第三方框架的类库文件统一放到 系统的Vendor目录下面 * * @param string $class * 类库 * @param string $baseUrl * 基础目录 * @param string $ext * 类库后缀 * @return boolean */ function vendor($class, $baseUrl = '', $ext = '.php') { if (empty ( $baseUrl )) $baseUrl = VENDOR_PATH; return import ( $class, $baseUrl, $ext ); }
/** * 导入所需的类库 同java的Import 本函数有缓存功能 * @param string $class 类库命名空间字符串 * @param string $baseUrl 起始路径 * @param string $ext 导入的文件扩展名 * @return boolean */ function import($class, $baseUrl = '', $ext='.class.php') { static $_file = array(); $class = str_replace(array('.', '#'), array('/', '.'), $class); if ('' === $baseUrl && false === strpos($class, '/')) { // 检查别名导入 return alias_import($class); } if (isset($_file[$class . $baseUrl])) return true; else $_file[$class . $baseUrl] = true; $class_strut = explode('/', $class); if (empty($baseUrl)) { $libPath = defined('BASE_LIB_PATH')?BASE_LIB_PATH:LIB_PATH; if ('@' == $class_strut[0] || APP_NAME == $class_strut[0]) { //加载当前项目应用类库 $baseUrl = dirname($libPath); $class = substr_replace($class, basename($libPath).'/', 0, strlen($class_strut[0]) + 1); }elseif ('think' == strtolower($class_strut[0])){ // think 官方基类库 $baseUrl = CORE_PATH; $class = substr($class,6); }elseif (in_array(strtolower($class_strut[0]), array('org', 'com'))) { // org 第三方公共类库 com 企业公共类库 $baseUrl = LIBRARY_PATH; }else { // 加载其他项目应用类库 $class = substr_replace($class, '', 0, strlen($class_strut[0]) + 1); $baseUrl = APP_PATH . '../' . $class_strut[0] . '/'.basename($libPath).'/'; } } if (substr($baseUrl, -1) != '/') $baseUrl .= '/'; $classfile = $baseUrl . $class . $ext; if (!class_exists(basename($class),false)) { // 如果类不存在 则导入类库文件 return require_cache($classfile); } } /////
相关文章推荐
- ThinkPHP导入第三方类库Vendor
- ThinkPHP vendor 方法导入第三方类库
- 话说TP框架里的Vendor这目录是干什么用的啊?类库扩展thinkphp3.1版本
- 实用的开放源码的Excel导入导出类库 CarlosAg ExcelXmlWriter
- [导入]SunriseUpload.0.9.1的源码分析(二)
- solr dataimport 数据导入源码分析(一)
- [导入]SunriseUpload.0.9.1的源码分析(七)
- Android 4.0 Launcher2源码分析——导入eclipse进行调试
- solr dataimport 数据导入源码分析(六)
- solr dataimport 数据导入源码分析(八)
- solr dataimport 数据导入源码分析(九)
- 1. ThinkPHP3.1.2源码分析(ThinkPHP.php)
- [导入]SunriseUpload.0.9.1的源码分析(一)
- solr dataimport 数据导入源码分析(十二)
- solr dataimport 数据导入源码分析(十三)
- solr dataimport 数据导入源码分析 补充
- [导入]SunriseUpload.0.9.1的源码分析(五)
- [导入]SunriseUpload.0.9.1的源码分析(四)
- solr dataimport 数据导入源码分析(三)
- Android 4.0 Launcher2源码分析——导入eclipse进行调试