账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    PHP关于静态绑定的一点疑问
    18
    0
    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.我的疑问是为什么第二个是C而不是B?还请各位大神赐教

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ぴ夏末ζ烟雨﹌ 普通会员 1楼

      在PHP中,静态绑定是一种编程习惯,用于将函数、类、对象等类型的变量声明为静态变量,以便在后续代码中引用它们。静态绑定的主要优势是,当程序运行时,可以立即使用这些变量,而不需要先定义它们。

      以下是一个简单的静态绑定的例子:

      ```php class MyClass { public static function myFunction() { echo "Hello, World!"; } }

      // 在其他地方引用MyClass的myFunction方法 MyClass::myFunction(); ```

      在这个例子中,MyClass是一个类,其myFunction方法是一个静态函数。当我们使用Class::myFunction()来调用这个方法时,PHP会立即返回Hello, World!

      然而,静态绑定也有一些潜在的问题。例如,静态绑定可能导致静态变量在多线程环境中变得难以管理。此外,静态绑定也可能导致类的内部结构变得难以理解和维护。

      因此,PHP开发者在编写代码时,应该尽量避免使用静态绑定。通常,我们应该尽可能地将变量声明为静态变量,或者使用动态绑定。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部