图6-4 网站布局ThinkPHP 3.0之前的模板引擎没有布局的概念,但开发人员可以使用include包含文件达到网站布局的效果。布局文件允许嵌套,如果网站页面更加复杂,还可以结合include等标签实现开发需求。另外,如果不需要全局布局,也可以单独在当前页面中使用布局文件,只需要在当前页面头部加上
2023-11-04
电子邮件发送是网站开发中重要的功能,典型的应用场景有会员注册、邮件订阅、密码找回等。可靠的邮件发送系统能够有效改善用户体验。PHP本身内置了mail函数,该函数在处理邮件上具有快速、稳定的特性,所以许多大型网站都在使用mail函数构建邮件系统。但是mail函数对运行环境要求比较苛刻,而且不支持SMTP登录验证,所以很多开发者更加喜欢使用基于安全验证的大型邮件系统(例如Postfix、SendMail等)来构建PHP邮件发送程序。
事实上,主流的邮件系统都是基于SMTP验证的,并且支持Socket连接。所以开发人员可以直接在PHP中使用fsockopen函数向服务器提交数据,SMTP默认情况下会监听25号通信端口,如果校验通过,邮件系统会直接执行Socket发送的命令,完成邮件处理。
ThinkPHP本身没有内置邮件发送扩展,接下来将使用第三方扩展类库实现邮件发送。下载地址为http://www.beauty-soft.net/book/php_mvc/vendor/send_message.html。
下载完成并解压后,得到SendMessage.class.php类库文件,将该文件复制到项目Lib/ORG目录中。接下来就可以在项目中使用了。如以下代码所示。
需要注意的是,这里只是完成了PHP代码方面的编程,读者在学习或开发中需要正确发送邮件,还需要在本机或远程服务器上配置SMTP邮件发送系统(建议使用Postfix),关于邮件系统的搭建,读者可以参阅笔者在博客里写的一篇文章,网址为http://beauty-soft.net/blog/ceiba/PHP/postfix.html,在此不再细述。
SendMessage扩展类库需要在初始化时配置数据选项,也可以直接在项目配置文件中定义,前者优先级大于后者。下面将介绍常用及重要的配置项,如表11-3所示。
表11-3 SendMessage配置选项
其中邮件配置项必须为mail元素值。mail_templ配置项表示模板文件,可以指定HTML文件或者PHP文件,该文件支持如下模板标签。(www.chuimin.cn)
➢{title}:HTML邮件标题。
➢{body}:HTML邮件正文内容。
➢{form}:邮件发送者。
➢{time}:邮件发送时间。
一个最简单的邮件模板如以下代码所示。
所有配置项支持在项目配置文件中配置,只需要将表11-3的配置项赋值给SendMessage元素即可,如以下代码所示。
有关PHP MVC开发实战的文章
图6-4 网站布局ThinkPHP 3.0之前的模板引擎没有布局的概念,但开发人员可以使用include包含文件达到网站布局的效果。布局文件允许嵌套,如果网站页面更加复杂,还可以结合include等标签实现开发需求。另外,如果不需要全局布局,也可以单独在当前页面中使用布局文件,只需要在当前页面头部加上
2023-11-04
图12-2 SOAP服务如果服务没有开启,需要在PHP配置文件中开启,如以下代码所示。其中参数1表示SOA服务描述文件,即WSDL文件,该文件是SOAP通信的核心;参数2表示SOAP协议版本,常用的版本有1.0及1.2,本章内容及示例全部基于SOAP 1.2版本实现。使用普通的Firebug等插件不能获取到异常信息,而断点调试是PHP的弱项,所以调试问题将会是SOAP开发首要面对的问题。......
2023-11-04
与PHP的include不同,在模板中使用include对引擎的解释过程不受任何影响,就算被包含的文件不存在也不会被中断执行。另外URL模式尽量不要使用自定义的URL REWRITE模式,否则目录层级有可能发生改变,导致include找不到文件。......
2023-11-04
在ThinkPHP模板中需要使用“|”分隔符引入函数,然后使用“=”号来为函数赋参。在模板中调用formatTime自定义函数和调用PHP内置的函数是一样的。这里只是简单地演示在模板中怎样使用函数,在实际应用开发中,读者可根据需要在模板标签中引入函数。在ThinkPHP模板引擎中,使用函数嵌套的顺序由左到右,即模板引擎最先解释左边的函数,最终的结果由最右边的函数决定,如以下代码所示。......
2023-11-04
接下来将介绍Zend Framework的安装与使用。由于Zend Framework使用PDO对数据库进行操作,搭建好运行环境后还必须手动开启相应的PDO功能。完成后就能够进行Zend Framework程序开发了。......
2023-11-04
接下来将使用CodeIgniter实现一个简单的新闻列表,用户点击列表中的新闻标题将会进入新闻的正文页面,通过该例子演示CodeIgniter实现MVC开发的流程。在CodeIgniter中,控制器命名规则比较灵活,它不需要加前缀或后缀,一个普通的文件即可。......
2023-11-04
在数据库开发中,查询和插入数据是同等重要的,ThinkPHP对数据的插入、更新等都做了高度封装,系统提供create方法,用于创建数据对象。图7-2 create创建数据流程2.create数据操作前面介绍了create方法的运行过程,读者只需要理解即可,在实际应用开发中创建数据的过程是极其简单的。下面将结合示例代码,介绍create方法的实际应用,加深对create方法的认识。一切完成后,此时数据对象存放于内存中,使用add方法进行提交,完成整个create创建数据的过程。......
2023-11-04
首先需要使用content方法连接上Memcached服务器,代码如下所示。接下来将继续使用Memcache成员方法对缓存数据库进行操作。stats cachedump:显示slabs指定范围内的缓存项,例如stats cachedump 0,3。......
2023-11-04
相关推荐