Điểm:0

Làm cách nào để biết thuộc tính và phương thức nào có sẵn cho đối tượng entity_metadata_wrapper?

lá cờ us

Có thể dễ dàng nhất để bắt đầu với một ví dụ.

Hàm entity_metadata_wrapper() dường như thực hiện rất nhiều phép thuật phức tạp đằng sau hậu trường để trả về một đối tượng có tất cả dữ liệu liên quan đến thực thể được đề cập. Nhưng làm cách nào để biết những thuộc tính và phương thức nào có sẵn cho tôi sau khi đối tượng được trả về?

Giả sử tôi có Lệnh thương mại. (Đây không nhất thiết là một câu hỏi Thương mại, nó chỉ là một ví dụ tốt). Khi thanh toán, tôi muốn kiểm tra xem đơn đặt hàng có chứa mục hàng của một loại sản phẩm nhất định hay không và thông báo cho người dùng.Có lẽ tôi cũng muốn so sánh giá mặt hàng lót được tính toán với giá gốc trong loại sản phẩm.

Ok, vậy đó là Trật tự, Mục hàng), Loại sản phẩm, và Người dùng đó là tất cả các thực thể được tham chiếu. Loại Sản phẩm có nhiều trường tùy chỉnh, có thể đó là các tham chiếu đến một thực thể khác như thông tin thanh toán.

$order_wrapper = entity_metadata_wrapper('commerce_order', $order);

Theo tài liệu API thực thể, tất cả các thực thể được tham chiếu đó hiện được bao gồm trong đối tượng sẵn sàng để tôi sử dụng nhờ trình bao bọc.

Nhưng làm cách nào để tôi biết cách truy cập một giá trị mà tôi đang tìm kiếm hoặc vị trí của nó trong cấu trúc đối tượng? Tất cả các trường drupal được tham chiếu có phải tên máy của chúng theo thiết kế không? Tôi biết chuỗi phải đóng một vai trò, vậy yếu tố đó ảnh hưởng như thế nào? Và cấu trúc này có thay đổi mỗi khi entity_metadata_wrapper được gọi với điều kiện là thực thể được đề cập có thể tùy ý tham chiếu các thực thể khác (tham chiếu các thực thể khác, v.v.) không? Và nếu cấu trúc là tùy ý, bất kỳ mã nào dựa trên cấu trúc đó tại một thời điểm nhất định, nếu nó thay đổi, điều đó có phá vỡ mã không?

Cuối cùng, tôi thấy tài liệu tham khảo cho những thứ như -> lưu()->giá trị() trong tài liệu API Thực thể, nhưng tôi không thể tìm thấy tài liệu tham khảo về bộ phương pháp đầy đủ có sẵn cho tôi. Có bất kỳ cấu trúc logic nào để tìm ra điều này hay tôi cần sử dụng thứ gì đó như xdebug mỗi lần (và nếu tôi làm vậy, điều đó vẫn không cho tôi biết phương pháp nào có sẵn để tôi hành động trên dữ liệu). Đây là câu trả lời dành cho D7, nhưng nếu câu trả lời D8+ có thể làm rõ hơn, vui lòng cung cấp.

misterdidi avatar
lá cờ de
Đây có phải là những gì bạn đang tìm kiếm ? [https://www.drupal.org/docs/7/api/entity-api/entity-metadata-wrappers#debugging](https://www.drupal.org/docs/7/api/entity-api/ thực thể-siêu dữ liệu-trình bao bọc#gỡ lỗi)
lá cờ cn
Câu trả lời ngắn gọn: Sử dụng IDE và dành thời gian để thiết lập nó đúng cách. Ví dụ mình dùng PHPStorm: https://drupalize.me/topic/phpstorm
lá cờ cn
Các IDE không thực sự hữu ích ở đây, đó là tất cả các phương thức kỳ diệu nên các thuộc tính/phương thức không được biết cho đến khi chạy. Xem https://drupal.stackexchange.com/questions/33473/is-there-a-good-way-to-inspect-objects-whose-type-is-derived-from-the-entitydrup để biết một số ý tưởng

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.