php 面向对象

 

命名空间 自动加载

 

抽象类 至少一个抽象方法,不能实例化

abstract class A{ abstract protected function getValue(); }

class B extends A{ public function getValue($v=null){...}  } 可见性不能更严格

 

接口 全都是抽象方法

interface a{ public function aaa(); } //接口里必须为public,可以使用常量

interface b{ public function bbb(); }

interface c extends a,b { public function ccc(); } //接口可以 extends

class d implements c{

public function aaa(){...}

public function bbb(){...}

public function ccc(){...}

}

 

Trait

trait a{ function foo(){} }

class b{ use a; }

 

类常量const a=1;  self::aClassName::a$Obj::a     没有$

静态属性:static $a=1;    self::$aClassName::$a$Obj::$a

$this->a    self::a    parent::    static::    

 

 

Final:父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。

 

比较    == 两个对象是同一个类的实例,且属性和属性值都相等。

===两个对象变量指向同一个对象

 

遍历foreach可遍历所有可见属性

 

对象引用

$a = new A(); // a指向pp指向new出来的对象

$b = $a; // b指向qq的值和p相同,

$c =& $a; // c指向p

 

后期静态绑定 static写在父类里,子类继承后,static指向的是子类

 

 

魔术方法

__construct() __destruct()//构造和析构时

 __isset() __unset()//对不可访问的属性调用isset()、empty()、unset()

 __get() __set()//读、写不可访问的属性

 __call() __callStatic()//调用不可访问的方法时

 __sleep() __wakeup()//serialize() 和 unserialize() 时

 __toString()//把对象当作字符串时,例如echo $a

 __clone() , //$b=clone $a时,$b会执行__clone()

__invoke()  //把对象当作函数使用时,$a(123);

__set_state() __debugInfo()  //var_export() 和var_dump() 时

 

 

 

spl_autoload_register() 

__autoload — 尝试加载未定义的类

call_user_method_array — 以参数列表的数组,调用用户方法

call_user_method — 对特定对象调用用户方法

class_alias — 为一个类创建别名

class_exists — 检查类是否已定义

get_called_class — 后期静态绑定("Late Static Binding")类的名称

get_class_methods — 返回由类的方法名组成的数组

get_class_vars — 返回由类的默认属性组成的数组

get_class — 返回对象的类名

get_declared_classes — 返回由已定义类的名字所组成的数组

get_declared_interfaces — 返回一个数组包含所有已声明的接口

get_declared_traits — 返回所有已定义的 traits 的数组

get_object_vars — 返回由对象属性组成的关联数组

get_parent_class — 返回对象或类的父类名

interface_exists — 检查接口是否已被定义

is_a — 如果对象属于该类或该类是此对象的父类则返回 TRUE

is_subclass_of — 如果此对象是该类的子类,则返回 TRUE

method_exists — 检查类的方法是否存在

property_exists — 检查对象或类是否具有该属性

trait_exists — 检查指定的 trait 是否存在

 

php 面向对象

上一篇:cocos2d: fullPathForFilename: No file found at script/jsb_prepare.js. Possible missing file


下一篇:httpclient