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
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
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
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ế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[]{
}
}
0result:
class User extends BaseUser {
function delete[]{
}
}
1Về 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