Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在YII中与父级的静态声明问题_Php_Yii_Static Methods - Fatal编程技术网

Php 在YII中与父级的静态声明问题

Php 在YII中与父级的静态声明问题,php,yii,static-methods,Php,Yii,Static Methods,假设我有这些课 <?php class Grandparent { public function myMethod($param) { //do something } } class Parent extends Grandparent { public function myMethod($param) { //do something return parent::myMethod($param) ;

假设我有这些课

<?php
class Grandparent {
    public function myMethod($param) {
        //do something
    }
}
class Parent extends Grandparent {
    public function myMethod($param) {
        //do something
        return parent::myMethod($param) ;
    }
}
class Son extents Parent {
    public function myMethod($param) {
        //do something
        //code to access parent parent
    }
}
?>

我想在我的子类方法中避免打电话给他的父母和访问这个祖父母。我尝试的代码是parent::parent::myMethod($param),但Ide向我抛出了一个错误。哪种方式可以在不经过父母的情况下以静态方式访问祖父母

有可能吗?我知道有一些方法,比如get\u parent\u class,但我不希望他们使用它。我需要以静态方式呼叫。


谢谢您的回复。这就是我需要的。我从未尝试使用class_name::method,认为该方法不是静态的,但如果我这样认为,parent::method也不是静态的。
<?php
class foo
{
  public function something()
  {
    echo __CLASS__; // foo
    var_dump($this);
  }
}

class foo_bar extends foo
{
  public function something()
  {
    echo __CLASS__; // foo_bar
    var_dump($this);
  }
}

class foo_bar_baz extends foo_bar
{
  public function something()
  {
    echo __CLASS__; // foo_bar_baz
    var_dump($this);
  }

  public function call()
  {
    echo self::something(); // self
    echo parent::something(); // parent
    echo foo::something(); // grandparent
  }
}

error_reporting(-1);

$obj = new foo_bar_baz();
$obj->call();

// Output similar to:
// foo_bar_baz
// object(foo_bar_baz)[1]
// foo_bar
// object(foo_bar_baz)[1]
// foo
// object(foo_bar_baz)[1]

?>