Hướng dẫn what is php super class? - php super class là gì?

79

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một classB kéo dài classA.

Trong cả classAclassB, tôi xác định phương pháp

<?php
class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // Override parent's definition
    public function myFunc()
    {
        // But still call the parent function
        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();
?>
1.and classB I define the method
<?php
class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // Override parent's definition
    public function myFunc()
    {
        // But still call the parent function
        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();
?>
1.

Trong

<?php
class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // Override parent's definition
    public function myFunc()
    {
        // But still call the parent function
        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();
?>
1 của classB, tôi muốn gọi
<?php
class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // Override parent's definition
    public function myFunc()
    {
        // But still call the parent function
        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();
?>
1 của classA ngay từ đầu.

Chỉ là cách tôi quen, từ Objective-C. Điều đó có thể trong PHP không? Và nếu vậy, làm thế nào?

Hướng dẫn what is php super class? - php super class là gì?

Hỏi ngày 25 tháng 12 năm 2009 lúc 20:42Dec 25, 2009 at 20:42

Hướng dẫn what is php super class? - php super class là gì?

0

parent::fooBar();

Trực tiếp từ hướng dẫn:

... Đại tràng kép, là một mã thông báo cho phép truy cập vào ... các thuộc tính hoặc phương thức ghi đè của một lớp.

...

Ví dụ #3 gọi phương thức của cha mẹ

<?php
class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // Override parent's definition
    public function myFunc()
    {
        // But still call the parent function
        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();
?>

Hướng dẫn what is php super class? - php super class là gì?

Mark Amery

133K78 Huy hiệu vàng395 Huy hiệu bạc443 Huy hiệu Đồng78 gold badges395 silver badges443 bronze badges

Đã trả lời ngày 25 tháng 12 năm 2009 lúc 20:44Dec 25, 2009 at 20:44

Chỉ là ai đó, ai đójust somebody

18.1k6 Huy hiệu vàng49 Huy hiệu bạc60 Huy hiệu Đồng6 gold badges49 silver badges60 bronze badges

Chỉ cần một lưu ý nhanh vì điều này không dễ dàng xuất hiện trên các tìm kiếm của Google và điều này được ghi lại rõ ràng trong các tài liệu PHP nếu bạn có thể tìm thấy nó. Nếu bạn có một lớp con cần gọi hàm tạo của siêu lớp, bạn có thể gọi nó bằng:

parent::__construct(); // since PHP5

Một ví dụ sẽ là nếu siêu lớp có một số đối số trong hàm tạo của nó và nó đang thực hiện các lớp cần gọi đó là:

class Foo {

  public function __construct($lol, $cat) {
    // Do stuff specific for Foo
  }

}

class Bar extends Foo {

  public function __construct()(
    parent::__construct("lol", "cat");
    // Do stuff specific for Bar
  }

}

Bạn có thể tìm thấy một ví dụ động lực hơn ở đây.

Đã trả lời ngày 9 tháng 9 năm 2010 lúc 5:20Sep 9, 2010 at 5:20

SpoikespoikeSpoike

Huy hiệu vàng 118K4343 gold badges137 silver badges158 bronze badges

2

2

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Xem xét mã lớp PHP sau

class SuperIdea{
.
.
.
static function getById($id){  new SuperIdea(.......); } 
.
.
.
.
}

class SubIdea extends SuperIdea{
}

Vấn đề tôi gặp phải ở đây là khi tôi gọi Subidea :: getbyid ($ t); Đối tượng được trả về là loại superidea nhưng tôi muốn nó là của subidea. Có cách nào để đạt được nó mà không cần lặp lại mã trong subidea không?

Đã hỏi ngày 23 tháng 6 năm 2010 lúc 17:29Jun 23, 2010 at 17:29

Monkeastern Đông MonkEastern Monk

6.1758 Huy hiệu vàng44 Huy hiệu bạc61 Huy hiệu Đồng8 gold badges44 silver badges61 bronze badges

Thử thay thế

<?php
class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // Override parent's definition
    public function myFunc()
    {
        // But still call the parent function
        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();
?>
6 bằng
<?php
class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // Override parent's definition
    public function myFunc()
    {
        // But still call the parent function
        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();
?>
7

Tôi chưa bao giờ thử nghiệm điều này, nhưng tôi thấy không có lý do tại sao nó không nên hoạt động ...

Đã trả lời ngày 23 tháng 6 năm 2010 lúc 17:36Jun 23, 2010 at 17:36

Hướng dẫn what is php super class? - php super class là gì?

Ivar Bonsaksenivar BonsaksenIvar Bonsaksen

4.7092 Huy hiệu vàng31 Huy hiệu bạc34 Huy hiệu đồng2 gold badges31 silver badges34 bronze badges

2

Câu trả lời của Ivar (về cơ bản, để sử dụng get_called_class ()) hoạt động. Vui lòng nâng cấp/Chọn câu trả lời của anh ấy.

Bản demo nhanh:

<?PHP
class supercls {
  static function foo(){
         $class = get_called_class();
         echo $class ."\n";
  }
}

class subcls extends supercls {

}

supercls::foo();
subcls::foo();

Đã trả lời ngày 23 tháng 6 năm 2010 lúc 17:38Jun 23, 2010 at 17:38

class SuperIdea {
    public $var;
    function __construct($var){
       $this->var = $var;
    }
    static function getById($id){  return new static('foobar'); } 
}

class SubIdea extends SuperIdea{}
var_dump(SubIdea::getById(0));

Object (Subidea)#1 (1) {["var"] => String (6) "foobar"}

PHP> = 5.3

Đã trả lời ngày 23 tháng 6 năm 2010 lúc 17:56Jun 23, 2010 at 17:56

WrikkenWrikkenWrikken

67.7K8 Huy hiệu vàng94 Huy hiệu bạc135 Huy hiệu Đồng8 gold badges94 silver badges135 bronze badges

Mục đích của $ cái này trong PHP là gì?

$ Đây là một từ khóa dành riêng trong PHP đề cập đến đối tượng gọi. Nó thường là đối tượng mà phương thức thuộc về, nhưng có thể là một đối tượng khác nếu phương thức được gọi là tĩnh từ bối cảnh của một đối tượng thứ cấp.refers to the calling object. It is usually the object to which the method belongs, but possibly another object if the method is called statically from the context of a secondary object.

Kế thừa trong PHP với ví dụ là gì?

PHP - thừa kế là gì?Kế thừa trong OOP = khi một lớp xuất phát từ một lớp khác.Lớp con sẽ kế thừa tất cả các thuộc tính và phương thức được bảo vệ và công khai từ lớp cha.Ngoài ra, nó có thể có các thuộc tính và phương pháp riêng của nó.When a class derives from another class. The child class will inherit all the public and protected properties and methods from the parent class. In addition, it can have its own properties and methods.

Mục đích của $ này là gì và mở rộng trong PHP là gì?

Định nghĩa và sử dụng Từ khóa mở rộng được sử dụng để lấy một lớp từ một lớp khác.Điều này được gọi là thừa kế.Một lớp có nguồn gốc có tất cả các thuộc tính công khai và được bảo vệ của lớp mà nó bắt nguồn từ.to derive a class from another class. This is called inheritance. A derived class has all of the public and protected properties of the class that it is derived from.

Lớp PHP là gì?

Một lớp PHP, và nói chung hơn, lập trình hướng đối tượng, cung cấp các cách tiếp cận bổ sung để tái sử dụng và có thể được sử dụng cho nhiều mục đích khác nhau: chúng có thể mô tả các thực thể có các thuộc tính và hành vi đã biết.Chúng có thể được sử dụng làm thông điệp cho các chức năng và các đối tượng khác.object-oriented programming, provides additional approaches to reusability, and can be used for a variety of purposes: They can describe entities that have known properties and behaviors. They can be used as messages to functions and other objects.