php面向对象
定义类:class ClassName{}
实例化对象:$obj = new ClassName()
定义类常量:const DB_HOST = 'localhost'
访问类常量:Class Name::DB_HOST
定义成员属性:public $name = '张三‘
访问成员属性:$obj->name
伪变量$this:$this代表当前对象,只能用在成员方法中,只能调用对象属性和对象方法,$this->name或$this->showInfo()
定义公共构造方法(系统方法,名称固定):
public function __construct(){
}
析构方法:
void __destruct(void) {
}
类的静态属性和静态方法:
class Student { //私有的保存人数的静态属性:所有对象共享 private static $count = 60; //公共的静态方法 public static function showinfo(){ $str = "当前文件名:".__FILE__; $str .="<br>当前函数名:".__FUNCTION__; $str .="<br>当前方法名:".__METHOD__; $str .="<br>班级人数:".Student::$count; echo $str; } } //在类外访问公共的静态方法 //访问类的内容(类常量、静态属性、静态方法),不需要创建对象,直接访问 Student::showinfo();
$this 对比 self
$this 指向当前对象的指针,用来调用对象的属性和方法,只能在成员方法中使用,不能在静态方法中使用;
self是指向当前类的指针,用来调用类常量、静态属性、静态方法,可以用在成员方法和静态方法中使用。
关键字:
extends:继承
private:私有属性
public:公有属性
static:静态属性
final :最终类
abstract:抽象类
接口:
interface定义接口,implements实现接口
接口中只有抽象方法和常量,常量不能重写
抽象方法权限必须是public
类的自动加载:
函数:php7以下版本:__autoload($className);php7以上版本:spl_autoload_register($className)
对象克隆:
当完成克隆后,自动运行 __clone()
魔术方法:
__toString():当对象转成字符串时,自动调用的方法;
__invoke():当把对象当成函数调用时,自动调用的方法;
魔术方法:屏蔽错误:
__get($name):当对不可访问的属性进行访问时,自动调用的方法;
__set($name,$value):当对不可访问的属性进行赋值时,自动调用;
__isset($name):当对不可访问的属性调用isset()时,自动调用;
__unset($name):当对不可访问的属性调用unset()时,自动调用;
__call($function,$args):当调用不存在不可访问的方法时,自动调用;
__callStatic($function,$args):当用静态方法调用不存在不可访问的方法时,自动调用。
单例设计模式:
三私一公:
私有的静态的保存对象的属性;私有的构造方法:阻止类外new对象;私有的克隆方法:阻止类外clone对象;公共的静态的创建对象的方法。
数组变量序列化与反序列化:
$str = serialize($arr);
$arr = unserizlize($str);