2011-08-28 8 views
9

Tengo la clase.PHP Class arroja un error, lo que es incorrecto

Class User { 

    private $_name; 
    private $_email; 

    public static function factory() { 
     return new __CLASS__; 
    } 

    public function test() { 

    } 
} 

y cuando realizo una llamada a un método estático usando la siguiente sintaxis.

User::factory(); 

me arroja el siguiente error de sintaxis.

Parse error: syntax error, unexpected T_CLASS_C in htdocs/test/index.php on line 8 

el error se está lanzando debido a que el método de fábrica estática() no puede crear el objeto durante la llamada al método estático.

y cuando cambio la constante mágica __CLASSS__ por el nombre de la clase actual, es decir, User, entonces funciona.

¿Qué es lo que me falta?

+0

¿Por qué no volver '' self' o $ this'? ¿Necesitas una nueva instancia del objeto? – powtac

+0

sí, necesito crear una nueva instancia del objeto cada vez que hago una llamada. –

Respuesta

10

Probar:

Class User { 

    private $_name; 
    private $_email; 

    public static function factory() { 
      $class = __CLASS__; 
      return new $class; 
    } 

    public function test() { 

    } 
} 
+0

que por supuesto funciona, ese no es el punto, no quiero crear el objeto de esa manera. –

+0

¿Está intentando crear un retorno dinámico? –

+0

sí, ese es el problema –

7

Prueba esto:

$class = __CLASS__; 
return new $class; 
+1

no funciona :(, arroja el siguiente error 'error de sintaxis, inesperado T_CONSTANT_ENCAPSED_STRING' –

+0

@Ibrahim Azhar Armar: lo siento, mi mal, edité mi respuesta, esta vez debería trabajo. – JRL

8
No

entendemos para qué tu ejemplo no hace obras. Pero lo que no trabajo es:

public static function factory() 
{ 
    return new self(); 
} 
+0

se ve aún mejor :) –

Cuestiones relacionadas