入口文件

2016-07-21 09:38:34
admin
2905
最后编辑:admin 于 2018-05-29 16:40:53

zentaoPHP框架采用单一入口模式开发,所有用户请求都是从入口文件开始的,由入口文件集中调度控制,并且所有的应用的入口文件是类似的,入口文件中主要包括:

1.加载框架核心文件,3.0版本开始支持框架核心扩展,使之继承base文件夹中的原核心文件。

include './framework/router.class.php';
include './framework/control.class.php';
include './framework/model.class.php';
include './framework/helper.class.php';

2.创建应用,初始化router类。

$app = router::createApp($appName, $appRoot, $className);

  创建应用时,createApp方法有三个参数:应用名称、应用路径、要实例化的路由类名。

  如果用户没有指定应用路径,则应用路径默认为basePath/app/appName/

  路由类默认为baseRouter,如果有继承的子类,则填入子类名

   

    public static function createApp($appName = 'demo', $appRoot = '', $className = 'router')
    {
        if(empty($className)) $className = __CLASS__;
        return new $className($appName, $appRoot);
    }


3.加载公共模块,分析请求,然后加载相应请求的模块。

$common = $app->loadCommon();
$app->parseRequest();
$app->loadModule();

加载公共模块,实例化common模块的model对象。

分析请求,得到请求的模块名、方法名和参数。

加载模块:
引入模块的控制器(control)文件:先检查是否有扩展目录,若没有则直接引入默认control文件,若有扩展目录,则引入请求方法的扩展文件,若没有请求方法的扩展文件,则还是引入默认control文件。
然后获取control文件中的类名,并实例化控制器对象。

实例化控制器对象时:
1.把全局变量设为其成员属性,方便其子类调用;
2.设置当前模块名和方法名,加载并实例化当前模块的modle类,可用$this->模块名进行访问。
3.设置客户端设备类型,并设置不同设备类型的视图文件前缀。
4.初始化视图对象$this->view。
5.设置超级变量。


入口文件并不一定都是指index.php 文件,因为我们可以为不同的项目应用创建不同的入口文件,例如,前台的入口文件为index.php ,后台的入口文件可能是admin.php。


    发表评论
    评论通过审核后显示。