Có cách nào trong PHP để nói (lập trình, rõ ràng) nếu một lớp nhất định là một nội bộ lớp (như DateTime
) hoặc một lớp dùng (class MyClass
)? Trong trường hợp bạn tự hỏi (và tôi chắc chắn bạn làm), điều này là bởi vì ReflectionClass::newInstanceWithoutConstructor() ném một ngoại lệ khi được sử dụng trên các lớp nội bộ, và khi tôi đang viết một thư viện để các đối tượng bản sao sâu, nó phải bỏ qua những nội bộ các lớp học.Làm cách nào để biết một lớp là lớp nội bộ hay lớp người dùng?
Có, tôi chỉ có thể bắt được ReflectionException
, nhưng ngoại lệ này cũng được ném vì các lý do khác (chẳng hạn như một lớp không tồn tại) và không được ném cho tất cả các lớp hệ thống. vì vậy nó không hoàn thành chính xác nhu cầu của tôi.
Tại sao chính xác một người muốn bỏ qua một nhà xây dựng? –
@Cobra_Fast: Bạn sẽ không bao giờ muốn làm điều đó trong việc viết mã hàng ngày. Nhưng các thư viện làm điều đó để hydrate các đối tượng được tải từ một lưu trữ liên tục, hoặc trong trường hợp của tôi, để sao chép sâu một đối tượng đã được khởi tạo. – Benjamin
Thậm chí nếu tôi định cư nó với dữ liệu ngoài, việc chạy hàm tạo không thể sai IMHO. Bạn không bao giờ có thể biết được những loại cấu trúc bên trong nào cần được khởi tạo. –