Hướng dẫn how to access parent class variable in child class in php - cách truy cập biến lớp cha trong lớp con trong php

echo $this->bb;

Biến được kế thừa và không riêng tư, vì vậy nó là một phần của đối tượng hiện tại.


Dưới đây là thông tin bổ sung để đáp ứng yêu cầu của bạn để biết thêm thông tin về việc sử dụng parent:::

Sử dụng parent:: Khi bạn muốn thêm chức năng bổ sung vào phương thức từ lớp cha. Ví dụ, hãy tưởng tượng một lớp Airplane:

class Airplane {
    private $pilot;

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

Bây giờ giả sử chúng tôi muốn tạo ra một loại máy bay mới cũng có một điều hướng. Bạn có thể mở rộng phương thức __construct () để thêm chức năng mới, nhưng vẫn sử dụng chức năng do cha mẹ cung cấp:

class Bomber extends Airplane {
    private $navigator;

    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;

        parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
    }
}

Bằng cách này, bạn có thể tuân theo nguyên tắc phát triển khô khan nhưng vẫn cung cấp tất cả các chức năng mà bạn mong muốn.

Chào mừng đến với cộng đồng Treehouse

Cộng đồng Treehouse là nơi gặp gỡ cho các nhà phát triển, nhà thiết kế và lập trình viên của tất cả các nền tảng và cấp độ kỹ năng để nhận được hỗ trợ. Phối hợp ở đây về các lỗi mã hoặc lỗi mà bạn cần phản hồi hoặc yêu cầu thêm một bộ mắt về dự án mới nhất của bạn. Tham gia cùng hàng ngàn sinh viên Treehouse và cựu sinh viên trong cộng đồng ngày hôm nay. .

Tìm kiếm để học một cái gì đó mới?

Treehouse cung cấp một bản dùng thử miễn phí bảy ngày cho sinh viên mới. Nhận quyền truy cập vào hàng ngàn giờ nội dung và một cộng đồng hỗ trợ. Bắt đầu thử nghiệm miễn phí ngay hôm nay.

Hướng dẫn how to access parent class variable in child class in php - cách truy cập biến lớp cha trong lớp con trong php

Truy cập các chức năng lớp cha Điều này thực sự đơn giản, bạn chỉ cần gọi hàm tạo của lớp cha trong hàm tạo của lớp con và sau đó đối tượng của lớp con có thể truy cập các phương thức và thuộc tính của lớp cha.

Một lớp con có kế thừa các biến không?

Chúng tôi biết mọi lớp con đều thừa hưởng các biến và phương pháp (trạng thái và hành vi) từ lớp cha của nó.

Trong php.net, có một lời giải thích về từ khóa cha mẹ

<php
    class Fish
    {
        public $common_name = 'Mamba'

    }

    class Trout extends Fish
    {

      public function getInfo()
      {
        return parent::$common_name;
      }
    }

    $brook_trout = new Trout();
    echo $brook_trout->getInfo();
?>

"Bạn có thể thấy mình viết mã đề cập đến các biến và chức năng trong các lớp cơ sở. Điều này đặc biệt đúng nếu lớp dẫn xuất của bạn là một sự tinh chỉnh hoặc chuyên môn hóa mã trong lớp cơ sở của bạn.

Thay vì sử dụng tên theo nghĩa đen của lớp cơ sở trong mã của bạn, bạn nên sử dụng cha mẹ đặc biệt, trong đó đề cập đến tên của lớp cơ sở của bạn như được đưa ra trong phần mở rộng của lớp của bạn. "

Nhưng tôi không thể sử dụng từ khóa cha để truy cập thuộc tính của lớp

Nó gây ra lỗi

Hướng dẫn how to access parent class variable in child class in php - cách truy cập biến lớp cha trong lớp con trong php

Lỗi chết người: Truy cập vào tài sản tĩnh không được khai báo: Cá :: $ Common_name

Bất cứ ai có thể giải thích, tại sao?

1 câu trả lời

Lớp cá hồi của bạn mở rộng lớp cá của bạn, điều này có nghĩa là tất cả các thuộc tính của nó cũng được thừa hưởng.

Truy cập các chức năng lớp cha Điều này thực sự đơn giản, bạn chỉ cần gọi hàm tạo của lớp cha trong hàm tạo của lớp con và sau đó đối tượng của lớp con có thể truy cập các phương thức và thuộc tính của lớp cha.

Một lớp con có kế thừa các biến không?

Chúng tôi biết mọi lớp con đều thừa hưởng các biến và phương pháp (trạng thái và hành vi) từ lớp cha của nó.

Kế thừa là một nguyên tắc lập trình được thiết lập tốt và PHP sử dụng nguyên tắc này trong mô hình đối tượng của nó. Nguyên tắc này sẽ ảnh hưởng đến cách nhiều lớp và đối tượng liên quan đến nhau.

