0

我有3节课。。

第一类:

<?php
include "two.php";
include "three.php";
class One{
    public function __construct(){
        $two = new Two($this);
        $three = new Three($two);
    }
}
$api = new One;
?>

第 2 类:

<?php
class Two extends AOP {
    public function __construct($obj){
        //blablabla
    }
}
?>

第 3 类:

<?php
class Three extends AOP {
    public function __construct($obj){
        echo get_class($obj);
    }
}
?>

但我希望结果必须输出“一”。如何从对象内部的对象中获取类名?

4

2 回答 2

1

在您的设计中,您必须在第二类中实现一个吸气剂:

第 2 类:

class Two 
{
    private $myObj;

    public function __construct($obj)
    {
        $this->myObj = $obj;
    }

    public function getMyObj()
    {
        return $this->myObj;
    }
}

然后在第 3 类中,您可以检索第 1 类:

class Three 
{
    public function __construct($obj)
    {
        echo get_class($obj->getMyObj());
    }
}
于 2013-09-22T21:18:07.663 回答
0

使用关键字extends继承另一个类。由于 PHP 不直接支持多重继承。parent::$property;您可以使用或获取您从中扩展的类parent::method();。因此,您可能希望您的代码看起来更像。

// three.php
class Three extends AOP{
  public function __construct($obj){
    echo get_class($obj);
  }
}

// two.php
class Two extends Three{
  public function __construct($obj){
    parent::__construct($obj); // Constructors do not return a value echo works
  }
  protected function whatever($string){
    return $string;
  }
}

// one.php
include 'three.php'; // must be included first for Two to extend from
include 'two.php'
class One extends Two{
  public function __construct(){
    // change this part
    parent::__construct($this); // uses the parent Constructor
    echo $this->whatever('. Is this what you mean?'); // call method without same name in this class - from parent
  }
}
$api = new One;

我根本不会使用你的结构,但这应该给你一个继承的想法。

于 2013-09-22T21:24:59.070 回答