最近又一次开始大用特用PHP。同以往多年的PHP经验不同,这次大规模的采用了PHP的OOP方式设计程序。用下来发现PHP的OOP功能相当的强大,比起Java也是不徨多让。
PHP的“后期静态绑定”功能就是一个很有特色的功能,参考下面的例子:
可以看出,当使用static::来引用静态方法的时候,PHP调用的是当前类的同名方法,如果没有找到,顺着继承顺序往上找。如果使用的是self::来引用,则直接调用定义该静态方法的类里面的那个。
PHP的“后期静态绑定”功能就是一个很有特色的功能,参考下面的例子:
<?php
class Class1 {
public static function hello() {
echo "Class1 say hello\n";
}
public static function goodbye() {
echo "Class1 say goodbye\n";
}
public function greeting() {
echo "I am a ".get_class($this)."\n";
static::hello();
self::goodbye();
}
}
class Class2 extends Class1 {
public static function hello() {
echo "Class2 say hello\n";
}
}
class Class3 extends Class2 {
public static function goodbye() {
echo "Class3 say goodbye\n";
}
}
$c1 = new Class1();
$c2 = new Class2();
$c3 = new Class3();
$c1->greeting();
$c2->greeting();
$c3->greeting();
?>
以上程序的输出是:
I am a Class1
Class1 say hello
Class1 say goodbye
I am a Class2
Class2 say hello
Class1 say goodbye
I am a Class3
Class2 say hello
Class1 say goodbye
没有评论:
发表评论