Hướng dẫn static method in interface php - phương thức tĩnh trong giao diện php

Tôi đang cố gắng tìm ra cách hoàn thành tốt nhất công việc thiết kế của mình trên các lớp học của mình.

hoàn cảnh của tôi.

Tôi có một lớp trừu tượng đặt hàng có chứa các phương thức đặt hàng và thông tin được yêu cầu cho 2 lớp trẻ em

order_Outbound

và Order_inbound

Mỗi lớp con yêu cầu 2 phương thức công khai tĩnh được gọi là Tạo và nhận

Nhưng từ những gì tôi đã đọc về Php 5.3, bạn không thể có phương pháp tĩnh trừu tượng ???

Vì vậy, suy nghĩ của tôi là có một giao diện Order_interface đảm nhận vai trò đó nhưng làm cách nào để thực hiện nó. Tôi vẫn thực hiện nó trong lớp phụ huynh

Trong trường hợp đó, lớp trừu tượng cha vẫn yêu cầu tôi tạo phương thức GET và tạo trong lớp trừu tượng. Hay tôi thực hiện nó ở trẻ em và mở rộng từ lớp trừu tượng ???

CŨNG!!! Cả trẻ em đi ra ngoài và trong nước đều yêu cầu một phương thức tĩnh nhưng yêu cầu các tham số khác nhau được thông qua

Tôi có thể trong giao diện có chức năng tĩnh công khai []

và trong quá trình triển khai của nó trong Order_outBound khai báo nó là chức năng tĩnh công khai [$ địa chỉ, $ tham chiếu, $ orderID]

Khi được hỏi ngày 13 tháng 5 năm 2011 lúc 1:11May 13, 2011 at 1:11

4

Trong hầu hết các ngôn ngữ, bao gồm PHP, bạn không thể yêu cầu một lớp để thực hiện các phương thức tĩnh.

Điều này có nghĩa là không kế thừa lớp, cũng không phải giao diện, sẽ cho phép bạn yêu cầu tất cả người triển khai xác định một phương thức tĩnh. Điều này có lẽ là do các tính năng này được thiết kế để hỗ trợ đa hình hơn là định nghĩa loại. Trong trường hợp các phương thức tĩnh, bạn sẽ không bao giờ có một đối tượng để giải quyết loại từ đó, vì vậy sẽ phải làm rõ ràng ClassName::Method, vì vậy lý thuyết là bạn sẽ không đạt được bất cứ điều gì từ tính đa hình.

