variable strip_tags solucion remove indice index indefinido etiquetas ejemplo definido php c-preprocessor

strip_tags - ¿Qué tan eficiente es definir en PHP?



undefined index php post (9)

El preprocesador de C ++ #define es totalmente diferente.

¿El PHP define() diferente a simplemente crear una var?

define("SETTING", 0); $something = SETTING;

vs

$setting = 0; $something = $setting;


Aquí están las diferencias, del manual

  • Las constantes no tienen un signo de dólar ($) antes de ellas;
  • Las constantes solo se pueden definir utilizando la función define (), no por simple asignación;
  • Las constantes se pueden definir y acceder en cualquier lugar sin tener en cuenta las reglas de alcance variable;
  • Las constantes no pueden redefinirse o indefinirse una vez que se han establecido; y
  • Las constantes solo pueden evaluar valores escalares.

Para mí, el principal beneficio es el alcance global. Ciertamente no me preocupo por su eficiencia. Utilícelos cada vez que necesite un valor escalar global que no se pueda alterar.


En general, la idea de una constante es ser constante , (Suena divertido, ¿verdad?;)) Dentro de tu programa . Lo que significa que el compilador (intérprete) reemplazará a "FOOBAR" con el valor de FOOBAR en todo el guión.

Demasiado para la teoría y las ventajas, si compila. Ahora PHP es bastante dinámico y en la mayoría de los casos no notarás una diferencia porque el script PHP se compila con cada ejecución. Afai-can-tell no debería ver una diferencia notable en la velocidad entre las constantes y las variables a menos que use un caché de código de bytes como APC , Zend Optimizer o eAccelerator . Entonces puede tener sentido.

Todas las demás ventajas / desventajas de las constantes ya se han mencionado aquí y se pueden encontrar en el manual de PHP .


No estoy seguro acerca de la eficiencia, pero es más que crear una var:

  • Es una constante: no puede redefinir o reasignar este AJUSTE.
  • Si no se encuentra la definición, $ something se establece en "SETTING", que es útil, por ejemplo, en i18n: si falta una traducción (es decir, la definición correspondiente es el archivo de localización), vemos una gran palabra en mayúsculas, bastante visibles ...

Principales diferencias

  • define es constante, la variable es variable
  • ellos diferentes alcance / visibilidad

Cuando realizo pruebas de velocidad, las constantes que se configuran y arrojan funcionan mucho más rápido que el establecimiento de variables y su eliminación.


php > $cat='''';$f=microtime(1);$s=''cowcow45'';$i=9000;while ($i--){$cat.=''plip''.$s.''cow'';}echo microtime(1)-$f."/n";

0.00689506530762

php > $cat='''';$f=microtime(1);define(''s'',''cowcow45'');$i=9000;while ($i--){$cat.=''plip''.s.''cow'';}echo microtime(1)-$f."/n";

0.00941896438599

Esto es repetible con resultados similares. Me parece que las constantes son un poco más lentas de definir y / o usar que las variables.


Definir es un sentido estático simple, lo que significa que su valor no se puede cambiar durante el tiempo de ejecución, mientras que la variable tiene un sentido dinámico porque puede manipular libremente su valor a lo largo del proceso.


La operación ''definir'' en sí misma es bastante lenta, confirmada por xdebug profiler.

Aquí hay puntos de referencia de http://t3.dotgnu.info/blog/php/my-first-php-extension.html :

  • puro ''definir''
    380.785 vueltas / seg
    14.2647 medias mseg / primera respuesta

  • constantes definidas con la extensión ''hidef''
    930.783 recuperaciones / seg
    6.30279 medias mseg / primera respuesta

actualización de enlace roto

La publicación del blog mencionada anteriormente ha salido de internet. Todavía se puede ver aquí a través de Wayback Machine . Aquí hay otro artículo similar .

Las bibliotecas a las que hace referencia el autor se pueden encontrar aquí (apc_define_constants) y aquí (extensión hidef) .


NO es eficiente, parece. (Y estoy basando todas las suposiciones aquí en un comentario de php.net, aún no hice los puntos de referencia yo mismo.)

recordando una constante, tomará 2 veces el tiempo de recordar una variable.

¡comprobar la existencia de una Constante tomará 2ms y 12ms para un falso positivo!

Aquí hay un punto de referencia de los comentarios de la página de definición en el documento en línea de php.

Antes de usar defined () eche un vistazo a los siguientes puntos de referencia:

true 0.65ms $true 0.69ms (1) $config[''true''] 0.87ms TRUE_CONST 1.28ms (2) true 0.65ms defined(''TRUE_CONST'') 2.06ms (3) defined(''UNDEF_CONST'') 12.34ms (4) isset($config[''def_key'']) 0.91ms (5) isset($config[''undef_key'']) 0.79ms isset($empty_hash[$good_key]) 0.78ms isset($small_hash[$good_key]) 0.86ms isset($big_hash[$good_key]) 0.89ms isset($small_hash[$bad_key]) 0.78ms isset($big_hash[$bad_key]) 0.80ms

Versión de PHP 5.2.6, Apache 2.0, Windows XP

Cada declaración se ejecutó 1000 veces y mientras que una sobrecarga de 12ms en 1000 llamadas no hará que los usuarios finales se rasguen el pelo, arroja algunos resultados interesantes cuando se compara con if (verdadero):

1) if ($ true) era virtualmente idéntico 2) if (TRUE_CONST) era casi dos veces más lento - Supongo que la sustitución no se hace en tiempo de compilación (¡tuve que verificar dos veces esta!) 3) defined () es 3 veces más lento si existe la constante 4) define () es 19 VECES MÁS LENTO si la constante no existe! 5) isset () es notablemente eficiente independientemente de lo que arrojes (buenas noticias para cualquiera que implemente sistemas de eventos basados ​​en arreglos - ¡yo!)

Puede querer evitar if (defined (''DEBUG'')) ...

de tris + php en tfconsulting punto com punto au 26-Mar-2009 06:40

http://us.php.net/manual/en/function.defined.php#89886