instanceof
instanceof,用于检测当前PHP对象实例是否属于某一个类的类型。
class Person{}
class Student extends Person {}
$p = new Person('xoN', 23, '男');
if ( $p instanceof Person ) {
echo "$p属于Person类
";
} else { echo "$p不属于Person类
";}
$s = new Student('dsd', 18, '女', 'Xx大学');
if ( $s instanceof Person ) {
echo "$s属于Person类
";
} else { echo "$s不属于Person类
";}
if ( $s instanceof Student ) {
echo "$s属于Student类
";
} else { echo "$s不属于Student类
";}
/*
打印结果:
$p属于Person类
$s属于Person类
$s属于Student类
*/
final
只能修饰类和方法,不能修饰成员属性。
修饰类时,这个类不能扩展,不能有子类。
修饰方法时,这个方法不能在子类中重载扩展。
static
使用static修饰的成员属性,存在于内存的初始化静态段;可以被同一个类的对象共用。
第一次用到类时(类名第一次出现),类加载到内存时,就已经将静态的成员加到了内存。
静态成员一定要使用类访问。类::静态成员
static不能修饰类。
self可以在类中的方法中使用,代表自己类的名称。
静态成员一旦被加载,只有脚本结束才释放。
在静态方法中不能访问非静态成员。因为不用创建对象就可以使用静态方法,没有对象的话,非静态成员就没有初始化。
只要能使用静态方法,就使用静态方法,效率高。
/**
* @url https://www.maosiji.com
ds
*/
class Person {
public static $name = 'a1';
public static $age = '15';
public static $sex = '女';
public static $country = '中国';
public static function say() {
echo '我的名字是:'.self::$name.',年龄是:'.self::$age.',性别是:'.self::$sex.'。
';
echo "我的祖国是 ".self::$country."
";
}
}
Person::say();
echo Person::$country.'
';
Person::$country = 'USA';
echo Person::$country.'
';
Person::say();
/*
打印结果:
我的名字是:a1,年龄是:15,性别是:女。
我的祖国是 中国
中国
USA
我的名字是:a1,年龄是:15,性别是:女。
我的祖国是 USA
*/
const
const修饰的成员属性为常量,只能修饰成员属性。
常量建议使用大写,不能使用$。
常量一定要在声明时赋值。
常量的访问方式和static静态的访问方式相同,但只能读,不能改。
在类外部使用 类名::常量名
在类内部使用 self::常量名
/**
* @url https://www.maosiji.com
ds
*/
class Person {
const SEX = 'man';
static function say() {
echo 'sex ---'.self::SEX;
}
}
echo Person::SEX;
echo '
';
Person::say();
/*
打印结果:
man
sex ---man
*/