Ví dụ, khi mở rộng một lớp, lớp con kế thừa tất cả các phương thức, thuộc tính và hằng số được bảo vệ và được bảo vệ từ lớp cha. Trừ khi một lớp ghi đè các phương pháp đó, họ sẽ giữ lại chức năng ban đầu của chúng.

Ghi chú::

Trừ khi tự động tải được sử dụng, các lớp phải được xác định trước khi chúng được sử dụng. Nếu một lớp mở rộng một lớp khác, thì lớp cha phải được khai báo trước cấu trúc lớp con. Quy tắc này áp dụng cho các lớp kế thừa các lớp và giao diện khác.

Ghi chú::

Nó không được phép ghi đè một thuộc tính đọc-viết với thuộc tính readonly hoặc ngược lại.

class Airplane {
    private $pilot;

    public function __construct( $pilot ) {
        $this->pilot = $pilot;
    }
}
4

Ví dụ #1 ví dụ kế thừa

class Airplane {
    private $pilot;

    public function __construct( $pilot ) {
        $this->pilot = $pilot;
    }
}
5

class Airplane {
    private $pilot;

    public function __construct( $pilot ) {
        $this->pilot = $pilot;
    }
}
6

class Airplane {
    private $pilot;

    public function __construct( $pilot ) {
        $this->pilot = $pilot;
    }
}
7

Trả về loại tương thích với các lớp bên trong

Trước PHP 8.1, hầu hết các lớp hoặc phương thức nội bộ đã không khai báo loại trả lại của họ và bất kỳ loại hoàn trả nào được cho phép khi mở rộng chúng.

Kể từ Php 8.1.0, hầu hết các phương thức nội bộ bắt đầu "dự kiến" khai báo loại trả lại của họ, trong trường hợp đó, loại phương thức trả về phải tương thích với cha mẹ được mở rộng; Nếu không, một thông báo không nhận được được phát ra. Lưu ý rằng việc thiếu một tuyên bố hoàn trả rõ ràng cũng được coi là sự không phù hợp đặc trưng, ​​và do đó dẫn đến thông báo từ chối.

Nếu loại trả về không thể được khai báo cho một phương thức ghi đè do các mối quan tâm tương thích phiên bản chéo PHP, một thuộc tính

class Airplane {
    private $pilot;

    public function __construct( $pilot ) {
        $this->pilot = $pilot;
    }
}
8 có thể được thêm vào để làm im lặng thông báo từ chối.

Ví dụ #2 Phương thức ghi đè không khai báo bất kỳ loại trả về nào

class Airplane {
    private $pilot;

    public function __construct( $pilot ) {
        $this->pilot = $pilot;
    }
}
9

Ví dụ #3 Phương thức ghi đè khai báo loại trả về sai

class Bomber extends Airplane {
    private $navigator;

    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;

        parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
    }
}
0

Ví dụ #4 Phương thức ghi đè tuyên bố loại trả về sai mà không có thông báo không dùng nữa

class Bomber extends Airplane {
    private $navigator;

    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;

        parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
    }
}
1

Jackdracona tại msn dot com ¶

12 năm trước

class Bomber extends Airplane {
    private $navigator;

    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;

        parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
    }
}
2

class Bomber extends Airplane {
    private $navigator;

    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;

        parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
    }
}
3

class Bomber extends Airplane {
    private $navigator;

    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;

        parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
    }
}
4

class Bomber extends Airplane {
    private $navigator;

    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;

        parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
    }
}
5

class Bomber extends Airplane {
    private $navigator;

    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;

        parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
    }
}
6

class Bomber extends Airplane {
    private $navigator;

    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;

        parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
    }
}
7

Mohammad Istanbouly ¶

5 năm trước

class Bomber extends Airplane {
    private $navigator;

    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;

        parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
    }
}
8

class Bomber extends Airplane {
    private $navigator;

    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;

        parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
    }
}
9

<php
    class Fish
    {
        public $common_name = 'Mamba'

    }

    class Trout extends Fish
    {

      public function getInfo()
      {
        return parent::$common_name;
      }
    }

    $brook_trout = new Trout();
    echo $brook_trout->getInfo();
?>
0

<php
    class Fish
    {
        public $common_name = 'Mamba'

    }

    class Trout extends Fish
    {

      public function getInfo()
      {
        return parent::$common_name;
      }
    }

    $brook_trout = new Trout();
    echo $brook_trout->getInfo();
?>
1

Strata_ranger tại hotmail dot com

12 năm trước

<php
    class Fish
    {
        public $common_name = 'Mamba'

    }

    class Trout extends Fish
    {

      public function getInfo()
      {
        return parent::$common_name;
      }
    }

    $brook_trout = new Trout();
    echo $brook_trout->getInfo();
?>
2

