一、PHP类型: 1.
标量:boolean integer float string 2.
复合:array object callable 3.
特殊:resource null 二、预定义变量: 1.
超全局变量: 1)
$GLOBALS:引用全局作用域中可用的全部变量 2)
$_SERVER:服务器和执行环境信息 a)
$_SERVER['SERVER_ADDR']:服务器ip地址 b)
$_SERVER['SERVER_NAME']:服务器主机名 c)
$_SERVER['SERVER_SOFTWARE']:服务器标识字符串 d)
$_SERVER['SERVER_PROTOCOL']:请求页面时通信协议的名称及版本 e)
$_SERVER['REMOTE_ADDR']:浏览当前页面用户ip地址 f)
$_SERVER['REMOTE_HOST']:浏览当前页面用户主机名 3)
$_GET 4)
$_POST 5)
$_FILE 6)
$_COOKIE 7)
$_SESSION 8)
$_REQUEST:$_GET、$_POST、$_COOKIE 9)
$_ENV:环境变量 10)
$php_errormsg:前一个错误信息 三、常量: 1.
常量只包含标量数据 2.
常量不可取消或重新定义 3.
常量可在任何地方定义和访问 4.
常量相关函数: 1)
define()|const:定义常量 2)
constant():获取常量的值 3)
get_defined_constants():获取常量列表 4)
defined():判断是否定义该常量 5.
预定义常量: 1)
E_ERROR 2)
E_WARNING 3)
.. 4)
TRUE 5)
FALSE 6)
NULL 6.
魔术常量: 1)
__LINE__:当前行号 2)
__FILE__:文件完整路径和文件名 3)
__DIR__:文件所在的目录 4)
__FUNCTION__:函数名称 5)
__CLASS__:类的名称 6)
__TRAIT__:Trait 的名字 7)
__METHOD__:类的方法名 8)
__NAMESPACE__:当前命名空间的名称 四、类与对象 1.
属性 2.
类常量 const NAME='apple'; 3.
类自动加载 1)
spl_autoload_register() 注册任意数量的自动加载器 spl_autoload_register(function ($class_name) { require_once $class_name . '.php'; }); 4.
构造函数和析构函数 1)
__construct():构造函数 2)
__destruct():析构函数 5.
访问控制:public private protected 6.
对象继承:extends 7.
范围解析符: ::用于访问静态成员、类常量、覆盖类中的属性和方法 8.
static:静态关键字 不可用->操作符访问 必需用::访问 9.
抽象类:abstract 1)
抽象类不能被实例化 2)
类中有一个方法被声明为抽象的就必须声明为抽象类 3)
继承一个抽象类的时候,子类必须定义父类中的所有抽象方法 4)
方法的访问控制必须和父类中一样(或者更为宽松) 5)
方法的调用方式必须匹配,即类型和所需参数数量必须一致 6)
强制子类定义父类中的抽象方法 7)
抽象方法仅需要定义需要的参数 10.
对象接口:interface(声明接口) 声明的时候接口中的方法可定义方法名和参数,函数体都为空 1)
实现:implements 实现的时候,用类的方法实现相应接口方法中的方法 // 声明一个'iTemplate'接口 interface
iTemplate { public function
setVariable($name, $var); public function
getHtml($template); } // 实现接口 class Template
implements iTemplate { private $vars =
array(); public function
setVariable($name, $var) { $this->vars[$name]
= $var; } //没有getHtml方法的话是不对的,实现接口的类必须包含所有接口中的方法 public function
getHtml($template) { foreach($this->vars
as $name => $value) { $template =
str_replace('{' . $name . '}', $value, $template); } return $template; } } 2)
继承:extends 可继承多个接口 //trait:代码复用 <?php trait
ezcReflectionReturnInfo { function
getReturnType() { /*1*/ } function
getReturnDescription() { /*2*/ } } class
ezcReflectionMethod extends ReflectionMethod { use
ezcReflectionReturnInfo; /* ... */ } class
ezcReflectionFunction extends ReflectionFunction { use
ezcReflectionReturnInfo; /* ... */ } ?> 11.
魔术方法 1)
__construct() 构造 2)
__destruct() 析构 3)
__call() 在对象中调用一个不可访问方法时,__call()
会被调用。 4)
__callStatic() 在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用 5)
__get() 读取不可访问属性的值时,__get() 会被调用 6)
__set() 在给不可访问属性赋值时,__set() 会被调用。 7)
__isset() 当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用。 8)
__unset() 当对不可访问属性调用 unset() 时,__unset() 会被调用。 9)
__sleep() a)
serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。 b)
如果存在,该方法会先被调用,然后才执行序列化操作。 c)
此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。 d)
如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE 级别的错误。 10)
__wakeup() a)
unserialize() 会检查是否存在一个
__wakeup() 方法。 b)
如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。 11)
__toString() 用于一个类被当成字符串时应怎样回应 12)
__invoke() 当尝试以调用函数的方式调用一个对象时,__invoke()
方法会被自动调用 13)
__set_state() 当调用 var_export() 导出类时,此静态 方法会被调用 14)
__clone() a)
当复制完成时,如果定义了 __clone() 方法, b)
则新创建的对象(复制生成的对象)中的 __clone() 方法会被调用, c)
可用于修改属性的值(如果有必要的话) 15)
__debugInfo() 12.
final关键字:如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。 13.
对象比较:==和=== 14.
对象复制:__clone 15.
类型约束:函数的参数可以指定必须为对象(在函数原型里面指定类的名字),接口,NULL,数组或者callable 16.
后期静态绑定:static::who() 1)
static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的 17.
对象序列化: 1)
serialize() 2)
unserialize() 18.
命名空间: 1)
namespace关键字 显式访问当前命名空间或子命名空间中的元素 等价于类中的 self 操作符 2) __NAMESPACE__ 包含当前命名空间名称的字符串 |
|