HP 有三种不同的变量作用域:
local(局部)
global(全局)
static(静态)
函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
下面的例子测试了带有局部和全局作用域的变量:
全局变量:
函数内部不能直接使用全局变量;但是可以使用global +$var去访问;或者通过GLOBALS来访问;具体如下代码:
$one=12;
function demo(){
echo $GLOBALs['one'];
global $one;
echo $one;
}
NULL 不表示空格,也不表示零,也不是空字符串,而是一个变量的值为空,NULL 不区分大小写
特殊的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 Null。
NULL 值标示变量是否为空。也用于区分空字符串与空值数据库,可以通过把值设置为 NULL,将变量清空。
在下列情况下一个变量被认为是 NULL:
is_null()
$a = null;
$b = 1;
var_dump(is_null($a)); // 输出结果为:true
var_dump(is_null($b)); // 输出结果为:false
转换为NULL
$a = 33;
unset($a);
var_dump($a); //输出结果为:NULL
使用回调函数;传递函数;
function filter( $fun ){
for($i=0;$i<100;$i++){
if($fun($i)){
continue;
}
echo $i.'sss';
}
}
function one($num){
return $num%3==0;
}
filter("one");
借助call_user_func_array()函数自定义回调函数
function filter( $fun ){
for($i=0;$i<100;$i++){
if(call_user_func_array($fun,array($i))){
continue;
}
echo $i.'
';
}
}
函数闭包
可以在函数内部中使用外部变量;需要通过use来连接闭包函数何外界变量;这些变量必须在函数或类的头部声明。闭包函数是从父作用域中继承变量。
$fun = function ($param){
echo $param;
};
$fun("sss");
function callback($callbcak){
$callbcak();
}
$var="String";
callback(function ()use ($var){
echo $var;
});
声明数组
$arr=array("key","value");
count($arr)//get length of the array;
删除数组
unset($array[index]);//删除后;不会重建索引;
可以使用array_values($array) //重建索引;
创建对象:类属性;访问类属性:
class class_name
{
// 在类中定义一个类属性
var $var_name = '666';
}
$object_name = new class_name();
echo $object_name->var_name ; // 输出结果:666
魔法方法
静态变量
静态变量;函数执行完毕后;不会销毁;用static关键字修饰;仅仅在脚本执行的期间函数第一次调用时被初始化;
引用传值
php默认函数传递是 值传递;可以使用引用传递;只需要在前面加上&
function test1(&$a){
$a=122;
}
$var=10;
test1($var);
echo $var; //122
抽象类
抽象类中可以有非抽象方法;抽象类用abstract修饰;
子类继承抽象类;然后实现里面的抽象方法;
接口
接口所有的方法都是抽象类;不需要加修饰符;默认是public;
接口和抽象类一样;不能实列化;
php是单继承;可以通过实现多个接口;来达到多继承;
require VS include
require一般放在开头;在脚本执行前;就会先读入他所引入的文件;而include通常放在流程控制里面;只有当运行到它才会加载该文件;