支持psr4的自动加载类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支持psr4的自动加载类相关的知识,希望对你有一定的参考价值。
psr4自动加载规范 https://github.com/PizzaLiu/PHP-FIG/blob/master/PSR-4-autoloader-cn.md
我们把第三方使用psr规范的类库放在vendor目录下
修改一下autoload函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
//psr if (! empty ( $GLOBALS [ ‘_UCT‘ ][ ‘autoload_psr‘ ])) { //namespace if (false !== strpos ( $class_name , ‘\\‘ )) { } else { $dir = str_replace ( ‘_‘ , DS, $class_name ). ‘.php‘ ; } foreach ( $GLOBALS [ ‘_UCT‘ ][ ‘autoload_psr‘ ] as $vendor ) { if (! strncmp ( $vendor .DS, $dir , strlen ( $vendor ) + 1)) { $f = UCT_PATH . ‘vendor‘ . DS . $dir ; } else { $f = UCT_PATH . ‘vendor‘ . DS . $vendor . DS . $dir ; } if ( file_exists ( $f )) { return include $f ; } } } |
引用第三方类库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
function uct_use_vendor( $vendor ) { if ( empty ( $GLOBALS [ ‘_UCT‘ ][ ‘autoload_psr‘ ])) { $GLOBALS [ ‘_UCT‘ ][ ‘autoload_psr‘ ] = array ( $vendor ); return true; } if (!in_array( $vendor , $GLOBALS [ ‘_UCT‘ ][ ‘autoload_psr‘ ])) { //$GLOBALS[‘_UCT‘][‘autoload_psr‘][] = $app; array_unshift ( $GLOBALS [ ‘_UCT‘ ][ ‘autoload_psr‘ ], $vendor ); return true; } return false; } |
以上是关于支持psr4的自动加载类的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段