php代码复用性,PHP学习笔记5:代码重用和函数

读《PHP和MySQL Web开发》笔记合集:

1、 代码重用的好处

成本、可靠性、一致性

注意:只要原来的代码是模块化的而且编写良好,那么重复使用代码还会节省很多工作。在工作时,可以试着辨认一下今后可能再次要调用的代码段。

2、 require() 与被包含代码执行问题

如果希望一个被包含文件中的PHP代码能够被当成PH代码进行处理,必须将PHP代码放到PHP标记之间(不管被包含代码的文件是什么后缀,jpg、rar后缀都无所谓,只要里边的php代码是放在php标签里的,被包含后都能执行)

但是文件后缀,会影响浏览器访问该文件时是否直接载入,并以普通文本的形式查看源代码。

所以, 为了安全,请将被包含文件保存在文档树之外,或者使用标准的文件扩展名

例子:

3、如果 被包含文件不存在的话, require会给一个致命错误,而include 只会给一个警告。

还有两个变体, require_once() ,include_once() 确保一个被包含的文件,只能被引入一次。

注意:当引入函数库时,这两个函数才非常有用,使用这两个函数可以防止错误的引入同样的函数库两次,从而出现重复定义的错误。如果关心编码实践,可以考虑使用require() 和include() ,因为它们的运行速度较快。

通过require()  调用外部文件的时候,文件的名称并不会影响对它们的处理

4、即使php后缀的,文件,如果写HTML代码,直接访问,还是当做html被解析处理的

注意: 如果 希望保证一个文件被当做纯文本或HTML,而且不会执行任何PHP ,可以使用  readfile()  作为替代方法。这个函数将回显文件内容,不会对其进行解析。如果使用的是用户提供的文本,这可能就是一个重要的安全问题。

5、一个好的静态页面模板

例子:

...

...

....

...

6、希望将页眉和脚注加入到每个页面中

1)配置 php.ini

auto_prepend_file

auto_append_file

windows例子如下:

auto_prepend_file = “c:/Program Files/Apache Software Froundation/Apache2.2/include/header.php”

auto_append_file = “c:/Program Files/Apache Froup/Apache2/include/footer.php”

UNIX例子如下:

auto_prepend_file = “/home/username/include/header.php”

auto_append_file  = “/home/username/include/footer.php”

注意:如果使用了这些指令,就不需要再输入include() 语句,但页眉和页脚在页面中不再是页面的可选内容了

2)Apache Web下, 每个目录配置 .htaccess

这个文件需要包含如下两行代码:

php_value auto_prepend_file = “/home/username/include/header.php”

php_value  auto_append_file  = “/home/username/include/footer.php”

注意:其语法与php.ini中有所不同,没有等号,但很多php.ini中的设定也可以按照这种方法修改。

注意:在.htaccess 中设置选项,有极大的灵活性。可以在一台只影响你的目录的共享主机上进行,不需要重启服务器,也不需要管理员全下。

缺点是,使用.htaccess 的目录中每个被读取和被解析的文件每次都要进行处理,而不是只在启用时处理一次。

7、函数中可选参数的问题

首先注意,PHP里函数名不区分大小写,变量名区分,而JavaScript是都区分。

比如一个函数原型:

resource fopen( string  filename, string  mode [, bool  use_include_path [, resource  content]] )

详细解释:

"resource" 告诉我们该函数会返回一个资源,fopen()函数中,函数原型中共给出了4个参数。[] 刚括号指明了这个参数是可选的,可以忽略它们,如果忽略它们,它们会使用默认只。

请注意:一个具有多个可选值的函数,必须给可选参数从左到右赋值。比如,可以不给出 content 参数,或者可以不提供use_include_path 和 content 参数,但是不能不提供use_include_path ,而只给出content参数。

测试:

例子2:注意了哈,还有一个说法是,说php只传递值。

16依次赋给了第3个参数c。

8、调用未定义的函数

Fatal error: Call to undefined function tests1() in D:\wamp\www\study\fuc.php on line 10

注意:通常PHP给出的错误信息是非常有用的,它告诉我们错误出现在哪个文件中,哪一行,以及我们调用的函数名称。

如果看到这个信息,有3个可能:

1)函数名称的拼写是否正确;

2)这个函数是否存在于所有的PHP版本中;

3)所调用的函数是否是PHP扩展的一部分,而该部分并没有被载入。

9、函数的基本结构

1)函数命名有如下几个限制

函数名称不能喝已有函数重名(许多语言允许重复使用函数名称,叫“重载”,PHP不支持函数重载);

函数名称只能包含字母、数字和下划线且不能以数字开始。

注意:

$name 并不是一个函数的合法名称,但类似于$name(); 的函数调用,也可以正确地执行 ,这是根据$name 的值来确定的。PHP可以取出保存在$name 中的值,寻找具有那个名称的函数,并且调用该函数。这种函数类型被称为 可变函数,而且有时候是有用的。

2)在{} 花括号中,可以包含在PHP 脚本的其他地方都合法的代码,其中包括函数调用、新的变量或函数声明、require()或include() 语句类声明以及HTML代码。

如果希望在一个函数中退出PHP 并输入 HTML脚本,可以像在脚本其他地方做的那样,使用一个风的PHP标记,然后再编写HTML。例子:

function my_function() {

?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值