16/8/21_PHP-有关类函数,this,static,面向对象思想介绍
class_exists():判断某个类是否存在(定义过)
interface_existe():判断接口是否存在
get_class():获取某个对象的"所属类名"
get_parent_class():获取某个对象的"所属父类的类名"
get_class_method():获取一个类的所以方法,返回一个索引数组,就是这些方法的名字。
get_class_vars():获取一个类的所有属性,返回一个数组,下标为属性名,值为属性值。
get_declared_classes():获得所有声明的类(含系统中的类)
is_object():判断是否对象
get_object_vars():获得对象的所有属性,返回一个数组,下标为属性名,值为属性值。
instanceof:判断一个对象是否是某个类的"实例"
一个对象如果是下级某个类的“实例”,则其一定也是该类的上级类的“实例”
两个特定语法场景的辨析
对象向下传递特性:
当一个对象($object1)调用一个实例方法,然后,在该方法(A)中又去“静态”调用另一个类的方法(B),则在方法中B中,会自动获得在方法A中的那个this对象。
self:代表当前类,指其代码所在的类(静态绑定)
static:也代表“当前类”,调用本方法的类,static这个词有时候跟self代表用一个类,也有时候代表不用的类,
static代表的是调用者(动态绑定),通常认为,这种情形更符合显示的需要,可见self完全可以被static代替使用。
可见static有3个不同含义的语法:
函数中的静态变量:
function f1(){
static $var1 = 1;
}
类中的静态成员:
class A{
static $var1 = 1;
static function f1(){}
}
方法中的动态指代“当前类”:
class A{
function f1(){
static::f2();//static指代调用f1这个方法的类(或对象的类)
self::f2()//self这里永远指代当前A这个类
}
}
面向对象3大思想特征介绍:
封装:
就是把数据“封闭”起来,尽量不给别人看到。
面向对象的基本语法“类的定义”形式,可以认为是最基本封装--封装了很多数据到某个类(对象)。
但:
更严格(更常说)的封装,是尽量将属性做出“私有的”--并通过共有的方法向外提供对该属性的“可控性”:
继承:
多态:
通常是指:一个对象可以使用相同的方法(动作)但得到不同的结果:
(这里是其他常见面向对象语法示例:)
class A{
function f1($x){...做事情1;}
function f1($x,$y){...做事情2;}
function f2($x,$y,$z){...做事情3;}
}
也指:不用的对象使用相同的方法,但得到不同的结果: