Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/08/2013, 15:04
daicon
 
Fecha de Ingreso: julio-2010
Mensajes: 134
Antigüedad: 13 años, 9 meses
Puntos: 0
Los namespace y use ¿Como funcionan?

Hola:
Estoy teniendo muchos problemas con los malditos namespace y los use.
Tengo la siguiente estructura en una carpeta llamada Restler:
/restler que contiene:
v1/
vendor/
index.php

/v1 contiene:
Say.php
Eventos.php

/vendor contiene mas archivos irrelevantes (creo)

Y FUERA de la carpeta Restler existe este archivo IMPORTANTE: scriptbueno.php


El contenido de index.php:

Código PHP:
require_once 'vendor/restler.php';
use 
LuracastRestlerDefaults;
use 
LuracastRestlerRestler;

Defaults::$useUrlBasedVersioning true;

$r = new Restler();
$r->setAPIVersion(2);
$r->addAPIClass('Say');
$r->addAPIClass('eventos');
$r->handle(); 
El contenido de SAY.php:

Código PHP:
namespace v1;
require_once 
'../scriptbueno.php'// Si pongo ../../scriptbueno.php Que digo yo es como se accedería de toda la vida, pues me dice que no lo encuentra :-S, no lo entiendo
use LuracastRestlerRestException;


class 
Say {
    function 
hello($to='world') {
    
        
$user JFactory::getUser();
        echo 
"Usuario " $user->username " con id: " $user->id " conectado a Joomla"
        return 
"Hello $to!";
    }
    function 
hi($to) {
        if (!
is_numeric($to))
                                     throw new 
RestException(400'not a valid number');
            
        return  
"Hi $to!";
    }

Scriptbueno.php contiene:

Código PHP:
define'_JEXEC');
define('JPATH_BASE''\joomla2_5' );
define'DS'DIRECTORY_SEPARATOR );
define'JDEBUG''none');

require( 
JPATH_BASE .DS.'includes'.DS.'defines.php' );
require( 
JPATH_LIBRARIES        .DS.'import.php');
require( 
JPATH_BASE       .DS.'configuration.php' ); 
require( 
JPATH_BASE .DS'libraries' DS'joomla' .DS'application' .DS'component' .DS'helper.php');

$mainframe JFactory::getApplication('site');         
echo 
"todo ok"
Y este es el error que me aparece:
PHP Fatal error: Class 'v1\JFactory' not found in C:\xampp\htdocs\Restler31\v1\Say.php on line 12

Yo ya no se que estoy haciendo mal