codeigniter 视图

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>

当然这样写还是有点儿繁琐,等到实践的时候再优化优化(*^__^*) 

原文地址:https://www.cnblogs.com/iLoveMyD/p/3829778.html