composer 自动加载原理
核心当然是php5加入来的_autoload函数,当实例化一个不存在的类时,在报错之前,如果定义了_autoload函数,会进行调用此函数,此函数就可以执行相关的include操作。
<?php function __autoload($classname){ include 'test.php'; } new a();
对于composer的composer.json,
"autoload": { "classmap": [ "database" ], "psr-4": { "App\\": "app/" } }, "autoload": { "classmap": [ "database" ], "psr-4": { "App\\": "app/" } },composer的autoload默认会注册vendor文件夹的文件,另外,上面代码指定的autoload也会纳入注册范围。
对于java来说,import只是声明用什么依赖,但是:java是如何实现动态加载的?
java在编译之后,会在class文件里面记录在用到的类的绝对包路径。。。当出现new , static这样的操作关键字时,jvm会在classpath目录下去找这个类,把他加载进来。
所以是运行时加载
暗夜之中,才见繁星;危机之下,暗藏转机;事在人为,为者常成。