• view视图--display中echo出ob_get_contents的缓冲内容--(实现,拼接好文件--导入文件)


    view.php
    01默认设置有3个公共的属性,其他属性.后面实例化的时候.通过传递参数.foreach遍历,不断的增加属性
    02view对象的实例化.位置在-->控制器父类的构造方法中
    视图的目录名 $dir,
    视图的文件名 $file,
    后缀名:默认 $ext = '.php';

    工厂类,实例化view时.传递路径.此时.有默认的文件后缀. $this->view = & factory::view($app->app)
    就差display()传递文件名.拼接成文件的路径php文件.fetch缓存ob_get_contents内容,display类echo输出

    工厂类,实例化view视图时. ,view构造方法中,增加一个dir目录值

    function __construct($config = null)
    {
    if (is_array($config))
    {
    foreach ($config as $key => $value)
    {
    $this->{$key} = $value;
    }
    }
    $this->clean_vars();
    }

    view构造方法中,通过foreach()遍历,不断的增加view视图的属性,比如配置文件,字符集设置,

    set_view()方法中,增加文件属性(拼接文件).给后面导入视图用
    set_view($view.){
    $this->file = $this->dir.$view.$this->ext; //拼接视图文件名
    return $this;
    }

    fetch(){
    include $this->_file();//导入该文件
    $output = ob_get_contents();//获取ob缓存中的文件内容
    return $output;//返回给display
    }

    display直接echo 出fetch放回的内容
    function display($view, $app = null)
    {
    echo $this->fetch($view, $app);
    }

    view对象的实例化.位置在-->控制器父类的构造方法中.调用工厂类中,实例化,存入静态

    $this->view = & factory::view($app->app);//这里只需传递模块,(最后的实例化,需要具体.根目录开始-到模块-到视图
    中)一个模块一个视图样式
    $this->view->assign('CONFIG', config('config'));
    $this->view->assign('SETTING', & $this->setting);
    $this->view->assign($array);

    发送给视图页面包括
    01系统配置数据,
    02设置数据
    03用户id,名称,分组id,角色id,部门id

    工厂类
    class factory 无需继承
    private static $objects;设置私有属性.静态,用来存对象
    public static function &view($app = 'system')
    {
    if (!isset(self::$objects['view']))
    {
    import('core.view');
    self::$objects['view'] = new view(array('dir'=>CMSTOP_PATH.'apps'.DS.$app.DS.'view'.DS));
    //存入静态属性.需要指定类名,谁----->使用了这个静态属性------双冒号 本类使用self::
    }
    return self::$objects['view'];
    }

    检查不存在.才重新实例化.(导入view--实例化--只需传递模块)一个模块一个样式
    否则,直接返回

    框架类,需要定义自己的位置,以便加载类.拼接导入php文件用
    framework.php
    defined('FW_PATH') or define('FW_PATH', dirname(__FILE__).DS);

    加载类loader.php放在框架目录里
    定义,私有,静态属性 $paths 存储,导入的php文件的路径

    工厂类调用功能,公共方法,
    import('core.view'); //加载类文件loader.php.放在核心目录core同级,当前框架php文件目录后,可以拼接core目录和文
    件.方法导入

    公共方法,在加载类最后面.也就是外部.编写函数,直接调用,加载类,静态的导入方法
    function import($path)
    {
    return loader::import($path);
    }

    static function import($filepath, $base = null, $key = null)
    {
    $keypath = $key ? $key.$filepath : $filepath;

    if (!isset(self::$paths[$keypath]))
    {
    if (is_null($base)) $base = FW_PATH;//设置第二个参数.可以指定目录.导入.否则默认在framework目录下
    $path = str_replace('.', DS, $filepath); //把导入时.写的点.换成斜杠.拼接框架模块,和后缀php即可导入
    self::$paths[$keypath] = include $base.$path.'.php'; //存入.当前类,双冒号,的路径属性中
    }
    return self::$paths[$keypath];
    }

    如果.在私有,静态属性中.不存在这个php文件的路径.才需要拼接php文件路径.并导入php文件
    如果该静态属性 存在.也就是已经导入了该php文件了.(返不返回都可以)默认返回php路径

    显示页面-->display-->fetch获取页面内容-->ob_start (output buffer输出缓存)-->apmserv5.2.6服务器代表php5.2--
    >output_buffering默认关闭

  • 相关阅读:
    六、Oracle的数据库管理及数据字典和动态视图
    八、Oracle的数据完整性
    js回调函数
    PL/SQL编程(三)
    四、Oracle的复杂查询
    三、Oracle的简单查询
    C#实现双向链表
    什么是Unix时间戳 [转]
    ANSI escape sequences
    Gibbs Sampling [转]
  • 原文地址:https://www.cnblogs.com/bj-tony/p/5329041.html
Copyright © 2020-2023  润新知