Hướng dẫn php interface properties - thuộc tính giao diện php

Các giao diện trong PHP có thuộc tính, hoặc chúng chỉ có phương thức?

Nội dung chính

  • Giao diện có thể có thuộc tính?
  • Tôi có thể xác định một thuộc tính trong giao diện không?
  • Giao diện PHP có thể có biến không?
  • Giao diện hỗ trợ PHP?

Hướng dẫn php interface properties - thuộc tính giao diện php

Boltclock

676K155 Huy hiệu vàng1362 Huy hiệu bạc1335 Huy hiệu Đồng155 gold badges1362 silver badges1335 bronze badges155 gold badges1362 silver badges1335 bronze badges

Khi được hỏi ngày 3 tháng 5 năm 2010 lúc 8:49May 3, 2010 at 8:49May 3, 2010 at 8:49

never_had_a_namenever_had_a_namenever_had_a_namenever_had_a_name

87.2K102 Huy hiệu vàng265 Huy hiệu bạc381 Huy hiệu Đồng102 gold badges265 silver badges381 bronze badges102 gold badges265 silver badges381 bronze badges

2

Nó phụ thuộc vào ý của bạn là "thuộc tính". Nếu bạn có nghĩa là các trường thực tế, thì không, họ không. Nếu bạn đang đề cập đến các thuộc tính như các thuộc tính trong C#, thì có, chúng có thể (vì những người truy cập tài sản là đường cú pháp nghiêm ngặt cho các phương thức accessor). Điều tương tự cũng xảy ra đối với các sự kiện (mặc dù tất nhiên, trong mỗi trường hợp, không có triển khai nào được chỉ định cho ____ 1/________ 2 hoặc ________ 3/________ 4 người truy cập).

Cập nhật: Vì PHP không có thuộc tính theo nghĩa của ____ 1/________ 2 người truy cập, nên câu trả lời cho câu hỏi của bạn là không. Giao diện không thể mang dữ liệu/trạng thái của riêng họ.: Since PHP does not have properties in the sense of get/set accessors, then the answer to your question is no. Interfaces cannot carry their own data/state.: Since PHP does not have properties in the sense of get/set accessors, then the answer to your question is no. Interfaces cannot carry their own data/state.

Đã trả lời ngày 3 tháng 5 năm 2010 lúc 8:52May 3, 2010 at 8:52May 3, 2010 at 8:52

Will Vousdenwill VousdenWill VousdenWill Vousden

31.7K9 Huy hiệu vàng82 Huy hiệu bạc93 Huy hiệu Đồng9 gold badges82 silver badges93 bronze badges9 gold badges82 silver badges93 bronze badges

2

Bạn có thể khai báo các thuộc tính trong DocBlock cho giao diện. Sau đó, IDE sẽ gợi ý các thuộc tính đó cho giao diện (phpstorm không) nhưng điều này sẽ không buộc thực hiện thực tế các trường này trong lớp triển khai. Ví dụ.

/**
 * @property string $password
 * @property string $username
 */
interface IUserDocument
{


}

Đã trả lời ngày 30 tháng 4 năm 2018 lúc 14:37Apr 30, 2018 at 14:37Apr 30, 2018 at 14:37

1

Các giao diện trong PHP chỉ có thể chứa chữ ký phương thức công khai mà không có cơ thể phương thức. Chúng cũng có thể chứa các hằng số. Nhưng kia là nó. Không có gì khác.signatures without a method body. They may also contain constants. But that's it. Nothing else.signatures without a method body. They may also contain constants. But that's it. Nothing else.

Xem http://www.php.net/manual/en/language.oop5.Interfaces.php

Các giao diện được xác định bằng cách sử dụng từ khóa giao diện, giống như một lớp tiêu chuẩn, nhưng không có bất kỳ phương pháp nào có nội dung của chúng được xác định. [V]] Tất cả các phương thức được khai báo trong một giao diện phải được công khai, đây là bản chất của một giao diện. [V]] Nó có thể cho các giao diện có hằng số. Các hằng số giao diện hoạt động chính xác giống như các hằng số lớp ngoại trừ chúng không thể bị ghi đè bởi một lớp/giao diện kế thừa nó.

Đã trả lời ngày 3 tháng 5 năm 2010 lúc 8:59May 3, 2010 at 8:59May 3, 2010 at 8:59

