2010-03-14 16 views
26

Estoy un poco confundido por la función PHP declare.PHP usando Declare? ¿Qué es un tic?

¿Qué es exactamente un tic single? Pensé que una marca es igual a una línea de código?

Pero si uso:

function myfunc() { 
     print "Tick"; 
} 

register_tick_function("myfunc"); 

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

Las impresiones de script:

"tick" 2 veces ??

Respuesta

22

Obtiene un tilde para cada línea; y cada bloque {} Trate de que:

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

Sin bloque, ninguna señal adicional.

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

Más bloques extraños = más tics.

PD: por cierto, las marcas son una característica bastante exótica y solo son útiles en algunas situaciones extremadamente raras. No son equivalentes a enhebrar ni nada. Si, para usted, las garrapatas son la solución a un problema, entonces debe publicar sobre su problema en otra pregunta porque probablemente no sea la solución adecuada para ello.

+11

¿Para qué * can * ticks puede ser útil? – Pacerier

+1

Código de creación de perfiles durante la depuración. – thomasrutter

+0

@thomasrutter ¿Cómo? ¿Podría dar un ejemplo o una referencia? – tonix

14

Estás en el camino correcto en cuanto a lo que es un tic.

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

En pocas palabras, una garrapata es un evento especial que se produce internamente en cada PHP tiempo se ha ejecutado un cierto número de declaraciones . Estas declaraciones son internas a PHP y corresponden libremente a a las declaraciones en su secuencia de comandos. Usted puede controlar el número de declaraciones que se necesita para desencadenar una señal mediante la función declare(), y se puede funciones de registro a ejecutar cuando una garrapata se produce mediante el uso de la función register_tick_function(). Como ya se mencionó , la sintaxis para es muy inusual, así que prepárese para un choque!

+1

Gracias. Me pareció extraño que el manual de php.net no definiera ticks en las funciones declare() y * _tick_function(). ¿Sabes por qué están siendo eliminados en PHP6? – David

+1

¿Cómo llegaron las marcas incluso en PHP? – Pacerier

+0

@Jayrox - Cualquier evidencia de apoyo para apoyar su declaración "PHP6 ticks se eliminará por completo" la teoría? – Jimbo