Giải pháp của Michael hoạt động trong hầu hết các trường hợp, nhưng có một số trường hợp đặc biệt bạn nên cân nhắc khi muốn có giải pháp chung.
Đầu tiên, một đối tượng mà bạn thử nghiệm để có phương thức getTimestamp()
không phải là một phiên bản DateTime
. Tôi có thể điều của nhiều trường hợp khi lĩnh vực dấu thời gian sẽ hữu ích trong một đối tượng, vì vậy tôi sẽ thử nghiệm phương pháp getTimezone()
để thay thế.
Thứ hai, nếu my_var
là một đối tượng có phương pháp ma thuật __call
được xác định, thì tất cả các thử nghiệm như vậy sẽ có kết quả dương. Đó là lý do tại sao tôi đề nghị kiểm tra tiêu cực sau:
{% if my_var.timezone is defined and my_var.nonExistingProperty is not defined %}
{{ my_var|date('m/d/Y') }}
{% else %}
{{ my_var }}
{% endif %}
Trường hợp thứ hai là trường hợp thứ hai tôi gặp khó khăn vì sử dụng các đối tượng Propel ORM. Lớp cơ sở có phương thức __call
bắt tất cả các bài kiểm tra của Twig is defined
.
vấn đề liên quan đến github: [Xem xét kiểm tra instanceof] (https://github.com/fabpot/Twig/issues/553) –
@DanLee Cảm ơn, điều đó thật thú vị nhưng tôi hiểu tại sao PR đã bị đóng mà không bị hợp nhất vì điều này sẽ giống như một loại hỗn hợp giữa PHP và Twig. –
Có thực sự, nó không thực sự là doanh nghiệp của quan điểm. Nghĩ rằng nó có thể hữu ích nếu bạn thực sự muốn thực hiện toán tử 'instanceof'. –