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

Novato de POO en php

Estas en el tema de Novato de POO en php en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Tengo varias dudas sobre POO a partir de php 5.x que es donde se implementa las variables y metodos privados y publicos. Mi pregunta es ...
  #1 (permalink)  
Antiguo 10/02/2007, 16:37
Avatar de radamantys  
Fecha de Ingreso: agosto-2006
Mensajes: 46
Antigüedad: 17 años, 8 meses
Puntos: 1
Novato de POO en php

Tengo varias dudas sobre POO a partir de php 5.x que es donde se implementa las variables y metodos privados y publicos. Mi pregunta es si hay que activar alguna opcion ( en php.ini por ejemplo) para usar las clases, es que tengo instalado php5.0.4 pero mis clases no admite las opciones de publico y privado, por ejemplo tengo una variable declarada como privada en mi clase, aun así yo asignarla valores fuera de la clase, sin que php me devuelva ningun tipo de error.

no se si me explicado bien.
Codigo:
Código PHP:
class prueba{

private 
$varPrueba;

public function 
Mostrar() {return $this->$varPrueba; }

}

$objeto = new prueba()

$objeto-> $varPrueba "hola";

$objeto->Mostrar(); 
y en pantalla me aparece la plabra "hola" a pesar de que yo tengo declarada la variable "varPrueba" como privada.

a que se debe esto???
  #2 (permalink)  
Antiguo 10/02/2007, 17:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Novato de POO en php

Prueba asi y me dices que tal:
Código PHP:
class prueba{

private 
$varPrueba;

public function 
Mostrar() {return $this->varPrueba; }

}

$objeto = new prueba()

$objeto->varPrueba "hola";

$objeto->Mostrar(); 
Cuando te refieres a un miembro de alguna clase no debes de usar mas $ en el nombre de la variable, porque ya usando $this estas creando, lo que pasa en tu ejemplo es que al usar $this->$varPrueba estas creando otra variable que se llama $varPrueba y como no esta definida, por defecto se vuelve publica y es por eso que la puedes mostrar.

Saludos.
  #3 (permalink)  
Antiguo 10/02/2007, 17:13
Avatar de radamantys  
Fecha de Ingreso: agosto-2006
Mensajes: 46
Antigüedad: 17 años, 8 meses
Puntos: 1
Re: Novato de POO en php

Gracias tio, funciona

joer menuda chorrada.

Última edición por radamantys; 10/02/2007 a las 17:27
  #4 (permalink)  
Antiguo 12/02/2007, 13:57
hen
 
Fecha de Ingreso: diciembre-2003
Ubicación: Buenos Aires
Mensajes: 63
Antigüedad: 20 años, 4 meses
Puntos: 1
Re: Novato de POO en php

Hola.

Si el atributo tiene el modificador de acceso 'private', entonces no le podemos asignar un valor desde fuera de la clase, directamente, lo hacemos mediante un metodo de la clase

Código PHP:
class prueba{

private 
$varPrueba// estamos indicando q solo podremos acceder a este 
                           // atributo desde esta clase mediante el modificador de
                           // acceso 'private', y no desde una instancia
                           // de la misma, y tampoco desde una clase hija de esta.
public function Mostrar() {return $this->varPrueba; }

}

$objeto = new prueba() 

$objeto->varPrueba "hola"// aca estoy intentando establecer el valor de
                                        // un atributo 'private' desde un 
                                        // objeto en forma directa, 
                                        // esto me va a dar un 'error fatal' 
                                        // de PHP, por q el atributo tiene el modificador
                                        // de acceso 'private' y no 'public' 
Código:
Fatal error: Cannot access private property prueba::$varPrueba in C:\AppServ\www\practica.php on line 14
Bueno Yo lei en algunos textos de q una de las virtudes de la POO es la encapsulacion. Segun lo q recuerdo, hacer lo siguiente:

Código PHP:
$objeto->varPrueba "hola"
Va en contra de este principio. Lo q vi en los ejemplos es lo siguiente:

