先从入口文件开始分析php
index.phpweb
<?php
api
error_reporting(E_ALL);
ini_set("display_errors",1);
chdir(dirname(__DIR__));
// Decline static file requests back to the PHP built-in webserver
if (php_sapi_name() === 'cli-server' && is_file(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))) {
return false;
}
// Setup autoloading
//初始化自动加载类
require 'init_autoloader.php';
// Run the application!
//运行应用程序
Zend\Mvc\Application::init(require 'config/application.config.php')->run();
?>
init_autoloader.php文件的功能主要以下,app
一、会先检查是否有vendor/autoload.php文件,并设置ZF框架文件的主目录框架
二、若是没有verdor/autoload.php文件,使用自动加载工厂类,加载标准加载器ui
urlif ($zf2Path) {
if (isset($loader)) {
$loader->add('Zend', $zf2Path);
} else {
include $zf2Path . '/Zend/Loader/AutoloaderFactory.php';
Zend\Loader\AutoloaderFactory::factory(array(
'Zend\Loader\StandardAutoloader' => array(
'autoregister_zf' => true
)
));
}
}
调用Zend\Loader\AutoloaderFactory::factory方法,主要功能以下spa
一、引用'Zend\Loader\StandardAutoloader' 并初始化code
二、注册namespace Zendserver
三、调用Zend\Loader\StandAutoloader类的autoload方法载入spl__autoload