Hướng dẫn call parent function from child php - gọi hàm cha từ php con

Tôi có mô hình

BaseUser.class.php
User.class.php
UserTable.class.php

Trong lớp người dùng, tôi đã ghi đè chức năng xóa I have been override the delete function

class User extends BaseUser {
   function delete(){
    }
}

Bây giờ, nếu tôi muốn gọi chức năng xóa cha mẹ .... làm thế nào?

Thí dụ

$user = new User();
$user->delete();  // will call the overridden delete
$user-> ??  ;     // want to call parent delete

Hướng dẫn call parent function from child php - gọi hàm cha từ php con

j0k

22.4K28 Huy hiệu vàng78 Huy hiệu bạc87 Huy hiệu đồng28 gold badges78 silver badges87 bronze badges

Hỏi ngày 6 tháng 8 năm 2012 lúc 12:39Aug 6, 2012 at 12:39

5

Về mặt kỹ thuật, điều này là không thể từ "bên ngoài" (giao diện công cộng) vì lý do chính đáng.

Nếu bạn đã hiểu tại sao (nếu không đọc bên dưới) và bạn thực sự biết những gì bạn làm, không có lý do gì để thực sự không cung cấp chức năng:

class User extends BaseUser {
   ... 
   function parentDelete(){
       parent::delete();
   }
   ...
}

user = new User();
$user->delete();  // will call the overridden delete
$user->parentDelete();     // want to call parent delete

Tuy nhiên, nếu bạn từng làm điều đó, bạn nên biết rằng bạn đã sử dụng sai kế thừa bằng cách nào đó. Đây phải là một tình huống đặc biệt vì tôi không thể tưởng tượng bất kỳ tình huống nào bạn thực sự cần điều đó.

Vì vậy, hãy cố gắng xây dựng lý do tại sao bạn cần chức năng đó để cung cấp cho bản thân những gợi ý tốt hơn.

Tại sao điều đó là xấu?

Vì một lý do rất đơn giản: Trong phần mềm của bạn, bạn không cần biết rằng

class User extends BaseUser {
   function delete(){
    }
}
3 có cha mẹ hay không. Đó là một số chi tiết bạn không nên quan tâm.

Điều đó sẽ cho phép bạn thay thế bất kỳ đối tượng người dùng nào bạn có trong phần mềm của mình bằng một phần tử của người dùng sau này. Điều này rất quan trọng vì bạn muốn thay đổi phần mềm của mình theo thời gian.

Nếu bạn làm cho chi tiết nội bộ của giao diện công cộng, bạn đang tự cướp đi khả năng giữ mọi thứ linh hoạt. Không linh hoạt thực sự là một tình huống xấu.

Đã trả lời ngày 6 tháng 8 năm 2012 lúc 12:55Aug 6, 2012 at 12:55

Hướng dẫn call parent function from child php - gọi hàm cha từ php con

Hakrehakrehakre

Phim huy hiệu vàng 188K50419 Huy hiệu đồng50 gold badges419 silver badges810 bronze badges

3

Có thể thử điều này

parent::delete();

Đã trả lời ngày 6 tháng 8 năm 2012 lúc 12:42Aug 6, 2012 at 12:42

Hướng dẫn call parent function from child php - gọi hàm cha từ php con

voodoo417voodoo417voodoo417

11.7K3 Huy hiệu vàng34 Huy hiệu bạc39 Huy hiệu đồng3 gold badges34 silver badges39 bronze badges

3

Tôi nghĩ rằng bạn đang tìm kiếm các chức năng của cha mẹ PHP:

\n";
    }
}

