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

Propiedad de una clase que es un objeto de otra clase

Estas en el tema de Propiedad de una clase que es un objeto de otra clase en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos: Veamos tengo una clase que deseo funcione asi: Código PHP: class  Filtro {    var  $servicios ;    class  CadenaElementos      {          var  $exclusivo ...
  #1 (permalink)  
Antiguo 16/03/2005, 11:35
 
Fecha de Ingreso: julio-2003
Mensajes: 132
Antigüedad: 21 años, 5 meses
Puntos: 0
Mensaje Propiedad de una clase que es un objeto de otra clase

Hola a todos:
Veamos tengo una clase que deseo funcione asi:

Código PHP:
class Filtro
{
   var 
$servicios;

   class 
CadenaElementos
    
{
         var 
$exclusivo;
       
         function 
getExclusivo()
         {
            return 
$this->exclusivo;
         }
         function 
setExclusivo($nuevoExclusivo)
         {
            
$this->exclusivo $nuevoExclusivo;
         }
     }


    function 
Filtro()
    {
         
$this->servicios=new CadenaElementos();
    }

    function 
getServicios()
    {
        return 
$this->servicios;
    }
    function 
setServicios($nuevoServicios)
    {
        
$this->servicios$nuevoServicios;
    }



Es decir:
Tengo una clase "Filtro" que tiene una propiedad "servicios" que es un objeto de la clase "CadenaElementos" cuyo ámbito debe ser la clase "Filltro", es decir, esta clase solo tiene sentido dentro de la clase "Filtro".

como podeis ver en el contructor de la clase Filtro me creo una instancia de de la clase "CadenaElementos" y se la asigno a la propiedad servicios.

Bueno desde el código me creo algo así:

Código PHP:
$f1= new Filtro();
$f1->getServicios->setExclusivo(true); 

Bueno comentarles que vengo de entornos de desarrollo fuertemente tipados y OO así que me gstaría ayudasen a comunicar como poder lograr un escenario similar lo más elegante posible.

Muchas gracias de antemano.

Bueno decirles que me da un error por meter una clase dentro de otra (que es lo que quisiera) me gusta´ría comentasen como lo hacen ustedes.
Además me da un error de alacceder a través de "getServicios"


Espero sus comentarios y gracias de nuevo
  #2 (permalink)  
Antiguo 16/03/2005, 18:56
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 3 meses
Puntos: 41
BUeno... no sé si en este caso sea necesario meter la definición de una clase dentro de otra.
Podrías simplemente definirlas por separado y crear la instancia de CadenaElementos dentro de Filtro.
Código PHP:
class CadenaElementos{
  
//...
}
class 
Filtro{
  var 
$servicios;
  
  function 
Filtro(){
    
$this->servicios = & new CadenaElementos(); 
  }
  
//...

El hecho de que CadenaElementos sólo tenga sentido dentro de Filtro, hace que tengan una relación de composición... pero no es necesario definir la clase dentro de la otra.

no sé si funcione esto (y ahora no tengo cómo probarlo) pero tal vez sí se pueda definir una clase dentro de otra, pero dentro de algún método (el constructor?):
Código PHP:
function Filtro{
  var 
$servicios;
  
  function 
Filtro(){
    class 
CadenaElementos{
       
//... toda la definición de la clase
    
}
    
$this->servicios=new CadenaElementos(); 
  }

Como te dije, no sé si funcione... nunca lo he usado y noi he encontrado nada parecido en la documentación.

Saludos
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 02:35.