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目录下去找这个类,把他加载进来。
所以是运行时加载 
posted @ 2016-06-16 10:17  zenghansen  阅读(652)  评论(0编辑  收藏  举报