Curso POO: Clase 5 Objeto dentro de otro objeto

Tema en 'Programación & Programación Web' iniciado por cavoso, 18 Nov 2011.

  1. cavoso

    cavoso Usuario Casual nvl. 2
    197/244

    Registrado:
    31 May 2008
    Mensajes:
    2.727
    Me Gusta recibidos:
    13
    bueno hacia tiempo que no dejaba una clase de poo pero ahora voy denuevo, bueno aqui la clase:

    supongo que muchos de ustedes que an empezado a trabajar con PHP POO se an dado cuenta que abeces necesitan trabajar un objeto o las funciones y metodos de una class especifica en otra class, pero no estan relacionadas entres si y por tanto no pueden hacer el tema de la herencia o si pueden hacerlo pero como en php no se permite mas de una class padre, por ende como podemos hacer para trabajar una objeto dentro de una class??, la respuesta me vino a la mente en un momento de aburrimiento y la verdad no se si esta bien o mal pero almenos funciona creo yo, para no dar tanta explicaciones les voy a dejar un ejemplo, tenemos un objeto llamado $mysql, en el cual tenemos todos los metodos y funciones para la conexion a la base de datos, para hacer las consultas y para colocarlo en arreglo, y tendremos una class llamada user en la cual pediremos todos los datos de usuario, de la base de datos y los dividiremos en funciones para que los datos no puedan ser modificados aqui el codigo del ejemplo

    Insertar CODE, HTML o PHP:
    <?
    session_start(); //con esto se inicia el sistema de session
    include "class/mysql.php"; //con esto agregamos el codigo para el objeto mysql
    include "class/usuario.php"; //el codigo para los datos de usuario
    
    $user->id($_session["id"]); // session["id"] es la id del usuarios que esta en la base de datos previa validacion de inicio
    $user->mysql($mysql); aqui agregamos todo el objeto mysql al objeto user
    $user->datos('mostrar'); //con esto mostraremos los datos de usuario
    ?>
    
    aqui el codigo de usuario.php
    Insertar CODE, HTML o PHP:
    <?
    class user{
    private $uid;
    private $mysql;
    public function id($a){
      $this->uid=$a;
    }
    public function mysql($sql){
      $this->mysql=$mysql;
    }
    public function datos($text){
       $this->mysql->conexion(); //esto hace la conexion a mysql
       if($text=="mostrar"){
        $a=$this->mysql->query("SELECT * FROM usuario WHERE id='".$this->uid."'"); //aqui hacemos la consulta
      $b=$this->mysql->obj($a);//esto deja los datos en el objeto b
    echo 'Su nombre es: '.$b->nombre.' y su email es: '.$b->email; //esto se mostrara al momento de escribir $user->datos('mostrar');
    }
    else{
    }
       $this->mysql->close(); //esto cierra la conexion a mysql
    }
    }
    ?>
    
    eso espero que ayan entendi el ejemplo y sino pregunten, de esta forma pueden pasar un objeto dentro de otro y utilizarlo como tal sin ningun problema, y sin tener que estar reescribiendo el codigo una y otra vez
     
  2. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Registrado:
    31 May 2008
    Mensajes:
    2.727
    Me Gusta recibidos:
    13
    chuta pense que almenos algien diria ha ya gracias o algo por el estilo
     
  3. the kamikase

    the kamikase Usuario Maestro nvl. 6 ★ ★ ★ ★
    697/812

    Registrado:
    19 Sep 2008
    Mensajes:
    68.365
    Me Gusta recibidos:
    42
    excelente viejo muchas gracias !
     
  4. Dr.Joker.-

    Dr.Joker.- Usuario Maestro nvl. 6 ★ ★ ★ ★
    697/812

    Registrado:
    30 Ene 2010
    Mensajes:
    97.231
    Me Gusta recibidos:
    67
    agradecido
     
  5. Aguil@

    Aguil@ Usuario Habitual nvl.3 ★
    197/244

    Registrado:
    10 Oct 2007
    Mensajes:
    13.935
    Me Gusta recibidos:
    38
    uuufff ! termine mi ultimo de 3 cursos de php con nota entre 5 y 6 wn! no quiero saber mas jajajaj (por el momento)
    ¿esto no es lo mismo que el "encapsulamiento"(o como se escriba!)...creo algo en ingles llamado "wrapper"?
    creo que esta medio complicado el codigo eso si ...pero no sabria decirte porque ! :( creo porque te conectas a una base de datos sql y CREO eso no lo pasamos en clases ...¿puede ser?
    compadre sin webeo gracias por la pega ;)
     
  6. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Registrado:
    31 May 2008
    Mensajes:
    2.727
    Me Gusta recibidos:
    13
    si creo que se llama encapsulamiento, la verdad donde aprendi php poo no me lo enseñaron asi k no tengo idea si sea realmente encapsulamiento o no y la verdad si hay una clase practica donde se abla de mysql, pero la verdad hacer una class basica para mysql es super facil mira

    <?
    class mysql{
    private $host;
    private $user;
    private $pass;
    private $db;
    public function __construct($a="localhost", $b, $c, $d){
    $this->host=$a;
    $this->user=$b;
    $this->pass=$c;
    $this->db=$d;
    }
    public function conexion(){
    if(!(mysql_connect($this->host, $this->user, $this->pass))){
    echo "Error al intentar conectar la base de datos";
    }
    else
    {
    mysql_select_db($this->db);
    }
    }
    public function close(){
    mysql_close();
    }
    public function query($consulta){
    return mysql_query($consulta);
    }
    public function num_row($consulta){
    return mysql_num_rows($consulta);
    }
    public function array1($consulta){
    return mysql_fetch_array($consulta);
    }
    public function obj($consulta){
    return mysql_fetch_object($consulta);
    }
    }
    ?>

    ves almenos eso es lo que uso yo xd es super simple, solo iniciar el objeto, ej: el objeto es $mysql solo inicias la conexion con $mysql->conexion(); y para cerrar la conexion colocas $mysql->close(); y dentro de eso es $mysql->query("aqui va tu consulta"); para hacer las consultas $mysql->array1("la consulta o la variable con la consulta"); para dejar la consulta en un arreglo y $mysql->obj($variable); para dejar la consulta en un objeto super facil, el sisitema solo retorna la consuta si tu dejar $variable=$mysql->query("select * from tabla"); deja la consulta ya echa en la varibale para despues procesarla, facil no? almenos para mi si es facil una ves que aprendes a usar objetos
     
  7. Merovingio

    Merovingio Usuario Habitual nvl.3 ★
    187/244

    Registrado:
    20 Mar 2009
    Mensajes:
    33.491
    Me Gusta recibidos:
    6
    buenisimo
    uta soy desarrollador en en php5 y bkn que se pueda expandir mas, es la raja para programar y lo mejor que es multiplataforma
    buen tutorial
    sl2
     
  8. Aguil@

    Aguil@ Usuario Habitual nvl.3 ★
    197/244

    Registrado:
    10 Oct 2007
    Mensajes:
    13.935
    Me Gusta recibidos:
    38
    la dura tendria que repasarlo , el problema es que me fue como tiro en los primeros cursos y cuando llege ahi , pese que seria igual ...la dura ,yo tendo el codigo para conectarme a mi base de datos y listo lo voy alterando ...pero me falta "entender" como funciona ,yo creo que me mareo con tanto si el objeto y la clase y el atributo ...pero por ahora pausa de php por lo menos a mi me costo ! ;)

    Hola viejo tantas lunas ! ("ahora" eres desarrollador cuando te conoci no ! jajajaj)
     
  9. Rigorap87

    Rigorap87 Usuario Habitual nvl.3 ★
    197/244

    Registrado:
    26 Jul 2009
    Mensajes:
    31.817
    Me Gusta recibidos:
    24
    Muy bien explicado compadre!
     
  10. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Registrado:
    31 May 2008
    Mensajes:
    2.727
    Me Gusta recibidos:
    13
    mira te explico ya que supongo que sabes hacer funciones en php, la idea del php orientado a objeto es que creas una class, en esta class creas todas las funciones que quieras, la idea es que estas funciones esten relacionadas entre si, es decir que si creas una class para mysql no agreges despues una funcion para general link por darte un ejemplo, la idea es que entre las funciones te puedas pasar datos o llamar a las mismas funciones dentro de otra para asi desarrollar mas rapidamente lo que estes haciendo, las class se dibiden en 3 parte funciones, metodos y atributos, las funciones ya sabes k son asi k no lo voy a explicar, los metodos son el codigo que van dentro de las funciones, y los atributos son las variables que estan dentro de cada funcion y que pueden o no ser traspasados a otras funciones, cuando tu inicias el objeto tienes la posibilidad de llamar a cualquier funcion dentro de la class que iniciaste, y asi utiliazar las funciones sin tener que estarlas declarando o llamando cada ves que las necesites ya que los objetos una ves llamados pueden ser utilizado muchas veces, espero que ayas entendido un poco mas n_n
     
  11. Aguil@

    Aguil@ Usuario Habitual nvl.3 ★
    197/244

    Registrado:
    10 Oct 2007
    Mensajes:
    13.935
    Me Gusta recibidos:
    38
    wena si! mucho mejor ahora ...voy a tratar de hacer una grafica...pero este resumen me sirve mas ya que normalmente empiezas asi funciones.....2 paginas con ejemplos y definiciones ...classes ...igual y asi.. . pero a veces uno se confunde y paff! te enredas (yo me enredo) .Gracias !
     
  12. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Registrado:
    31 May 2008
    Mensajes:
    2.727
    Me Gusta recibidos:
    13
    te entiendo a mi me tomo como un mes aprender a programar orientado a objeto, pero me tome mi tiempo y lo logre, bueno me demore eso mas que nada porque los cursos que encontrava en internet eran muy enredados, por eso ise este que lo ise en base a como lo entendi, pensando en que aquel que quisiera aprender no tuviera tantas complicaciones