Código PHP:
class prueba{

    private 
$varPrueba;

    public function 
establecerValorAtributo($nombre$valor){
        if (!empty(
$nombre)) $this->$nombre $valor;
    }

    public function 
accederValorAtributo($nombre){
        echo 
$this->$nombre;
        return;
    }

}

$objeto = new prueba();

$objeto->establecerValorAtributo("varPrueba","hola");
$objeto->accederValorAtributo("varPrueba"); 
Ojala te sirva para aclararte un poco el panorama. Yo cuando empeze con la POO estaba encantado, pero me di cuenta q hay q respetar en lo posible las reglas q la POO establece. Espero q sigas leyendo sobre POO es un tema apasionante. Yo me baje con el Emule varios Ebooks de PHP5 y POO, Yo te recomiendo q busques libros sobre POO para aprender a aplicarla de la mejor manera, mucho exito.

chao
__________________
.:hEN
DevHen
EXITOS
  #5 (permalink)  
Antiguo 12/02/2007, 18:15
 
Fecha de Ingreso: febrero-2007
Mensajes: 35
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Novato de POO en php

Hola radamantys.

Yo estoy, al igual que quien abrió este hilo, empezando a conocer la POO y a aplicarla a PHP.

Creo que es el paso necesario a seguir si se quiere mejorar la producción y calidad del trabajo y los desarrollos.

Por lo mismo, tu dijiste que habías bajado unos ebooks del tema. ¿ Podrías recomendar alguno en español?, o ¿ conoces algún buen libro de php poo en español que puedas recomendar?

¿ Alguien podría recomendar un buen libro de php5 poo en español?

Saludos.
  #6 (permalink)  
Antiguo 12/02/2007, 18:54
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Re: Novato de POO en php

Tambien se puede usar __GET o __SET para alterar variables:
http://www.php.net/manual/en/languag...verloading.php
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #7 (permalink)  
Antiguo 13/02/2007, 12:00
hen
 
Fecha de Ingreso: diciembre-2003
Ubicación: Buenos Aires
Mensajes: 63
Antigüedad: 20 años, 4 meses
Puntos: 1
Re: Novato de POO en php

Bueno Yo me baje un libro de POO en español, me gusto muchisimo, Yo lo recomiendo es bastante explicativo y facil de seguir.
El libro estaba discponible en Inet, pero no encuentro la pagina para descargarlo.
Pero yo te lo puedo pasar el mail para q lo leas. Es mas se lo paso a todos los q e esten interesados !!!
"Solo manden un mensaje de texto al ... " jajaja, es un broma! (lo del mensaje de texto).

El ebbok se titula "Introducción a laOOP" y esta hecha por el Grupo Editorial EIDOS, q tambien tenia otros ebooks gratuitos para desacargar , el ebook pesa como 270 Kb, casi nada y nada... pasame tu mail o decime como te lo envio y listo. Para todos los q quieran el ebook IDEM.

Nota: el ebook es freeware. y eso lo podran comprobar todos. lo digo para evitar dudas sobre su distribucion legal. Repito es freeware (gratis) asi q espero q muchos lo lean.

En cuanto a un ebook de PHP5, yo vi algo del "PHP Architects Zend. Certification Study Guide 2006" (ebook en ingles), q a diferencia del primer ebook , no es gratuito, pero q se consigue de forma no legal por el Emule, cosa q no apoyo y con la q no estoy de acuerdo, pero lo comento con intencion estrictamente informativa.

Luego lo q lei sobre POO aplicado a PHP, lo lei en Inet, en el manual en formato ".chm" q me baje de:
http://www.php.net/download-docs.php
y q esta disponible de forma gratuita en espaniol para descargar.
Pero en general vi muchas cosas para aprender en Inet, solo hace falta entrar en algun buscador -Yo use Google- y buscar informacion sobre PHP5

Espero q a todos les sirva esta informacion y compartan sus conocimientos.
Exitos a todos.

Chao
__________________
.:hEN
DevHen
EXITOS
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 04:55.