<php
    class Fish
    {
        public $common_name = 'Mamba'

    }

    class Trout extends Fish
    {

      public function getInfo()
      {
        return parent::$common_name;
      }
    }

    $brook_trout = new Trout();
    echo $brook_trout->getInfo();
?>
3

<php
    class Fish
    {
        public $common_name = 'Mamba'

    }

    class Trout extends Fish
    {

      public function getInfo()
      {
        return parent::$common_name;
      }
    }

    $brook_trout = new Trout();
    echo $brook_trout->getInfo();
?>
4

<php
    class Fish
    {
        public $common_name = 'Mamba'

    }

    class Trout extends Fish
    {

      public function getInfo()
      {
        return parent::$common_name;
      }
    }

    $brook_trout = new Trout();
    echo $brook_trout->getInfo();
?>
5

<php
    class Fish
    {
        public $common_name = 'Mamba'

    }

    class Trout extends Fish
    {

      public function getInfo()
      {
        return parent::$common_name;
      }
    }

    $brook_trout = new Trout();
    echo $brook_trout->getInfo();
?>
6

<php
    class Fish
    {
        public $common_name = 'Mamba'

    }

    class Trout extends Fish
    {

      public function getInfo()
      {
        return parent::$common_name;
      }
    }

    $brook_trout = new Trout();
    echo $brook_trout->getInfo();
?>
7

Mohammad Istanbouly ¶

5 năm trước

<php
    class Fish
    {
        public $common_name = 'Mamba'

    }

    class Trout extends Fish
    {

      public function getInfo()
      {
        return parent::$common_name;
      }
    }

    $brook_trout = new Trout();
    echo $brook_trout->getInfo();
?>
8

<php
    class Fish
    {
        public $common_name = 'Mamba'

    }

    class Trout extends Fish
    {

      public function getInfo()
      {
        return parent::$common_name;
      }
    }

    $brook_trout = new Trout();
    echo $brook_trout->getInfo();
?>
9

parent::0

parent::1

parent::2

Strata_ranger tại hotmail dot com

Akashwebdev tại gmail dot com ¶

parent::3

parent::4

parent::5

<php
    class Fish
    {
        public $common_name = 'Mamba'

    }

    class Trout extends Fish
    {

      public function getInfo()
      {
        return parent::$common_name;
      }
    }

    $brook_trout = new Trout();
    echo $brook_trout->getInfo();
?>
6

parent::7

7 năm trước

Jarrod tại Squarecrow Dot Com ¶

parent::8

parent::9

<php
    class Fish
    {
        public $common_name = 'Mamba'

    }

    class Trout extends Fish
    {

      public function getInfo()
      {
        return parent::$common_name;
      }
    }

    $brook_trout = new Trout();
    echo $brook_trout->getInfo();
?>
6

parent::1

13 năm trước

Niemans tại pbsolo dot nl ¶

parent::2

parent::3

parent::4

parent::5

parent::6

2 năm trước

Ẩn danh ¶

parent::7

parent::8

parent::6

Một lớp con có thể truy cập các biến cha mẹ không?

Khía cạnh bất thường duy nhất là, trong các định nghĩa phương thức lớp con, bạn không thể truy cập trực tiếp các biến thể hiện của lớp phụ huynh. Ví dụ: nếu cha mẹ có biến thể hiện chiều cao, các định nghĩa phương thức lớp con sẽ không thể truy cập trực tiếp điều này.you can't directly access parent class instance variables. For example, if the parent had a height instance variable, child class method definitions wouldn't be able to access this directly.

Làm thế nào để bạn gọi chức năng của lớp cha trong lớp con trong PHP?

Để chạy một hàm tạo cha mẹ, một cuộc gọi đến cha mẹ :: __ construct () trong hàm tạo con là bắt buộc. Nếu trẻ không định nghĩa một hàm tạo thì nó có thể được kế thừa từ lớp cha giống như một phương thức lớp bình thường (nếu nó không được tuyên bố là riêng tư). $ obj = new OtherUbClass ();a call to parent::__construct() within the child constructor is required. If the child does not define a constructor then it may be inherited from the parent class just like a normal class method (if it was not declared as private). $obj = new OtherSubClass();

Làm cách nào để truy cập các thuộc tính lớp cha?

Truy cập các chức năng lớp cha Điều này thực sự đơn giản, bạn chỉ cần gọi hàm tạo của lớp cha trong hàm tạo của lớp con và sau đó đối tượng của lớp con có thể truy cập các phương thức và thuộc tính của lớp cha.call the constructor of parent class inside the constructor of child class and then the object of a child class can access the methods and attributes of the parent class.

Một lớp con có kế thừa các biến không?

Chúng tôi biết mọi lớp con đều thừa hưởng các biến và phương pháp (trạng thái và hành vi) từ lớp cha của nó.every Child class inherits variables and methods (state and behavior) from its Parent class.