当前位置: 首页 > news >正文

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>

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

相关文章:

  • Linux后台运行
  • jquery获取单选button选中的值
  • objdump
  • 视图显示库存余量
  • C++11
  • SQL Server基础知识
  • 一个byte缓存--用于图片或视频
  • 微软 WPC 2014 合作伙伴keynote
  • 【墙裂推荐】适合高中生看的HTML5网页开发实例入门书
  • yum功能:安装软件组,全系统更新
  • SendMessage,BroadcastMessage
  • Windows网络命令
  • 数据库设计原则
  • UESTC 2014 Summer Training #6 Div.2
  • 堆栈原理
  • css布局,左右固定中间自适应实现
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • java8 Stream Pipelines 浅析
  • Javascript设计模式学习之Observer(观察者)模式
  • js面向对象
  • nodejs调试方法
  • OSS Web直传 (文件图片)
  • Spring Boot快速入门(一):Hello Spring Boot
  • SpringBoot几种定时任务的实现方式
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • v-if和v-for连用出现的问题
  • Vue学习第二天
  • WebSocket使用
  • 记一次删除Git记录中的大文件的过程
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 收藏好这篇,别再只说“数据劫持”了
  • ###C语言程序设计-----C语言学习(3)#
  • #《AI中文版》V3 第 1 章 概述
  • $.ajax()
  • (1)(1.13) SiK无线电高级配置(六)
  • (八)Spring源码解析:Spring MVC
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (已解决)什么是vue导航守卫
  • (译)2019年前端性能优化清单 — 下篇
  • (原)本想说脏话,奈何已放下
  • (转)程序员疫苗:代码注入
  • 、写入Shellcode到注册表上线
  • .NET 8.0 发布到 IIS
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .Net 知识杂记
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • @EnableConfigurationProperties注解使用
  • @JsonFormat与@DateTimeFormat注解的使用
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [20140403]查询是否产生日志
  • [Arduino学习] ESP8266读取DHT11数字温湿度传感器数据