1 PHP函数中不能直接访问全局变量, 例以下面的函数访问不到全局变量$HTTP_RAW_POST_DATAphp
function getPostData(){ $data = $HTTP_RAW_POST_DATA; return $data; }
解决这个问题的方式有两种:linux
function getPostData(){ global $HTTP_RAW_POST_DATA; $data = $HTTP_RAW_POST_DATA; return $data; }
经过GLOBALS数组访问全局变量, 使用这种方式修改后的函数以下:数据库
function getPostData(){ $data = $GLOBALS['HTTP_RAW_POST_DATA']; return $data; }
2 include, include_once和require, require_once用法:
include(_once)("文件的路径") 与 require(_once)("文件的路径"), 路径能够用绝对路径,也能够用相对路径,windows下正反斜线均可以,linux下只认正斜线,因此最好用正斜线;
其做用就是用包含进来的文件内容替换 include(_once), require(_once)那一行;
包含进来的文件必须加<?php ?>, 由于在包含时, 首先理解文件内容是普通字符串, 碰到<?php ?> 标签时, 才去解释;
include是包含的意思, 找不到文件时, 会报warning错误, 程序继续执行;
require是必须的意思, 找不到文件时, 会报fatal错误, 程序终止执行;
加once后, 系统会进行判断, 若是已经包含,则不会再包含, 例如:
有一个a.php文件, 内容是<?php $a++ ;?>
在b.php文件中的内容是 $a=5; require_once("a.php"); echo $a; require_once("a.php"); echo $a;
结果第一处输出6, 第二处输出6, 说明_once只包含一次, 若是不加once, 第二处输出的会是7;
若是是关键程序, 缺乏了程序没法运行, 用require, 若是不是关键程序, 缺乏了不影响程序正常运行, 能够用include;
加不加once是效率上的区别, 加上once, 虽然系统帮你考虑了只加载一次, 但系统的判断会使效率下降, 所以, 更应该在开发之初, 就把目录结构调整好, 尽可能不要用_once的状况;
利用include/require返回被包含页面的返回值, 例如:
a.php页面中: ..... return $value; b.php页面中: $v = include("a.php");
3 在类中使用当前对象的属性和方法,必须使用$this->取值。
4 若是操做数据库时,中文显示乱码,可尝试在已创建的链接上执行"SET NAMES utf8";
5 PHP是一种弱类型语言,即变量不须要声明为特定的数据类型,可是PHP仍有类型的概念,每一个赋给变量的值都有一种类型,能够使用PHP的类型检测函数来肯定变量的值的类型:
is_bool: 用于检测变量是不是bool型
is_double: 用于检测变量是不是双精度型
is_integer: 用于检测变量是不是整型
is_string: 用于检测变量是不是字符串型
is_object: 用于检测变量是不是对象
is_array: 用于检测变量是不是数组
is_null: 用于检测变量是不是null,即未分配的
is_resource: 用于检测变量是不是资源,即用于识别和处理外部资源的句柄,如数据库或文件
6 PHP测试变量时,会将一个非空字符串转换为true, 例如$var = "false", 那么if($var)是知足条件的。
7 PHP引入了类的类型提示,能够约束参数的类型,要增长一个方法或函数的参数类型提示,只须要在参数名前加上类的名称便可,也能够用来限制参数为数据类型,在参数名前加Array便可。类型提示不能约束参数类型为基本类型。
8 只能经过 "类名:"来访问类的静态属性和方法,不能经过对象来访问,在类的内部能够使用"self:"来访问静态属性和方法;定义常量和引用常量都不须要在常量名前加$符号,常量名必须所有大写,引用常量和引用静态变量同样,都使用"类名:"。
9 抽象类必须以"abstract class"声明,抽象类中的抽象方法以"abstract function"开始声明,抽象类也能够声明并实现非抽象方法,也能够定义属性,不能直接实例化抽象类,继承自抽象类的类必须实现抽象类中声明的所有抽象方法,不然要以 "abstract class"声明子类,一个类只能有一个父类。
接口以"interface"声明,接口中只能声明方法,不能实现方法,接口中能够定义属性,一个类能够实现多个接口,用implement关键字,实现接口的类必须实现接口中声明的所有方法,不然,要声明为abstract类。一个类能够既继承自抽象类,也能够实现接口,extends关键字必须在implements关键字以前。windows
未完,待续。。。数组