Página 1 de 2 12 ÚltimoÚltimo
  1. #1

    Predeterminado Curso POO: Clase 5 Objeto dentro de otro objeto

    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

    Código:
    <?
    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
    Código:
    <?
    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. #2

    chuta pense que almenos algien diria ha ya gracias o algo por el estilo
    Citar Citar  

  3. #3

    excelente viejo muchas gracias !
    Citar Citar  

  4. #4

    agradecido
    Citar Citar  

  5. #5

    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
    Citar Citar  

  6. #6

    Cita Iniciado por Aguil@ Ver Mensaje
    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
    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
    Citar Citar  

  7. #7

    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
    Citar Citar  

  8. #8

    Cita Iniciado por cavoso Ver Mensaje
    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
    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 !

    Cita Iniciado por Merovingio Ver Mensaje
    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
    Hola viejo tantas lunas ! ("ahora" eres desarrollador cuando te conoci no ! jajajaj)
    Citar Citar  

  9. #9

    Muy bien explicado compadre!
    Citar Citar  

  10. #10

    Cita Iniciado por Aguil@ Ver Mensaje
    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)
    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
    Citar Citar  

Página 1 de 2 12 ÚltimoÚltimo