2009-12-21 11 views

Respuesta

14

Creo que deberías conocer las diferencias entre isset y empty y usar la que satisfaga tus necesidades.

empty volverá FALSE si la variable tiene un no vacío y valor distinto de cero.

los siguientes valores son considerados como vacío:

  • "" (una cadena vacía)
  • 0 (0 como un entero)
  • "0" (0 como una cadena)
  • NULL
  • FALSE
  • array() (una matriz vacía)
  • var $var; (una variable declarada, pero sin un valor en una clase)

Por otro lado isset volverá FALSE si la variable no existe o ha sido desactivada con unset(), o la variable se ha establecido en NULL.

1

Personalmente, uso isset por hábito, negar no es algo que use mucho.

4

Esa es una pregunta bastante amplia. Depende de si puede esperar que la variable esté siempre presente o si puede haber casos en los que no lo es. Si, de acuerdo con la estructura de su programa, una cierta variable siempre debe estar presente en este punto del programa, no debe verificar su existencia. De esta forma recibirás una agradable advertencia cuando algo se arruine y sepas que algo salió mal. Si, OTOH, esperas que la variable a veces esté ausente, debes verificar que este caso capte con gracia el error que de otro modo resultaría.

Por otra parte, la elección entre isset y !empty depende de si quieres decir "está establecido y no null" o "se establece y contiene algo que no está considerado false". Esa es una diferencia pequeña pero a veces importante.

+0

Estoy totalmente de acuerdo con usted con gracia atrapar el error – ariefbayu

1

Para responder a la pregunta, no.

  1. Si el valor no puede ser nulo en el modelo, entonces no es así.
  2. Si se trata de errores y conjuntos vacíos, entonces es mejor redirigir para agregar páginas y 404 no fundadores.
  3. Cuando lo uso en una vista, generalmente es de alto nivel, por lo que no tengo que escribir muy a menudo.
  4. 3 implica a menudo implica un diseño cuidadoso de su modelo. ASÍ QUE usar Isset y! Empty es excusa para no trabajar en esos modelos.

  5. Los elementos que son opcionales, a menudo también aparecen en una o varias relaciones, ya que esos bucles foreach son más efectivos que la comprobación de cada valor.
0

cuando se trata de una elección entre uno u otro

cuando no se está establecido, está vacío < => cuando no está vacía, se establece

pero cuando se se establece, puede estar vacío ... una no puede ..........

por lo que este es el differnece

0

Cuando haces algo como $this->set(compact('posts', 'tags', 'categories')); desde el controlador, solo las variables que no son null se envían a la vista. Entonces, si anteriormente había hecho $categories = $this->Categories->find('all', ...); y no devolvió resultados, entonces $categories no existirá en su vista. Así que para responder a su pregunta, en la vista, yo simplemente hago: valores

<?php if (isset($categories)): ?> 
    <ul> 
     <?php foreach ($categories as $category): ?> 
      <li>{output category information here}</li> 
     <?php endforeach; ?> 
    </ul> 
<?php else: ?> 
    <p>No categories</p> 
<?php endif; ?> 

vacíos también no equivalen a cierto, por lo que puede hacer cosas como:

<dl> 
    <dt>Title</dt> 
    <dd><?php echo $category['Category']['title']; ?></dd> 
    <dt>Description</dt> 
    <dd> 
     <?php if ($category['Category']['description']): ?> 
      <?php echo $category['Category']['description']; ?> 
     <?php else; ?> 
      None 
     <?php endif; ?> 
    </dd> 
</dl> 

En resumen yo sólo uso isset() para evitar errores sobre variables no configuradas.

Raramente utilizo empty() y me las arreglé muy bien sin otros lenguajes de programación.

Cuestiones relacionadas