2010-03-14 59 views
26

Tôi hơi bối rối bởi hàm PHP declare.PHP sử dụng Khai báo? Đánh dấu là gì?

Chính xác thì chỉ là một dấu tích đơn? Tôi nghĩ một dấu bằng một dòng mã?

Nhưng nếu tôi sử dụng:

function myfunc() { 
     print "Tick"; 
} 

register_tick_function("myfunc"); 

declare(ticks=1) { 
    echo 'foo!bar'; 
} 

Các bản in kịch bản:

"Tick" 2 lần ??

Trả lời

22

Bạn nhận được dấu chọn cho mỗi dòng; và mỗi khối {} Hãy thử rằng:

declare(ticks=1) echo 'foo!bar'; 

Không chặn, không đánh dấu thêm.

declare(ticks=1) {{ echo 'foo!bar'; }} 

Các khối ngoại lai khác = nhiều dấu tích hơn.

PS: nhân tiện, các dấu tích khá là tính năng kỳ lạ và chúng chỉ hữu ích trong một vài trường hợp cực kỳ hiếm hoi. Chúng không tương đương với luồng hay bất cứ thứ gì. Nếu, cho bạn, bọ ve là giải pháp cho một vấn đề thì bạn nên đăng bài về vấn đề của mình trong một câu hỏi khác bởi vì nó có lẽ không phải là giải pháp phù hợp với nó.

+11

Các dấu * * có thể hữu ích cho việc gì? – Pacerier

+1

Mã hồ sơ trong khi gỡ lỗi. – thomasrutter

+0

@thomasrutter Làm cách nào? Bạn có thể vui lòng đưa ra một ví dụ hoặc một tham chiếu? – tonix

14

Bạn đang đi đúng hướng với dấu tick.

http://www.tuxradar.com/practicalphp/4/21/0

một cách đơn giản, một đánh dấu là một sự kiện đặc biệt xảy ra trong nội bộ trong PHP mỗi thời gian nó đã thực hiện một số lượng nhất định báo cáo. Các tuyên bố này là nội bộ đối với PHP và tương ứng lỏng lẻo với các tuyên bố trong tập lệnh của bạn. Bạn có thể kiểm soát số lượng câu lệnh cần đặt dấu tích bằng cách sử dụng hàm declare() và bạn có thể chức năng đăng ký để thực hiện khi sử dụng chức năng bằng cách sử dụng hàm register_tick_function(). Như đã đề cập, cú pháp cho tuyên bố là rất không bình thường, vì vậy hãy sẵn sàng để bị sốc!

+1

Cảm ơn. Tôi thấy nó kỳ quặc rằng hướng dẫn sử dụng php.net không xác định các dấu tick trong các hàm declare() và * _tick_function(). Bạn có biết tại sao chúng bị loại bỏ trong PHP6 không? – David

+1

Làm thế nào mà bọ ve có được trong PHP? – Pacerier

+0

@Jayrox - Bất kỳ bằng chứng hỗ trợ nào để hỗ trợ tuyên bố của bạn "bọ ve PHP6 sẽ bị loại bỏ hoàn toàn" lý thuyết? – Jimbo

Các vấn đề liên quan