?>
结果:
yishaoku zhangyishao zhangyishao
可以看出使用$_REQUEST方式只采集到了使用post传递的请求,而忽略了使用get提交的请求。使用get和post混合方式提交请求时,$_REQUEST究竟采集post的请求还是get请求,与php.ini文件的配置有关。request_order=”GP”表示get优先然后post。而request_order=”PG”表示post优先然后get。
$_SERVER预定义变量可以获得浏览器端和服务器端主机的一些信息。 如:
$_SERVER[“REMOTE_ADDR”]:定义了浏览器端主机的IP地址 $_SERVER[“SERVER_ADDR”]:定义了服务器端主机的IP地址 $_SERVER[“PHP_SELF”]:定义了当前执行程序的文件名 $_SERVER[“QUERY_STRING”]:定义了URL的查询字符串 $_SERVER[“DOCUMENT_ROOT”]:定义了web服务器的主目录 $_SERVER[“REQUEST_URI”]:定义了除域名外的其余URL部分。
PHP文件间的引用
1) include语言结构
mixed include(string resource)
引入的资源可以是本地web服务器上的资源也可以是互联网上的资源。若没有找到资源返回FALSE,若找到资源,且资源文件resource没有返回值返回整数1,否则返回resource的返回值。
注意:若resource是互联网上的资源时,php.ini中的allow_url_include设置为On,否则不能引用互联网上的资源。 2)require
reruire和include的区别:
两者语法格式及基本功能基本相同。区别:
使用include结构,如果被引用的文件发生错误或找不到引用的文件,引用文件将提示Warning信息然后继续执行下面的语句。使用require语言结构,如果被引用的文件发生错误或找不到引用的文件,引用文件将提示Warning信息及Fatal error致命错误信息然后终止程序运行。 3)include_once()和require_once()
这两个是用来确保资源文件只引用一次,使用他们可以有效避免引用一个PHP文件多次而引起的函数或变量重复定义的问题的发生。
若找到资源且该资源是第一次载入,返回整数1,如果该资源文件已经载入,返回TRUE。找不到文件返回FALSE。
PHP中的函数
函数分类:内置函数,自定义函数,和变量函数(类似于可变变量,它的函数名为一个变量)。注意:调用函数时,函数名大小写不敏感。
为了便于管理,通常在项目下新建一个目录functions用来存放自定义的函数。
function functionName($param1,?,$paramn=defaultValue){ 函数体 return “返回值”; }
注意:defaultValue函数参数的默认值。调用函数时如果不给默认值的参数传递值,那么就采用默认值。默认值参数尽量放在参数列表的末尾。
create by zhang on time 2013-7-5 下午02:12:02
*/
function sayHello($name){ echo \.$name; } ?>
create by zhang on time 2013-7-5 下午02:16:58
*/
include_once 'functions/fun1.php'; sayHello(\); ?>
自定义函数的参数赋值: 传值赋值,和传地址赋值:
create by zhang on time 2013-7-5 下午02:20:07
*/
传值方式
function addAge($value){ $value=$value+1; echo $value; }
$age=18;
addAge($age);//输出19 echo \; echo $age;//输出18;
?>
//传地址方式
function addAge(&$value){ $value=$value+1; echo $value; }
$age=18;
addAge($age);//输出19 echo \; echo $age;//输出19;
?>
注意:使用传地址方式赋值时,传递给函数的值不能是常量,否则会产生错误。 如果想延长函数体内变量的生存周期,需要使用关键字static;若要扩大函数体内变量的作用域需要使用关键字global。
在使用传值赋值的方式为函数参数赋值时,能不能将一个变量的引用(如:&$age)传递给函数?
function addAge($value){ $value=$value+1; echo $value; }
$age=18;
addAge(&$age); echo \; echo $age; //结果
//Warning: Call-time pass-by-reference has been deprecated; //If you would like to pass it by reference, modify the declaration
//of addAge(). If you would like to enable call-time pass-by-reference, //you can set allow_call_time_pass_reference to true in your INI file in
//E:\\wamp\\www\\PhpDemo1\\php\\newfile13.php on line 9 //19 //19 ?>
可以看出PHP鼓励在函数的定义中指定哪些参数应该用引用传递,不建议直接给函数传递一个引用参数。当然这仅仅是一种建议,通过修改php.ini配置文件allow_call_time_pass_reference(默认值为Off)决定是否开启函数调用时强制参数按照引用传递。
变量的作用域和global关键字:
变量分为局部变量和全局变量。全局变量当程序执行到末尾的时候才被回收。全局变量也可应用于include和require语句所引用的PHP程序文件。 函数内的变量要想变成全局变量需要使用global。
create by zhang on time 2013-7-5 下午04:18:42
*/
function addAge($age){
global $age;//将局部变量$age声明为全局变量,此后函数内的$age
变量和函数外的$age变量为同一个变量。 $age=$age+1; echo $age; }
$age=18;
addAge($age);//输出19 echo \; echo $age;//输出19
?>
global使用的注意事项: 1) 2)
不能使用global定义函数的参数
在函数内使用global定义全局变量的同时,不能使用赋值语句给该变量赋值 3)
在函数内使用global语句定义全局变量时,若程序中已经存在该全局变量,则直接使用,否则创建该全局变量。
经global定义的全局变量,PHP会将该变量的定义放到$_GLOBALS数组中,数组的键为该全局变量的变量名,数组的值就是该全局变量的值。
常量的作用域不同于变量,常量在其定义处开始到程序运行结束期间(包括被调用函数的PHP语句执行期间)一直有效。
变量的生存周期和static关键字:
如果希望函数体的变量能从一次调用一直存活到下一次调用,此时需要在该变量前添加static关键字。
global可以一次性定义多个全局变量。