PHP脚本的10个技巧(3)


Posted in PHP onOctober 09, 2006

包含文件
如果你目前着手的Web站点开发项目规模较大,那你对代码重用必定深有体会,比方说,不管是HTML还是PHP代码块,只要项目足够大,比如有1000个Web页,你即便是一年只修改一次包含版权信息的页脚也会让你痛不欲生。

而PHP可以通过一些函数帮助你重用代码,你要具体用到的函数依赖于你打算重用的内容。

主要的函数是:

* include() 和 include_once()
* require() 和require_once()

include()函数包含给定的文件,比如:

include('/home/me/myfile');

包含文件中的任何代码都将在include() 所在的代码页的变量范围之内执行。你可以包含服务器上的静态文件或者包含在其他服务器上的目标文件,方法是组合使用include()和fopen()。

include_once()函数和include()函数功能类似,只是该函数会检查被包含文件内的代码是否已经被目前的脚本所包含过。如果代码已经被脚本所包含,该函数就不再包含相应的文件了。

require()函数用给定文件的内容取代自身。这一替换过程发生在PHP引擎编译你的代码而不是执行代码阶段,这可和include()不一样,后者首先被计算再加到文挡中。require()函数多用于静态元素,而include()函数则主要用于动态元素。和include_once()类似,require_once()函数会检查给定代码是否早已经插入到了文挡内,如果这样,给定代码就不会被再次插入文档。

我建议你最好对诸如版权、静态文本和其他不含变量的元素这类信息采用require函数,那些依赖其他脚本来实现自己内容的元素也最好采用require函数,例如:

<HTML>
<HEAD><TITLE>Something</TITLE></HEAD>
<BODY>
[a lot of content]

<?
// insert copyright
require('/home/me/mycopyright');
?>

</BODY>
</HTML>

另一方面,我经常用include()函数把函数库或类似的内容放到脚本之外:

<?
// get my function library
include('/home/me/myfunctions');

// do PHP things with my functions ?>

<HTML>
<HEAD><TITLE>Something</TITLE></HEAD>
<BODY>
[a lot of content]
</BODY>
</HTML>

你肯定会问:“那么,被included或者被required的文件都来自哪里呢?”答案很简单:“你的系统。”不过,有时,有些代码会包含了诸如带有用户名和密码的数据库连接函数之类的安全信息,在这样的情况下,显而易见,你肯定不希望这些东西也成为文档的一部分弄得全世界都知道。

你可以把包含文件(included或者required)放在系统的任何地方,只要用户所能用到的PHP可以访问这些文件即可。你还可以给这些文件以任何你希望给出的文件扩展名,或者不设扩展名。

使用include()和require()函数可以让Web站点上普遍存在或者经常变动的元素变得更加容易处理。

PHP 相关文章推荐
php 计算两个时间戳相隔的时间的函数(小时)
Dec 18 PHP
PHP 网络开发详解之远程文件包含漏洞
Apr 25 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
Jun 15 PHP
深入PHP许愿墙模块功能分析
Jun 25 PHP
PHP连接SQLServer2005方法及代码
Dec 26 PHP
PHP生成二维码的两个方法和实例
Jul 01 PHP
php使用递归函数实现数字累加的方法
Mar 16 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
Jun 27 PHP
LNMP部署laravel以及xhprof安装使用教程
Sep 14 PHP
PHP数组遍历的几种常见方式总结
Feb 15 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 PHP
PHP手机号码及邮箱正则表达式实例解析
Jul 11 PHP
社区(php&amp;&amp;mysql)六
Oct 09 #PHP
判“新”函数:得到今天与明天的秒数
Oct 09 #PHP
社区(php&amp;&amp;mysql)五
Oct 09 #PHP
社区(php&amp;&amp;mysql)四
Oct 09 #PHP
社区(php&amp;&amp;mysql)三
Oct 09 #PHP
利用php来自动调用不同服务器上的flash
Oct 09 #PHP
如何做到多笔资料的同步
Oct 09 #PHP
You might like
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
php生成酷炫的四个字符验证码
2016/04/22 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
Nginx上传文件全部缓存解决方案
2015/08/17 Javascript
详解JS正则replace的使用方法
2016/03/06 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
JS实现太极旋转思路分析
2016/12/09 Javascript
vuejs父子组件通信的问题
2017/01/11 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
python实现监控windows服务并自动启动服务示例
2014/04/17 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
numpy返回array中元素的index方法
2018/06/27 Python
python实现决策树分类
2018/08/30 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
Django如何实现上传图片功能
2019/08/16 Python
python OpenCV GrabCut使用实例解析
2019/11/11 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
opencv+python实现均值滤波
2020/02/19 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
C#和SQL Server的面试题
2016/08/12 面试题
护士实习自我鉴定
2013/10/22 职场文书
商业房地产广告语
2014/03/13 职场文书
公司人事任命通知
2015/04/20 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis
Redis中一个String类型引发的惨案
2021/07/25 Redis
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android