Logotipo de PHPAl hilo de mis pruebas con NetBeans para PHP, me percato de que ha veces puede ser necesario hacer uso del "global" de PHP, bien porque este IDE considera que puede haber un problema con una "variable no inicializada" (lo que no es del todo correcto), bien por lograr una mayor legibilidad del código fuente. Cuando uno trabaja en cierto proyecto, sobre todo si lleva en ello algún tiempo, y no hace uso de muchas variables globales, las tiene todas en la cabeza, por decirlo así, y sabe que una variable, aparentemente, sin inicializar, en realidad no es tal, porque sabe de qué va.

Pero, pensando en otros programadores que acaso se decidieran a echar un vistazo a nuestro código, tal vez no sea mala idea dejar claro que dichas variables están inicializadas, y corresponden a variables globales además. Pero, como suele ser habitual, siempre que se trata de estos asuntos, un poco de código suele arrojar no poca luz a lo que se quiere decir. Así, supón el siguiente código fuente, que corresponde a cierto "script real" que se encuentra en cierto proyecto en que trabajo... bueno, de Gesbit, para qué vamos a andarnos con tonterías. ;) Fíjate en el siguiente código fuente:

require('gb-init.php');
 
if(!defined('GB_GLOBALS')){
  exit;
}
 
$admin->AssertUserCan(
  ROLES_CAP_MANAGE_CACHE
);
 
if($cache->IsUsing()){
  $cache->ClearEntireCache();
  _e('Cache content has been clear');
}

El "script" funciona tal como se espera, es decir, personalmente, sé sin lugar a dudas de qué van las variables "admin" y "cache", sé que se inicializan donde deben, que están disponibles (para eso la bandera "GB_GLOBALS"), y, en fin, asumo que todo el mundo lo sabrá... De modo que, aunque el "script" funciona, añadiendo una sóla línea podemos lograr que alguien que no "sepa" tanto como nosotros, al menos tenga alguna idea de dónde salen las variables susomentadas:

require('gb-init.php');
 
if(!defined('GB_GLOBALS')){
  exit;
}
 
global $admin, $cache;
 
$admin->AssertUserCan(
  ROLES_CAP_MANAGE_CACHE
);
 
if($cache->IsUsing()){
  $cache->ClearEntireCache();
  _e('Cache content has been clear');
}

Una sóla línea, pero, que, deja claro que las variables "admin" y "cache" son variables globales, que, han sido inicializadas anteriormente, y que las usaremos en el "script" en que estamos, como puede verse a continuación. ¿No te parece a ti que esa línea no sobra, precisamente? ¿Que debe estar ahí, buscando la legibilidad del código fuente, y buscando que NetBeans (sea dicho de paso) deje de considerar esas variables de "dudosa" inicialización? Yo creo que así es, tanto que he escrito esta entrada que acabas de leer. Y procuraré aplicarme el cuento en este sentido. ¿Qué te parece? ;-)