【问题标题】:Calling a derived static method from a method in parent class in PHP [duplicate]从PHP中的父类中的方法调用派生静态方法[重复]
【发布时间】:2013-02-18 04:04:00
【问题描述】:

我有以下课程:

<?php
    Abstract Class A{
        public function foo(){
            self::bar();
        }

       Abstract public static function bar($arg);
    }

    Class B extends A{ 
        public static function bar(){
            echo "Class B";      
        }
    }

    Class C extends A{
        public static function bar(){
            echo "Class C";
        }
    }
?>

我需要从 foo() 调用实例化类的方法 bar():

<?php
  $obj1 = new B();
  $obj2 = new C();

  $obj1->foo(); // I expect to get 'Class B'
  $obj2->foo(); // I expect to get 'Class C'
?>

提前致谢。

【问题讨论】:

    标签: php class static call


    【解决方案1】:

    您为此使用late static binding

    基本上在您称为static::method() 的抽象类中。这使用发出调用的类的方法。

    Abstract Class A{
        public function foo(){
            // Late static binding
            static::bar();
        }
    
       abstract public static function bar();
    }
    

    【讨论】:

    • -1 - 此示例代码确实违反了严格的 PHP 标准,因此会引起注意。
    • 请看:3v4l.org/Ytl4m
    猜你喜欢
    • 2012-05-24
    • 2015-04-08
    • 1970-01-01
    • 2010-10-10
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    相关资源
    最近更新 更多