Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/05/2012, 04:56
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
NetBeans + singleton + autocompletar

Después de batallar un poco con la función de autocompletar de NetBeans y de pruebas con XP, Win7 y diferentes versiones del IDE, al fin encontré la solución.

Primero explico el problema:

firstclass.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. class firstClass {
  4.     private static $_instance = false;
  5.     private function __construct() {}
  6.     private function __clone() {}
  7.     public static function getInstance() {
  8.         if(self::$_instance === false) {
  9.             self::$_instance = new self();
  10.         }
  11.         return self::$_instance;
  12.     }
  13.     public function newFunction($var1, $var2 = false, $var3 = false) {
  14.         echo $var1;
  15.     }
  16. }

Luego en index.php
Código PHP:
Ver original
  1. <?php
  2. include 'include/first.class.php';
  3.  
  4. $fc = firstClass::getInstance();
  5. $fc-> // Aquí no funciona autocompletar

Resulta que NetBeans se vale de la documentación (PhpDoc) para "saber" qué tipo de variable/objeto estamos manejando y, las opciones son:

1- La más fácil, pero tal vez no la óptima: Documentar la variable, especificando que es instancia de la clase:
Código PHP:
Ver original
  1. <?php
  2. /* @var $fc firstClass */
  3. $fc = firstClass::getInstance();
  4. $fc-> // Ya funciona autocompletar

2- La segunda opción: Documentar la función; para mí es mejor, porque si haces las cosas como se debe, sólo lo harás una vez y no cada que necesites obtener instancia de la clase.
Código PHP:
Ver original
  1. /**
  2.      *  Instanciar con patrón singleton
  3.      *
  4.      *  @return firstClass
  5.      */
  6.     public static function getInstance() {
  7.         if(self::$_instance === false) {
  8.             self::$_instance = new self();
  9.         }
  10.         return self::$_instance;
  11.     }
  12.  
  13. // Y en index.php:
  14. $fc = firstClass::getInstance();
  15. $fc-> // Ya funciona autocompletar

Supongo que quienes tienen la buena costumbre de documentar adecuadamente sus scripts no habrán notado este "problema".
__________________
- León, Guanajuato
- GV-Foto