第五章 代码重用与函数编写(1)
2016-08-02 11:58 yojiaku 阅读(268) 评论(0) 编辑 收藏 举报****************************** 第五章 代码重用与函数编写 *********************************
代码重用的好处;使用require()和include()函数;函数介绍;定义函数;使用参数;理解作用域;
返回值;参数的引用调用和值调用;实现递归;使用命名空间
*************** 5.1 代码重用的好处
1.成本低;2.可靠性;3.一致性:系统的外部接口是一致的,其中包括用户接口和系统的外部接口。
*************** 5.2 使用require()和include()函数
使用一条require()或include()语句,可以将一个文件载入到PHP脚本中,这个文件可以包含任何希望在一个脚本中输入的内容,
其中包括PHP语句、文本、HTML标记、PHP函数或PHP类。
(同C语言的#include一样)
两者区别:函数失败后,require()函数将给出一个致命错误,而include()只是给一个警告。
变体函数:require_once()和include_once(),确保包含的文件只能被引入一次。通常用于页眉和脚注(header and footer)。
*************** 5.2.1 文件扩展名和require()函数
现在有一个reusable.php文件:
<?php echo "Here is a very simple PHP statement.<br />"; ?>
还有一个main.php文件:
<?php echo "This is the main file.<br />"; require('reusable.php'); echo "The script will end now.<br />"; ?>
我们注意到在main.php文件中使用了require()函数引用了reusable.php文件,那么打印结果为:
This is the main file.
Here is a very simple PHP statement.
The script will end now.
注意:当使用require()语句时,必须注意处理文件扩展名和PHP标记的不同方式。
可以使用任意扩展名来命名包含文件,但要尽量遵循一个规则,将扩展名命名为.inc或.php。
.inc文件(include file):实际上,文件的后缀对于文件包含无所谓,一般使用inc为后缀,这样能体现该文件的作用。
*************** 5.2.2 使用require()制作Web站点的模板
如果一个网站有几十上百个网页,而且他们风格一致,只是有一些细微的改变,相对于剪切粘贴数十个、数百个甚至数千个页面,直接重用各个页面中通用的
HTML代码部分是一个更好的办法。
例子:home.html —— TLA咨询公司主页的HTML脚本
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>TLA Consulting Pty Ltd</title> <style type="text/css"> h1{ color:white; font-size: 24pt; text-align: center; font-family: Arial,sans-serif; } .menu{ color: white ; font-size: 12pt; text-align: center; font-family: Arial,sans-serif; font-weight: bold; } td{ background: black; } p{ color: black; font-size: 12pt; text-align: justify; font-family: Arial,sans-serif; font-weight: bold; } a:link,a:visited,a:active{ color: white; } </style> </head> <body> <!-- page header --> <table width="100%" cellpadding="12" cellspacing="0" border="0"> <tr bgcolor="black"> <td align="left"><img src="logo.gif" alt="TLA logo" height=70 width=70></td> <td> <h1>TLA Consulting</h1> </td> <td align="right"><img src="logo.gif" alt="TLA logo" height=70 width=70></td> </tr> </table> <!-- menu --> <table width="100%" bgcolor="white" cellpadding="4" cellspacing="4"> <tr > <td width="25%"> <img src="s-logo.gif" alt="" height=20 width=20> <span class="menu">Home</span></td> <td width="25%"> <img src="s-logo.gif" alt="" height=20 width=20> <span class="menu">Contact</span></td> <td width="25%"> <img src="s-logo.gif" alt="" height=20 width=20> <span class="menu">Services</span></td> <td width="25%"> <img src="s-logo.gif" alt="" height=20 width=20> <span class="menu">Site Map</span></td> </tr> </table> <!-- page content --> <p>Welcome to the home of TLA Consulting. Please take some time to get to know us.</p> <p>We specialize in serving your business needs and hope to hear from you soon.</p> <!-- page footer --> <table width="100%" bgcolor="black" cellpadding="12" border="0"> <tr> <td> <p class="foot">© TLA Consulting Pty Ltd.</p> <p class="foot">Please see our <a href="legal.php">legal information page</a></p> </td> </tr> </table> </body> </html>
我们可以看到这个文件由许多不同的代码部分组成:
HTMl标题包含了在该页面中用到的级联风格样式单(CSS)中的样式定义==>
<head> <meta charset="UTF-8"> <title>TLA Consulting Pty Ltd</title> <style type="text/css"> h1{ color:white; font-size: 24pt; text-align: center; font-family: Arial,sans-serif; } .menu{ color: white ; font-size: 12pt; text-align: center; font-family: Arial,sans-serif; font-weight: bold; } td{ background: black; } p{ color: black; font-size: 12pt; text-align: justify; font-family: Arial,sans-serif; font-weight: bold; } a:link,a:visited,a:active{ color: white; } </style> </head>
标有“page header”部分显示了公司的名称(TLA Consulting)和徽标(logo.gif);
标有“menu”部分创建了页面的导航条;
标有“page content”部分是页面中的文本;
然后是脚注。
我们将这个文件分割,然后给这些部分分别命名为header.php, home.php, footer.php。
这样,文件header.php 和 footer.php中都包含有在其他页面中可以重用的代码。
像下面这样:
1.我们用home.php代替home.html,它包含页面内容和两个require语句:
home.php —— TLA公司主页的php脚本
<?php require('header.inc'); ?> <!-- page content --> <p>Welcome to the home of TLA Consulting. Please take some time to get to know us.</p> <p>We specialize in serving your business needs and hope to hear from you soon.</p> <?php require('footer.inc'); ?>
2.文件header.inc包含了页面使用的级联风格样式单定义以及公司名称和导航
header.inc —— 所有TLA网站的页面可重复使用的页眉
<html lang="en"> <head> <meta charset="UTF-8"> <title>TLA Consulting Pty Ltd</title> <style type="text/css"> h1{ color:white; font-size: 24pt; text-align: center; font-family: Arial,sans-serif; } .menu{ color: white ; font-size: 12pt; text-align: center; font-family: Arial,sans-serif; font-weight: bold; } td{ background: black; } p{ color: black; font-size: 12pt; text-align: justify; font-family: Arial,sans-serif; font-weight: bold; } a:link,a:visited,a:active{ color: white; } </style> </head> <body> <!-- page header --> <table width="100%" cellpadding="12" cellspacing="0" border="0"> <tr bgcolor="black"> <td align="left"><img src="logo.gif" alt="TLA logo" height=70 width=70></td> <td> <h1>TLA Consulting</h1> </td> <td align="right"><img src="logo.gif" alt="TLA logo" height=70 width=70></td> </tr> </table> <!-- menu --> <table width="100%" bgcolor="white" cellpadding="4" cellspacing="4"> <tr > <td width="25%"> <img src="s-logo.gif" alt="" height=20 width=20> <span class="menu">Home</span></td> <td width="25%"> <img src="s-logo.gif" alt="" height=20 width=20> <span class="menu">Contact</span></td> <td width="25%"> <img src="s-logo.gif" alt="" height=20 width=20> <span class="menu">Services</span></td> <td width="25%"> <img src="s-logo.gif" alt="" height=20 width=20> <span class="menu">Site Map</span></td> </tr> </table>
我们注意到,这里相当于从home.html切了一部分
3.footer.inc包含页面底部脚注处显示的表格
footer.inc —— 所有TLA网站的页面可重复使用的脚注
<!-- page footer --> <table width="100%" bgcolor="black" cellpadding="12" border="0"> <tr> <td> <p class="foot">© TLA Consulting Pty Ltd.</p> <p class="foot">Please see our <a href="legal.php">legal information page</a></p> </td> </tr> </table> </body> </html>
4.运行home.php文件,效果与home.html一样
运行结果:
使用上述方法很容易就使网站拥有统一的风格。
(注意:书上的文件后缀前后不同,引用的文件要与目录中存在的文件一致)
最重要的是,用这种方法,我们也很容易修改脚注和页眉(只需要进行一次修改)。
******************** 5.2.3 使用auto_prepend_file 和 auto_append_file
在配置文件php.ini中有两个选项:auto_prepend_file , auto_append_file,通过这两个选项来设置页眉和脚注,可以
保证它们在每个页面的前后被载入,如果载入的文件不存在,则产生警告。
如果使用了这些指令,就不需要输入include()语句,但页眉和脚注不再是页面的可选内容。
(一般不使用这种方法)