父类方法在其子函数__construct()中返回null

时间:2014-06-13 16:02:42

标签: php oop

我尝试了一个代码,我在其子女__construct中调用了一个父方法,它返回NULL, 我不知道为什么?如果有人能向我解释原因,我会很高兴。 提前谢谢。

这是我的代码

 <?php
 class me
 {
   public $arm;
   public $leg;
   public function __construct()
   {
     $this->arm = 'beautiful';
     $this->leg = 'pretty';
   }

   public function setLeg($l)
   {
     $this->leg = $l;
   }

   public function getLeg()
   {
     return $this->leg;

   }
 }

 class myBio extends me
{

  public $bio;
  public function __construc()
  {
    $this->bio = $this->setLeg();
  }

  public function newLeg()
  {
    var_dump($this->bio);
  }
  public function tryLeg()
  {
    $this->leg = $this->getLeg();
    print $this->leg;
  }
}

$mB = new myBio();
$mB->newLeg();
$mB->tryLeg();
 ?>

我打电话的时候:       $ mB = new myBio();       $ MB-GT&; newLeg();

,它返回     NULL,

BUT

$mB->tryLeg();

返回e字符串,'漂亮'。

1 个答案:

答案 0 :(得分:1)

你在这一行上有一个错字:

$this->bio = $this->setLeg();

您正在打电话给您的二传手,而不是您的吸气者,而且由于设定者没有返回一个值,您将获得空值。

你也拼错了构造:

     public function __construc()

你需要调用父构造函数。

<?php
class me
{
     public $arm;
     public $leg;
     public function __construct()
     {
          $this->arm = 'beautiful';
          $this->leg = 'pretty';
     }

     public function setLeg($l)
     {
          $this->leg = $l;
     }

     public function getLeg()
     {
          return $this->leg;

     }
}

class myBio extends me
{

    public $bio;
    public function __construct()
    {
         parent::__construct();
         $this->bio = $this->getLeg();
    }

    public function newLeg()
    {
         var_dump($this->bio);
    }
    public function tryLeg()
    {
         $this->leg = $this->getLeg();
         print $this->leg;
    }
}

$mB = new myBio();
$mB->newLeg();
$mB->tryLeg();