Như vậy, tôi thấy ba giải pháp

  1. Tuyên bố các phương thức tĩnh trong mỗi lớp [sau tất cả, bạn sẽ không bao giờ

  2. Nếu bạn muốn một phương thức tạo các phiên bản của lớp, nhưng không muốn yêu cầu một thể hiện để gọi phương thức này, bạn có thể tạo các lớp "trình xây dựng" để phục vụ mục đích này [ví dụ: OrderBuilder], để bạn khởi tạo một OrderBuilder và gọi Thay vào đó, phương thức Create trên đối tượng này để có được các trường hợp Order.

  3. [Được đề xuất] Tại sao bạn không chỉ đơn giản là sử dụng hàm tạo Order?

Đã trả lời ngày 13 tháng 5 năm 2011 lúc 1:17May 13, 2011 at 1:17

Matt Mitchellmatt MitchellMatt Mitchell

40.1k35 Huy hiệu vàng117 Huy hiệu bạc184 Huy hiệu đồng35 gold badges117 silver badges184 bronze badges

5

Cập nhật

Sau khi nhận xét từ @hvertous, tôi quyết định kiểm tra điều này. Sử dụng 3V4L, chúng ta có thể thấy rằng abstract public static method:

  • Hoạt động cho các phiên bản 5> 5.1.6
  • Không hoạt động cho 5.2> 5.6.38
  • Hoạt động cho 7.0.0> 7.3.1

Điều này xác nhận rằng nó đã bị xóa trong PHP 5.2, nhưng nếu bạn đang sử dụng Php 7+, một lần nữa, bạn có thể sử dụng một lần nữa các phương thức tĩnh trừu tượng.

Câu trả lời ban đầu

Có, các phương pháp tĩnh trừu tượng đã được loại bỏ trong PHP 5.2. Rõ ràng họ là một sự giám sát. Xem tại sao Php 5.2+ không cho phép các phương thức lớp tĩnh trừu tượng ?.

Tuy nhiên, bạn có thể có các phương thức tĩnh trong một giao diện, xem nhận xét này trên PHP.NET.

Vấn đề bạn gặp phải là bạn muốn các triển khai của bạn có các chữ ký chức năng khác nhau, điều đó có nghĩa là bạn có thể không nên sử dụng kế thừa để giải quyết vấn đề của bạn.

Đã trả lời ngày 23 tháng 5 năm 2017 lúc 6:53May 23, 2017 at 6:53

Yep_It's_MeYep_It's_MeYep_It's_Me

4.2784 Huy hiệu vàng41 Huy hiệu bạc64 Huy hiệu Đồng4 gold badges41 silver badges64 bronze badges

1

Php 7.4+ cho phép yêu cầu một phương thức tĩnh trong giao diện: allows to require a static method in an interface:

interface StaticInterface {
    public static function interfaceMethod[];
}

class MyProvider implements StaticInterface {
    //public static function interfaceMethod[] {}
}

Lỗi nghiêm trọng mà không có phương pháp: //3v4l.org/yba4u

Không có lỗi khi thực hiện phương thức: //3v4l.org/qnrjb

Đã trả lời ngày 1 tháng 9 lúc 10:31Sep 1 at 10:31

Sunsunsun

9118 Huy hiệu bạc13 Huy hiệu đồng8 silver badges13 bronze badges

1

Chúng ta có thể sử dụng phương thức tĩnh trong giao diện không?

Tương tự như phương thức mặc định trong giao diện, phương thức tĩnh trong giao diện có thể được xác định trong giao diện, nhưng không thể được ghi đè trong các lớp triển khai. Để sử dụng một phương thức tĩnh, tên giao diện phải được khởi tạo với nó, vì nó chỉ là một phần của giao diện.the static method in an interface can be defined in the interface, but cannot be overridden in Implementation Classes. To use a static method, Interface name should be instantiated with it, as it is a part of the Interface only.

Phương pháp tĩnh trong PHP là gì?

Định nghĩa và sử dụng Từ khóa tĩnh được sử dụng để khai báo các thuộc tính và phương thức của một lớp là tĩnh.Các thuộc tính và phương thức tĩnh có thể được sử dụng mà không tạo ra một thể hiện của lớp.Từ khóa tĩnh cũng được sử dụng để khai báo các biến trong một hàm giữ giá trị của chúng sau khi hàm kết thúc.The static keyword is used to declare properties and methods of a class as static. Static properties and methods can be used without creating an instance of the class. The static keyword is also used to declare variables in a function which keep their value after the function has ended.

Giao diện có thể có phương thức tĩnh ABAP không?

Các phương thức tĩnh trong giao diện kể từ Java8 vì Java8, bạn có thể có các phương thức tĩnh trong giao diện [có thân].Bạn cần gọi chúng bằng tên của giao diện, giống như các phương thức tĩnh của một lớp.Since Java8 you can have static methods in an interface [with body]. You need to call them using the name of the interface, just like static methods of a class.

Phương pháp tĩnh có thể là PHP riêng không?

Một phương thức riêng tư tĩnh cung cấp một cách để ẩn mã tĩnh từ bên ngoài lớp.Điều này có thể hữu ích nếu một số phương thức khác nhau [tĩnh hay không] cần sử dụng nó, tức là công ty sửa đổi mã.

Bài Viết Liên Quan

Chủ Đề