class B extends A {
    function example() {
    echo "I am B::example() and provide additional functionality.
\n"; parent::example(); } } $b = new B; // This will call B::example(), which will in turn call A::example(). $b->example(); ?>

Nếu lớp của bạn không có chức năng gọi là getMyFunction () gọi

class User extends BaseUser {
   function delete(){
    }
}
4 sẽ gọi hàm cha. Nếu có, nó sẽ gọi hàm con, trừ khi hàm con gọi hàm Prent.

Đã trả lời ngày 6 tháng 8 năm 2012 lúc 12:42Aug 6, 2012 at 12:42

11.7K3 Huy hiệu vàng34 Huy hiệu bạc39 Huy hiệu đồngFluffeh

Tôi nghĩ rằng bạn đang tìm kiếm các chức năng của cha mẹ PHP:16 gold badges66 silver badges80 bronze badges

2

Nếu lớp của bạn không có chức năng gọi là getMyFunction () gọi

class User extends BaseUser {
   function delete(){
    }
}
4 sẽ gọi hàm cha. Nếu có, nó sẽ gọi hàm con, trừ khi hàm con gọi hàm Prent.

Fluffehfluffeh

Like:

public function customDelete()
{
  parent::delete();

  // do extends delete here
}

32,8K16 Huy hiệu vàng66 Huy hiệu bạc80 Huy hiệu đồng

$user = new User();
$user->customDelete();  // will call the overridden delete
$user->delete(); // will call the parent (since you didn't override it)

Tại sao bạn cần mở rộng

class User extends BaseUser {
   function delete(){
    }
}
5 nếu bạn cần gọi cho cha mẹ một lần?really need to override the
class User extends BaseUser {
   function delete(){
    }
}
7 function, you still can create a kind of parent delete:

public function parentDelete()
{
  return parent::delete();
}

Then:

$user = new User();
$user->delete();  // will call the overridden delete
$user->parentDelete(); // will call the method that only call the parent

Tại sao không tạo một xóa tùy chỉnh?Aug 6, 2012 at 12:56

j0kj0kj0k

22.4K28 Huy hiệu vàng78 Huy hiệu bạc87 Huy hiệu đồng28 gold badges78 silver badges87 bronze badges

1

Hỏi ngày 6 tháng 8 năm 2012 lúc 12:39

class User extends BaseUser {
   function delete(){
    }
}
0

result:

class User extends BaseUser {
   function delete(){
    }
}
1

Về mặt kỹ thuật, điều này là không thể từ "bên ngoài" (giao diện công cộng) vì lý do chính đáng.Aug 4, 2019 at 15:39

Nếu bạn đã hiểu tại sao (nếu không đọc bên dưới) và bạn thực sự biết những gì bạn làm, không có lý do gì để thực sự không cung cấp chức năng:Rikipm

Tuy nhiên, nếu bạn từng làm điều đó, bạn nên biết rằng bạn đã sử dụng sai kế thừa bằng cách nào đó. Đây phải là một tình huống đặc biệt vì tôi không thể tưởng tượng bất kỳ tình huống nào bạn thực sự cần điều đó.2 silver badges5 bronze badges

Vì vậy, hãy cố gắng xây dựng lý do tại sao bạn cần chức năng đó để cung cấp cho bản thân những gợi ý tốt hơn.

Tại sao điều đó là xấu?

Vì một lý do rất đơn giản: Trong phần mềm của bạn, bạn không cần biết rằng

class User extends BaseUser {
   function delete(){
    }
}
3 có cha mẹ hay không. Đó là một số chi tiết bạn không nên quan tâm.

class User extends BaseUser {
   function delete(){
    }
}
2

Điều đó sẽ cho phép bạn thay thế bất kỳ đối tượng người dùng nào bạn có trong phần mềm của mình bằng một phần tử của người dùng sau này. Điều này rất quan trọng vì bạn muốn thay đổi phần mềm của mình theo thời gian.

Nếu bạn làm cho chi tiết nội bộ của giao diện công cộng, bạn đang tự cướp đi khả năng giữ mọi thứ linh hoạt. Không linh hoạt thực sự là một tình huống xấu.Aug 6, 2012 at 12:59

Đã trả lời ngày 6 tháng 8 năm 2012 lúc 12:55Matt

Hakrehakre4 gold badges27 silver badges50 bronze badges

Làm thế nào để bạn gọi một lớp cha mẹ 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 thế nào để bạn gọi một hàm tạo của một lớp cha từ một lớp con?

Bạn có thể gọi hàm tạo lớp cơ sở từ lớp con bằng cách sử dụng Super () sẽ thực thi hàm tạo của lớp cơ sở.using the super() which will execute the constructor of the base class.

Phụ huynh là gì :: trong PHP?

Cha mẹ :: là tên đặc biệt cho lớp cha mà khi được sử dụng trong hàm thành viên. Để sử dụng cha mẹ để gọi hàm tạo lớp cha để khởi tạo lớp cha để đối tượng kế thừa gán lớp để đặt tên.Lưu ý: PHP không chấp nhận cha mẹ là tên của một hàm.the special name for parent class which when used in a member function.To use the parent to call the parent class constructor to initialize the parent class so that the object inherits the class assignment to give a name. NOTE: PHP does not accept parent as the name of a function.