PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2_php基础_脚本之家

清单3-2 复制代码 代码如下:

Sample

文件包含和函数范围
当把函数从脚本移动到包含文件时,会如何影响函数作用范围及调用它们的能力。
如果一个函数在另一个文件中,并且这个文件没有通过include和require包含在当前脚本中,那么调用是非法的
为了避免这个问题,在脚本开头包含其他文件是个好主意。 当共享变成问题时
为了避免重复加载共享文件,可以用require_once语言结构防止函数或者结构重复定义的问题

从本章中,我们了解 .创建可以调用的函数以便重用代码
.把参数传递给函数并且从函数返回值和脚本的不同部分中的变量和数据进行交互
.把代码和函数组存入到其他文件中,并且我们的脚本内包含这些文件.
3.1基本代码重用:函数 3.1.1 定义和调用函数
关键字function通知php这是一个函数,后面跟着的是函数的名称,它可以是字母、数字、字符或下划线
函数名称之后是参数列表,然后是函数体。在其它语言中名称相同、但是参数列表不同的函数,php不支持这一特性。
复制代码 代码如下: n”; } // // Extended
characters are ok. // function grüß_dich() { echo “Extended Characters
are ok, but be careful!
n”; } // // REALLY extended characters are ok too!! Your file will //
probably have to be saved in a Unicode format though, // such as UTF-8 .
// function 日本语のファンクション() { echo << 3.1.2
把参数传递给函数
基本语法:为了把参数传递给函数,在调用函数时需要把参数值
括在括号中,以逗号分隔。每个被传递的参数可
以是任何合法表达式,可以是变量、常量值、运算符的结果,甚至可以是函数调用。
复制代码 代码如下: $param1: $param1
$param2: $param2
$param3: $param3
$param4: $param4
DONE; } // // call my new function with some values. // $userName =
“bobo”; $a = 54; $b = TRUE; my_new_function($userName, 6.22e23, pi;
?>
按引用传递:默认情况下,只有变量的值被传递给函数。因此,对这个参数或者变量的任何改动都只是在函数局部有效的
复制代码 代码如下: $x = 10; echo “$x
is: $x
n”; function change_parameter_value { $param1 = 20; } echo “$x is:
$x
n”; ?> 输出: $x is :10 $x is :10
如果你的目的是函数实际地修改传递给它的变量,而不仅仅处理其值的拷贝,那么可以用引用传递的功能。这是通过使用&字符完成的
复制代码 代码如下: 复制代码 代码如下:
可变数量的参数:
php能够把任意数量的参数传递给函数,然后使用func_num_args、func_get_arg和func_get_args取得参数值
复制代码 代码如下: $value) { echo
“Parameter $index has the value: $value
n”; } echo “—–
n”; } print_parameter_values; print_parameter_values(); ?>
3.1.3 从函数返回值
一些其他语言把在退出之前只执行一些代码的子例程和执行一引起代码并且把值返回调用者的函数区分开来,php和它们不同,所有php函数在返回调用者时
都有一个值和它相关联。对于没有明确的返回值的函数,返回值为null 复制代码 代码如下:
但是php包含很多不能用作变量函数的语言结构,这种结构的明显例子是echo、print、var_dump、print_r、isset、unset、is_null
is_type 3.2 中级代码重用:使用和包含文件 3.2.1 把代码组织到文件中
对通用功能进行分组:
如果希望把很多函数保存到单一位置上,典型情况是一个文件,即代码库
生成一致的接口 复制代码 代码如下: 2 *
$radius * pi; } ?>
通过使用这此函数具有一致的名称、参数顺序以及返回值
,可以显着地减少失败的可能性和代码中的缺陷。 复制代码 代码如下: x coord “Y” => y coord
“Radius” => circle radius // function circles_compute_area { return
$circle[“Radius”] * $circle[“Radius”] * pi(); } function
circles_compute_circumference { return 2 * $circle[“Radius”] *
pi(); } // $circle is passed in BY REFERENCE and modified!软件之家 ,!! function
circles_move_circle(&$circle, $deltax, $deltay) { $circle[“X”] +=
$deltax; $circle[“Y”] += $deltay; } ?> 3.2.2 选择文件名和位置
为了防止web用户打开.inc文件,我们使用两种机制防止这种情况发生,首先,在构成文档目录树中,我们确保web服务器不允许用户浏览或者加载
不希望他们进行这些操作,在16章保护web应用程序中介绍,然后,然后将配置浏览器允许用户浏览.php和.html文件,但是不能浏览.inc文件
防止这种问题的第二个途径不把代码入在文档树中,或存入其它目录,并且要么明确地在我们的代码中引用这个目录,通知php总是查看这个目录
3.2.3 在脚本中包含库文件 include
和require,这两个区别在于,当找不到文件时,require输出错误,而include输出警告。
复制代码 代码如下:
include和require在哪里查找文件 你可以指定明确的路经:
require(“/home/httpd/lib/frontend/table_gen.inc’);
require(”);
require(d:webappslibsdataconnetions.inc’);
如果没有指定明确路径,php就在当前目录中查找要包含的文件,然后查找php.ini文件中的include_path设置中列出的目录.
在windows是include_path=”.;c:phpinclude;d:webappslibs“设置完成后,不要忘记重新启动web服务器。
include和require做了什么 包含在脚本标记中的任何内容都作为一般
php脚本处理。 清单3-1和清单3-2显示php脚本和用于包含的简单文件 清单3-1
3.2.4 把包含用于页面模板化

相关文章

发表评论