核心当然是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目录下去找这个类,把他加载进来。
所以是运行时加载