1
class Second
{
  // i've got to access to $variable from First instance from here
}

class First
{
  public $variable;
  public $SecondInstance;

  public function __construct($variable) 
  {
    $this->variable = $variable;
    $this->SecondInstance = new Second();
  }
}
 $FirstObj = new First('example variable');

对于对象,我需要一个等效的 parent::$variable 。

有没有可能以这种方式做到这一点?

4

3 回答 3

0

你不能。在不扩展 First 的情况下,您可以管理它的唯一方法是将 "$this" 传递给 Second 的构造函数:

$this->SecondInstance = new Second ($this);

或者,您可以简单地将 $variable 传递给它的构造函数。

于 2012-08-06T11:05:55.867 回答
0

你的意思就像PHP中的父函数:

//You may find yourself writing code that refers to variables 
//and functions in base classes. This is particularly true if 
// your derived class is a refinement or specialisation of 
//code in your base class.

//Instead of using the literal name of the base class in your 
//code, you should be using the special name parent, which refers 
//to the name of your base class as given in the extends declaration 
//of your class. By doing this, you avoid using the name of your base 
//class in more than one place. Should your inheritance tree change 
//during implementation, the change is easily made by simply 
//changing the extends declaration of your class. 


<?php
class A {
    function example() {
    echo "I am A::example() and provide basic functionality.<br />\n";
    }
}

class B extends A {
    function example() {
    echo "I am B::example() and provide additional functionality.<br />\n";
    parent::example();
    }
}

$b = new B;

// This will call B::example(), which will in turn call A::example().
$b->example();
?>
于 2012-08-06T11:07:15.510 回答
0

我建议您稍微更改一下结构以“扩展”:

class second extends first{
    public __construct(){
        parent::__construct();
        echo $this->variable;
    }
}

否则,您将需要将“第一个”分配为第二个变量中的父类,并像这样实际访问它:

class second{
    public $first;
    public function __construct($first){
        $this->first = $first;
        var_dump($this->first->variable);
    }
}

或者,当然您也可以将第一类设为静态并以这种方式访问​​它。

于 2012-08-06T11:08:51.860 回答