ThinkPHP的动作和一个普通的PHP类方法并没有多大区别,它能够直接输出信息,不需要借助模板,也不需要分配变量,开发人员可以使用标准的PHP代码输出HTML等信息。动作的设计原则是用来做逻辑运算,所以应尽量避免在动作中混入HTML等非PHP代码,Action基类本身提供了display方法,用于结果输出。......
2023-11-04
在一些网站中,我们经常看到当访问一些不存在或者过期的网页时,就会弹出友好的提示说明。这是利用Web服务器的404错误处理机制实现的,所有主流的Web服务器都提供了这项功能。在ThinkPHP中,开发人员还可以利用空控制器与空动作实现错误404的功能。不仅如此,空控制器与空动作更加灵活,因为它也是一个真实的实例类和方法,能够实现MVC所有的功能,例如在错误出现时可以将错误信息插入数据库,提供个性化的提示等。
当然,空控制器与空动作是不能代替服务器的错误页面处理机制的。空控制器与空动作只能处理MVC框架内的页面,不能处理框架之外的页面。空控制器与空动作不能处理URL REWRITE自定义格式的页面。下面在将分别介绍空控制器与空动作。
1.空控制器
当用户所访问的URL不存在需要访问的控制器时,空控制器就派上用场了。假设用户访问的URL为http://tp.localhost/index.php/bbs,但该项目内并不存在BbsAction控制器,那么系统将会给出错误提示,如图6-2所示。
图6-2 控制器不存在提示
需要注意的是,在调试时务必开启调试模式(即在入口文件中定义define("APP_DEBUG",true)),否则只会呈现一片空白。如图6-2所示,信息提示Bbs模块(控制器)并不存在,项目停止执行。接下来在项目Lib/Action目录下创建EmptyAction.class.php控制器类文件,如以下代码所示。(www.chuimin.cn)
再次访问http://tp.localhost/index.php/bbs网址,系统将会直接调用Empty控制器。开发人员完全可以在空控制器中定义更多的私有成员方法,实现功能强大的自定义404信息提示。
2.空动作
空动作(_emtpy)与空控制器一样,都是系统为了避免URL异常而设计的。与空控制器定位到栏目(分类)不一样,空动作将定位到具体的页面,比如用户需要访问http://tp.localhost/index/user.htm(使用REWRITE URL模式,相当于http://tp.localhost/index.php/index/user)。但Index控制器中并不存在user动作,那么只需要在Index控制器中加入空动作,系统就会把_emtpy动作代替user动作。如以下代码所示。
有关PHP MVC开发实战的文章
ThinkPHP的动作和一个普通的PHP类方法并没有多大区别,它能够直接输出信息,不需要借助模板,也不需要分配变量,开发人员可以使用标准的PHP代码输出HTML等信息。动作的设计原则是用来做逻辑运算,所以应尽量避免在动作中混入HTML等非PHP代码,Action基类本身提供了display方法,用于结果输出。......
2023-11-04
在ThinkPHP中,控制器是允许互相调用的。大体上可分为两种调用方式:一种为当前项目控制之间的调用;另一种为跨项目的控制器调用。为了便于使用,系统还提供2个快捷函数处理控制器的调用,下面结合示例代码分别介绍这2个快捷函数的使用方式。此外,如果项目使用模块分组方式,需要在控制器前加上“/”分隔符,跨项目控制器的调用方式如以下代码所示。上述代码表示实例化Admin项目下的Member控制器,然后调用user动作。......
2023-11-04
接下来将使用CodeIgniter实现一个简单的新闻列表,用户点击列表中的新闻标题将会进入新闻的正文页面,通过该例子演示CodeIgniter实现MVC开发的流程。在CodeIgniter中,控制器命名规则比较灵活,它不需要加前缀或后缀,一个普通的文件即可。......
2023-11-04
PHP 5后的版本借鉴了大量Java思想,得益于早期PHP面向过程编程支持,PHP在实现MVC设计中变得较灵活、易用。但是随着PHP 5.x的到来,各种MVC框架的出现,尤其Zend推出的Zend Framework,彻底地改变了PHP状况,使得PHP也能够实现优雅的Web编程。MVC设计模式将使代码将变得简洁。但是在MVC设计模式中,Index称为动作。当然,MVC只是一种设计模式,在开源的PHP编程世界中,已经拥有众多的MVC编程框架。......
2023-11-04
前面已经简单介绍过ThinkPHP视图引擎,这些标签处理机制类似于JSP tag,使用XML作为标签的渲染方式,开发人员可以方便地在网页中嵌入XML标签,然后由ThinkPHP视图引擎解释成标准的PHP代码。ThinkPHP的视图引擎之所以高效,主要体现在它的标签扩展性。ThinkPHP的视图标签扩展性够完美地与后台控制器代码相结合,例如在Smarty中使用函数功能,首先需要在后台PHP代码注册,而在ThinkPHP中完全不需要,如以下代码所示。......
2023-11-04
系统共支持7种模式扩展,下面将分别对最常用的几种模式进行介绍。表11-1 CURD操作接口如表11-1所示,参数$data表示传入或返回的数据信息;参数$options表示返回当前操作的模型名称及表前缀。......
2023-11-04
下面通过示例代码,演示Cookie函数的实际应用。Cookie能够存放包括中文在内的字符,但长度需要控制在225个字符之内。通过前面的学习,相信读者已经能够掌握Session及Cookie的操作了。虽然Cookie存放于客户端,但是并不意味着Cookie不适合用于会员验证等场景。所以很多网站会使用加密的方式存放Cookie用户名及密码,甚至结合软件与硬件签名实现高度安全的Cookie。总而言之,使用Cookie存放登录数据是可行的,但要做好加密与解密相关操作。......
2023-11-04
图9-8 简体中文首页表单前面提到过,在默认情况下系统会自动识别当前的浏览器语言环境,并调用相应的语言包。l=zh-tw,表单中的文字将转换为简体中文模式,如图9-9所示。图9-9 繁体中文首页表单在后台中使用多语言在后台中使用多语言通常用于系统提示信息、日志记录、表单验证等。......
2023-11-04
相关推荐