Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PHP OO NetBeans + singleton + autocompletar

Estas en el tema de NetBeans + singleton + autocompletar en el foro de Frameworks y PHP orientado a objetos en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 27/05/2012, 04:56
Avatar de 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
  #2 (permalink)  
Antiguo 27/05/2012, 05:51
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: NetBeans + singleton + autocompletar

Siempre hay que documentar, el tema es que no siempre se puede indicar @return tan fácilmente, es un problema común cuando utilizas DI o Factory por eso la documentación inline si bien no es lo ideal es muy útil.

Y bueno, nota aparte que no puedo dejar pasar :P, porque Singleton, no debería usarse ni siquiera de ejemplo, y me sigue llamando la atención el esfuerzo en "cerrar" la clase cuando PHP tiene Reflection.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 27/05/2012, 10:49
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Exclamación Respuesta: NetBeans + singleton + autocompletar

El no mencionar el operador de tipos instanceof en esta publicación me da a entender que puede que lo estés obviando, si es el caso, me gustaría que lo revisaras:

Documentación: http://www.php.net/manual/es/languag...ators.type.php

Para Zend Studio, por ejemplo, le sirve como referencia para servir las opciones de autocompletado, no sabría decirte en Netbeans, pero podría no alejarse.

Inténtalo y nos cuentas:

Código PHP:
<?php
require_once('include/first.class.php');
 
$fc firstClass::getInstance();

if(
$fc instanceof firstClass) {
    
    
$fc-> // Referencia generada.
}
?>
Ahora bien, en ningún momento estoy indicando que la documentación no sea necesaria, ni más faltaba.

Buena suerte.
__________________
Programar dejó de ser una profesión acusada en la oscuridad y disfrutada fríamente... para convertirse en un arte.
  #4 (permalink)  
Antiguo 07/08/2012, 09:09
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
Respuesta: NetBeans + singleton + autocompletar

Yo tenia el mismo problema, netbeans no me autocompletaba aquellas instancias de mi controller. En mi clase abstracta controller yo instancio aquellas clases que quiero que esten disponible para todos los controladores, pero en el editor si yo ponia
Código PHP:
Ver original
  1. $this->Url->
no me salian los métodos de la clase Url, esto lo solucione agregando en la cabecera del archivo controller.php esto:
/* @property Url $Url
entonces ahora si cuando pongo $this->Url-> me sale el listado de métodos.
Donde no pude solucionarlo es con los modelos. Yo los cargo asi:
$this->modelo ('Usuarios') o $this->modelos(array('usuarios','avisos'));
Y despues puedo usarlo asi:
$this->Usuarios->metodo
pero no se donde deberia poner el comentario @property para que sepa que Usuario es un objeto y que me pueda mostrar sus métodos jeje.
  #5 (permalink)  
Antiguo 18/06/2014, 01:29
 
Fecha de Ingreso: septiembre-2008
Mensajes: 31
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: NetBeans + singleton + autocompletar

Gracias ,llevaba 2 días mirando esto, me has resuelto un problema.
Ahora bien si yo cargo mis clases en head.php y body.php hago un include_once 'head.php', donde he definido mis clases e instanciado, como puedo hacer que al escribir en body.php al escribir $clase-> me salgan las funciones creadas??? No me salen.

Gracias

Etiquetas: netbeans, singleton, variables, autocompletado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:12.