GordongordonGordonGordon

308K72 Huy hiệu vàng527 Huy hiệu bạc552 Huy hiệu đồng72 gold badges527 silver badges552 bronze badges72 gold badges527 silver badges552 bronze badges

0

Giao diện PHP có thể có hằng số, nhưng không phải thuộc tính (biến thể hiện). Nếu bạn không cần sửa đổi "thuộc tính" của mình, bạn có thể sử dụng một hằng số.

Đã trả lời ngày 3 tháng 5 năm 2010 lúc 8:58May 3, 2010 at 8:58May 3, 2010 at 8:58

John Flatnessjohn phẳngJohn FlatnessJohn Flatness

31.5K5 Huy hiệu vàng77 Huy hiệu bạc81 Huy hiệu đồng5 gold badges77 silver badges81 bronze badges5 gold badges77 silver badges81 bronze badges

Lý do [hợp lệ] để cần các thuộc tính trong một giao diện là để chỉ định rằng một lớp DTO có một khía cạnh nhất định, ví dụ: Iorderable {orderDate, orderStatus}, ideliverable {phân phối, tuyến đường, ...}, v.v ... Khía cạnh có thể được sử dụng trong một số dtos, ví dụ: Đơn đặt hàng, đơn đặt hàng, hóa đơn bán hàng, v.v. Một lớp DTO có thể hỗ trợ nhiều khía cạnh, tức là nhiều kế thừa được mong muốn trong các lớp dữ liệu (nhưng không phải là lớp mã). Sau đó, khách hàng của DTO được đảm bảo rằng nó có thể xem DTO thông qua khía cạnh đó (một hợp đồng giao diện). Mô hình này tuân thủ tất cả 5 nguyên tắc rắn.

Trong PHP, gần nhất bạn phải giao diện các thuộc tính là các đặc điểm http://php.net/manual/en/langle.oop5.traits.php. Tương tự như giao diện, các đặc điểm không thể được khởi tạo, tuy nhiên có thể được sử dụng trực tiếp trong các lớp mà không thực hiện chúng.

Đã trả lời ngày 3 tháng 10 năm 2017 lúc 11:39Oct 3, 2017 at 11:39Oct 3, 2017 at 11:39

2

Giao diện có thể có thuộc tính?

Giống như một lớp, giao diện có thể có các phương thức, thuộc tính, sự kiện và người lập chỉ mục làm thành viên của nó.Nhưng giao diện sẽ chỉ chứa khai báo của các thành viên.Việc triển khai các thành viên của giao diện sẽ được đưa ra bởi lớp thực hiện giao diện ngầm hoặc rõ ràng.Interface can have methods, properties, events, and indexers as its members. But interfaces will contain only the declaration of the members. The implementation of the interface's members will be given by class who implements the interface implicitly or explicitly.Interface can have methods, properties, events, and indexers as its members. But interfaces will contain only the declaration of the members. The implementation of the interface's members will be given by class who implements the interface implicitly or explicitly.

Tôi có thể xác định một thuộc tính trong giao diện không?

Một giao diện có thể chứa các khai báo của các phương thức, thuộc tính, bộ chỉ mục và sự kiện.Tuy nhiên, nó không thể chứa các trường, các thuộc tính tự động thực hiện.. However, it cannot contain fields, auto-implemented properties.. However, it cannot contain fields, auto-implemented properties.

Giao diện PHP có thể có biến không?

Một giao diện có thể chứa các phương thức và hằng số, nhưng không thể chứa bất kỳ biến nào.can't contain any variables.can't contain any variables.

Giao diện hỗ trợ PHP?

Giao diện PHP xác định một hợp đồng mà một lớp phải thực hiện.Nếu một lớp PHP là bản thiết kế cho các đối tượng, giao diện là bản thiết kế cho các lớp.Bất kỳ lớp nào thực hiện một giao diện nhất định đều có thể được dự kiến có hành vi tương tự về những gì có thể được gọi, cách gọi nó và những gì sẽ được trả lại.. If a PHP class is a blueprint for objects, an interface is a blueprint for classes. Any class implementing a given interface can be expected to have the same behavior in terms of what can be called, how it can be called, and what will be returned.. If a PHP class is a blueprint for objects, an interface is a blueprint for classes. Any class implementing a given interface can be expected to have the same behavior in terms of what can be called, how it can be called, and what will be returned.