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

namespaces en php POO

Estas en el tema de namespaces en php POO en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas noches foreros del web, aqui dandoles una pequeña molestia con esto de los namespaces, quisiera que me ayudaran en el siguiente caso, tengo los ...
  #1 (permalink)  
Antiguo 14/12/2012, 18:24
 
Fecha de Ingreso: febrero-2009
Ubicación: mexico
Mensajes: 148
Antigüedad: 15 años, 2 meses
Puntos: 1
Pregunta namespaces en php POO

Buenas noches foreros del web, aqui dandoles una pequeña molestia con esto de los namespaces, quisiera que me ayudaran en el siguiente caso, tengo los siguientes archivos:

/** este archivo va dentro de una carpeta llamada clases **/
Persona.php
Código PHP:
namespace Clases
{
       class 
Persona
       
{
             public function 
__construct(){}
             public function 
Guardar(){}
             public function 
consultar(){}
             public function 
Modificar(){}
             public function 
Eliminar(){}
       }

/** este archivo va dentro de una carpeta llamada modelos **/
Persona.php
Código PHP:
namespace Modelos
{
       class 
Persona
       
{
             
       }

ahora lo que quiere es utilizar la clase Modelos\Persona dentro de la clase Clase\Persona, creando una instancia de la clase Modelos\Persona en el contructor de la clase Clases\Persona para asi poder manejar esa instanacias en los metodos de la clase Clases\Persona pero me marca error diciendo que no puedo poner 2 clases con el mismo nombre alguien puede ayudarme, estoy queriendo implementar namespaces en mis proyectos pero no puedo hacer esto que parece sencillo pero no lo es, gracias de antemano
  #2 (permalink)  
Antiguo 14/12/2012, 18:30
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: namespaces en php POO

Utiliza un alias para la clase que importas,

Código PHP:
Ver original
  1. use Model\Person as ModelPerson;
  2. ...
  3. new ModelPerson()

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 14/12/2012, 18:32
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 2 meses
Puntos: 137
Respuesta: namespaces en php POO

estas usando la palabra use para incluir el namespace? porque acabo de ejecutar esto
Código PHP:
Ver original
  1. <?php
  2. namespace Modelos
  3. {
  4.        class Persona
  5.        {
  6.              
  7.        }
  8. }  
  9. namespace Clases
  10. {
  11.     use Modelos;
  12.        class Persona
  13.        {
  14.              public function __construct(){
  15.                 $a = new Modelos\Persona;
  16.              }
  17.              public function Guardar(){ echo "adfadf";}
  18.              public function consultar(){}
  19.              public function Modificar(){}
  20.              public function Eliminar(){}
  21.        }
  22. }
  23. namespace{
  24.     $a = new Modelos\Persona;
  25.     $b = new Clases\Persona;
  26.     $b->Guardar();
  27. }
y no me salio el error
  #4 (permalink)  
Antiguo 14/12/2012, 18:34
 
Fecha de Ingreso: febrero-2009
Ubicación: mexico
Mensajes: 148
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: namespaces en php POO

Cita:
Iniciado por abimex Ver Mensaje
estas usando la palabra use para incluir el namespace? porque acabo de ejecutar esto
Código PHP:
Ver original
  1. <?php
  2. namespace Modelos
  3. {
  4.        class Persona
  5.        {
  6.              
  7.        }
  8. }  
  9. namespace Clases
  10. {
  11.     use Modelos;
  12.        class Persona
  13.        {
  14.              public function __construct(){
  15.                 $a = new Modelos\Persona;
  16.              }
  17.              public function Guardar(){ echo "adfadf";}
  18.              public function consultar(){}
  19.              public function Modificar(){}
  20.              public function Eliminar(){}
  21.        }
  22. }
  23. namespace{
  24.     $a = new Modelos\Persona;
  25.     $b = new Clases\Persona;
  26.     $b->Guardar();
  27. }
y no me salio el error
claro que si solo me falto ponerlo en la clase Clase\Persona.php pero aun asi me marca error
  #5 (permalink)  
Antiguo 14/12/2012, 18:49
 
Fecha de Ingreso: febrero-2009
Ubicación: mexico
Mensajes: 148
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: namespaces en php POO

Tengo una, por ejemplo si quiere incluir en la clase Clases\Persona.php quiero incluir el archivo de conexion el cual es el siguiente:

<?php
require_once("../librerias/phpDataMapper/Base.php");
require_once("../librerias/phpDataMapper/Adapter/Mysql.php");
require_once("../librerias/Error.php");

class Conexion
{
private $servidor;
private $bd;
private $usuario;
private $password;

public function __construct() {
$this->servidor = "localhost";
$this->bd = "prueba";
$this->usuario = "root";
$this->password = "1";
}
public function getConexion()
{
try
{

$conexion = new phpDataMapper_Adapter_Mysql($this->servidor,$this->bd,$this->usuario,$this->password);
}
catch(Exception $e)
{
Error::GuardarLog($e);
throw $e;
}
return $conexion;
}
}
?>

el require_once("Conexion.php") debe ir dentro del namespace Clases???
  #6 (permalink)  
Antiguo 15/12/2012, 05:34
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: namespaces en php POO

Primero, solucionaste el problema inicial ?, segundo el namespace deberia ser el que tu creas conveniente, de todas formas que sentido tiene la clase Conexion ?, crear una clase para solo hardcodear parámetros no tiene mucho sentido, no seria mas sencillo simplemente instanciar el adapter directamente ?
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: php, php5, poo
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 20:56.