2014年7月7日 15:23:05
ci的视图功能很棒,
比如一个网页有四个部分组成,对应4个文件:header.php, sider.php, maincontent.php, footer .php
不用PHP的include,可以
1 this->load->view('header.php');
2
3 this->load->view('sider.php'); 4 5 this->load->view('maincontent.php'); 6 7 this->load->view('footer.php');
这样的好处是: 如果header.php, sider.php, footer.php是经常要用到的, 而maincontent.php是根据每个controller/action的不同而改变的,
可以写一个方法集成并扩展 this->load->view,在扩展的内部自动执行第1,3,7行,而将maincontent.php这类的文件名当作参数传进来
这样就减少了重复include的代码
用了smarty再使用ci的view,才觉得"PHP是最好的模版语言"真是对的
使用smarty还是用原生的PHP做视图语言,还要看框架哪个方便
----------------------------
PHP真是个大融合的语言
如果PHP类class A 里没有成员变量$a, 那么在$objA = new A;生成的对象中直接$objA->a = 111; 对象$objA里就有了成员变量$a;
1 <?php
2
3 class A 4 { 5 public $a = 123; 6 } 7 8 $objA = new A; 9 10 echo '<pre>'; 11 echo "//对象成员变量<br>"; 12 print_r(get_object_vars($objA)); 13 echo "//类成员变量<br>"; 14 print_r(get_class_vars('A')); 15 $objA->b = 111; 16 17 echo "//对象成员变量<br>"; 18 print_r(get_object_vars($objA)); 19 echo "//类成员变量<br>"; 20 print_r(get_class_vars('A')); 21 22 var_dump($objA->b);exit;
1 //对象成员变量
2 Array 3 ( 4 [a] => 123 5 ) 6 //类成员变量 7 Array 8 ( 9 [a] => 123 10 ) 11 //对象成员变量 12 Array 13 ( 14 [a] => 123 15 [b] => 111 16 ) 17 //类成员变量 18 Array 19 ( 20 [a] => 123 21 ) 22 int(111)
像是javascript的功能;
注意: 对象中有了这个自动添加的变量,但是类中是没有这个变量的,不可能,也不应该有
有了这个功能,我想能不能把用来给模版赋值的变量抽出来,
所有视图中的变量都从第三方对象读;
这个第三方对象里的模版变量由controller/action用上边PHP用法去添加
1 <?php
2
3 class Controller extends SuperController
4 {
5
6 public function __construct()
7 {
8 $this->objViewData = new ViewData;
9 }
10
11 public function action()
12 {
13 $this->objViewData->a = 1234;
14 $this->load_view('view.php');
15 }
16
17 }
18 ?>
19
20 //view.php
21
22 <body>
23 <?= $objViewData->a ?>
24 </body>
当然这样写还是有点儿繁琐,等到实践的时候再优化优化(*^__^*)