PHP小知识点

        1  PHP函数中不能直接访问全局变量, 例以下面的函数访问不到全局变量$HTTP_RAW_POST_DATAphp

function getPostData(){
    $data = $HTTP_RAW_POST_DATA;
    return $data;
}

        解决这个问题的方式有两种:linux

  •     在函数的开头使用global关键字声明全局变量, 使用这种方式修改后的函数以下:
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

未完,待续。。。数组

相关文章
相关标签/搜索