Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/02/2015, 13:28
Avatar de guardarmicorreo
guardarmicorreo
 
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Sintaxis entre identificador de namespace y variable

Hola pateketrueke, cuanto tiempo! :D

La clase no está instanciada dentro del namespace, evidentemente sí está declarada/escrita, esta es la clase original, pero no va a servir porque he seguido trabajando para solucionarlo y ahora el problema que tengo es otro.

Código PHP:
Ver original
  1. namespace controller;
  2. class Front{
  3.     private $class;
  4.     private $module;
  5.     private $method;
  6.     private $args;
  7.     public function __construct($module='Home', $method, $args) {
  8.         $this->module = $module;
  9.         $this->method = $method;
  10.         $this->args   = $args;
  11.     }
  12.    
  13.     public function __toString(){
  14.             //no incluí metodo ni argumentos porque es sólo de prueba a ver si la llamada funciona
  15.             new \module\$this->module();
  16.     }
  17. }

El estado actual de la clase es este

Código PHP:
Ver original
  1. namespace controller;
  2. class Front{
  3.    
  4.     public function invoke($args) {
  5.        
  6.         $class = '\module\\'.$args['module']()->$args['method']($args['args']);
  7.        
  8.         return new $class;
  9.     }
  10. }

Ahora el problema es que no reconoce el metodo cómo el nombre de una clase, sino cómo una función en el namespace, la cual no está. Me muestra este error

Cita:
Fatal error: Call to undefined function Home() in /srv/www/htdocs/blog/controller/front.php on line 27
La línea 27 es la línea del return.

Para complementar los archivos, el estado actual del return del index es este

Código PHP:
Ver original
  1. echo (new \controller\Front())->invoke($args);

Y el archivo del modulo Home

Código PHP:
Ver original
  1. namespace module;
  2.  
  3. class Home{
  4.     public function home() {
  5.         return "hola";
  6.     }
  7. }

Si quieres todos los archivos tan sólo dilo y lo subo en un segundo y te pongo el enlace.

Una vez resuelto esto iré a resolver lo del otro post: por qué me dice que obtengo un object en vez de un string, pero creo que es por eso que me dijiste, que estoy instanciando directamente el constructor, error terrible que no tuve en cuenta jeje.

Muchas gracias por tu ayuda.
__________________
Ayúdame a hacerlo por mi mismo.