织梦单表模型视图类构造函数__construct($aid)源码分析教程
构造函数所在文件:include/arc.sgpage.class.php
首先,要注意的是这个单表模型视图类也叫单表模型列表视图类,它与分类信息的那个视图类名称一样,但是,是二个东西,这个单表模型指的是模块插件里面的那个单表,它对应的数据库表是#@__sgpage,而分类信息那个单表模型对应的是#@__addoninfo 。
单独面页如下图所示:
表#@__sgpage的结构如下图所示:
这个类arc.sgpage.class.php 除了这个构造函数其它的代码都非常简单,这个构造函数比其它类的构造函数多做了很多事,现在我们就分析这个构造函数,看看它都做什么了。
源码分析教程开始:
设置全局数据库对象,然后,实例化模板引擎,设置命名空间。
从数据库表#@__sgpage 查询出aid 等于 参数里传过来的$aid 的表中所有字段,什么样的类一般操作的就是这个类对应的表,因为,类就是处理这个表数据的。
接下来跟其它类一样,设置全局参数的值,这个不用多解释了,已经在多个类分析过了。
判断$this->fields['ismake']是否为1,当为1时,表示编译标签字符串,所以,我们要处理当为1时,进行编译标签。
代码如下:
if($this->Fields['ismake']==1) { $pv = new PartView(); $pv->SetTemplet($this->Fields['body'],'string'); $this->Fields['body'] = $pv->GetResult(); }
这个段通过实例化PartView()把表#@__sgpage 里面的字段body内容进行解析编译,然后,把结果再赋给数组$this->Fields里面的键为body单元。
下面通过表#@_sgpage里面模板字段,把这个单页模板$this->Fields['template'] 取出来进行解析,一般的构造函数这一步都会去解析编译,而是由该类的方法进行解析编译,而这个构造方法一起把这个给做了。
总结:实例上这个构造函数也是为了组装数组$this->Fields ,但是,同时这个构造函数对模板和数据库表里面的body字段进行解析编译。