为什么这个对象现在显示任何东西?

Why is this object now showing anything?

好吧,这是一个简单的父子 class,任何人都可以向我解释为什么这没有回应 total_pages?我已经传递了值和所有内容..

另一件事(不相关的问题),当我已经在父级的构造函数中传递参数时,还需要将参数传递给子级吗?继承是否意味着所有值都将从父项派生..?

谢谢。

 class Book{
    protected $total_pages;
    protected $page_type;

    function set_data($total_pages, $page_type){
        $this->total_pages = $total_pages;
        $this->page_type = $page_type;
    }
}

class Final_look extends Book{
    function preview_book(){
        echo $this->total_pages;
    }
}


$Book = new Book;
$Book->set_data(110, "thick");

$Final_look = new Final_look;
$Final_look->preview_book();

您创建了 2 个不同的对象! 2个对象在一起没有任何关系,它们完全相互独立!

我想你想要的是这样的:

<?php

    class Book{
        protected $total_pages;
        protected $page_type;

        function set_data($total_pages, $page_type){
            $this->total_pages = $total_pages;
            $this->page_type = $page_type;
        }
    }

    class Final_look extends Book{
        function preview_book(){
            echo $this->total_pages;
        }
    }


    $Book = new Final_look;
              //^^^^^^^^^^ create Object from 'Final_look' so you can use all functions
    $Book->set_data(110, "thick");
    $Book->preview_book();
         //^^^^^^^^^^^^ Same object which calls this function

?>

输出:

110