0

PHPには、このコードがあります。継承されたメソッドを取得して、その子クラスのメンバー変数を利用しようとしています。

abstract class HtmlObj{
//abstract protected function jQuery_Activity();
public $hyperlink;
abstract protected function php_Activity();
abstract protected function print_Widget();

function __construct($hyperlink=""){
    if(isset($hyperlink)){
        $this->hyperlink = $hyperlink;
    }
    $this->php_Activity();
    $this->Print_Widget();
}

}

class child extends HtmlObj{
   public $id;
   protected function php_Activity(){return;}
   protected function print_Widget(){
      print $this->id;
   }
   function __construct($id){
     this->id = $id;
   }
}

残念ながら、これは何も出力しません。理由についての洞察はありますか?

4

1 に答える 1

1

子クラスで次のようなことをして、parent::__construct() を参照する必要があります

abstract class HtmlObj
{
//abstract protected function jQuery_Activity();
    public $hyperlink;

    abstract protected function php_Activity();

    abstract protected function print_Widget();

    function __construct($hyperlink = "")
    {
        if (isset($hyperlink)) {
            $this->hyperlink = $hyperlink;
        }
        $this->php_Activity();
        $this->Print_Widget();
    }
}

class child extends HtmlObj
{
    public $id;

    protected function php_Activity()
    {
        return;
    }

    protected function print_Widget()
    {
        print $this->id;
    }

    function __construct($id)
    {
        $this->id = $id;
        parent::__construct();
   }
}

new child(10);
于 2013-10-25T19:54:17.553 に答える