php实现后期静态绑定


当前第2页 返回上一页

1

2

3

4

5

6

7

8

9

10

11

12

13

<?phpclass A {

    private function foo() {

        echo "success!\n";

    }    public function test() {

        $this->foo();        static::foo();

    }

}class B extends A {

   /* foo() will be copied to B, hence its scope will still be A and

    * the call be successful */}class C extends A {

    private function foo() {

        /* original method is replaced; the scope of the new one is C */

    }

}$b = new B();$b->test();$c = new C();$c->test();   //fails

结果:

1

2

3

4

success!

success!

success!

Fatal error:  Call to private method C::foo() from context 'A' in /tmp/test.php on line 9

转发和非转发调用

后期静态绑定的解析会一直到取得一个完全解析了的静态调用信息为止。另一方面,如果静态调用使用 parent:: 或者 self:: 将转发调用信息。

例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

class A {

    public static function foo() {

        static::who();

    }    public static function who() {

        echo __CLASS__."\n";

    }

}class B extends A {

    public static function test() {

        A::foo();        parent::foo();        self::foo();

    }    public static function who() {

        echo __CLASS__."\n";

    }

}class C extends B {

    public static function who() {

        echo __CLASS__."\n";

    }

}

 

C::test();

结果:

ACC

相关推荐:

php后期静态绑定实例详解

php静态绑定详细讲述

php后静态绑定的定义和使用方法实例详解

以上就是php实现后期静态绑定的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

mysql优化的思路介绍

PHP closure类的使用方法

基于tags实现内容推荐的方法(代码)

PHP实现后期静态绑定

介绍PHP + mysql 实现数据分页显示

mysql中buffered and unbuffered queries及pdo的非缓存查询例子

PHP程序mysql报错mysql has gone away

PHP 读取rss feed的代码示例

PHP mysqli用法介绍

PHP限制ip地址范围的实现方法

更多相关阅读请进入《PHP》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...