Foros del Web » Programando para Internet » PHP »

Crear objetos para llamarlo de cualquier lado

Estas en el tema de Crear objetos para llamarlo de cualquier lado en el foro de PHP en Foros del Web. Buenas tengo una duda respecto a lo que es php orientado a objeto y quiera saber una cosa para ver si s epuede hacer y ...
  #1 (permalink)  
Antiguo 28/07/2010, 14:47
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 9 años, 11 meses
Puntos: 1
Crear objetos para llamarlo de cualquier lado

Buenas tengo una duda respecto a lo que es php orientado a objeto y quiera saber una cosa para ver si s epuede hacer y si no se puede ¿Por qué?.


Este es un ejemplo basico d ecomo se crea una clase en php
Código PHP:
<?php
class info_coche {
        var 
$marca;
        var 
$modelo;
        var 
$color;
        var 
$matricula;
                         function 
__construct($marca,$modelo,$color,$matricula) {
                    
$this->marca=$marca;
                    
$this->modelo=$modelo;
                    
$this->color=$color;
                    
$this->matricula=$matricula;            }
                        function 
mostrar_informacion() {
                        return 
$this->marca .'-'$this->modelo .'-'$this->color .'-'$this->matricula;            }    }
$coche = new info_coche ('Audi','A5','Negro','CBSXXXX');
echo 
"Información del coche: ".$coche->mostrar_informacion();
?>
ahora bien quiero saber como creo puedo crear una clase que genere un objeto para almacenar todas las variables publicas que utilice el sistema.

un ejemplo es yo tengo objecColor="blanco" en una clase y que desde otra clase, otra pagina solo utilice objecColor y eso automaticamente me va a traer el valor que ha guardado. como lo hag y si se puede.
  #2 (permalink)  
Antiguo 28/07/2010, 15:09
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 9 años, 11 meses
Puntos: 1
Respuesta: Crear objetos para llamarlo de cualquier lado

Realice algo asi me falta es la clase:

varSistema.php

Código PHP:
Ver original
  1. <?php
  2. function variables_sistema()  {
  3.  
  4. $color="Blanco";
  5. $rosa="Rosado";
  6. return $color;
  7. return $rosa;
  8.  
  9. }
  10.  
  11.  $color=variables_sistema();
  12.  $rosa=variables_sistema();
  13. ?>

Ejemplo.php

Código PHP:
Ver original
  1. <?php
  2.    
  3.     include 'varSistema.php';
  4.            
  5. $color=variables_sistema();
  6. $rosa=variables_sistema();
  7.    
  8.     echo $color."<br>".$rosa;
  9. ?>

pero entonces me imprime
Blanco
Blanco
  #3 (permalink)  
Antiguo 28/07/2010, 15:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 8 meses
Puntos: 2135
Respuesta: Crear objetos para llamarlo de cualquier lado

Te recomendaría leer un manual básico de PHP, no puedes hacer 2 returns en una función ya que el interprete solo ejecuta el primer return y ahí termina la ejecución de esa función.

Si quieres regresar múltiples valores usa un array.

Saludos.
  #4 (permalink)  
Antiguo 28/07/2010, 16:47
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 9 años, 11 meses
Puntos: 1
Respuesta: Crear objetos para llamarlo de cualquier lado

si ya me di cuenta gracias...
  #5 (permalink)  
Antiguo 29/07/2010, 16:35
 
Fecha de Ingreso: julio-2010
Mensajes: 5
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Crear objetos para llamarlo de cualquier lado

No se si es lo que pregunta pero creo que pueden ser dos cosas, cuando esta desarrollando y necesita instanciar las clases para efectos de la programación y reutilización del código esto tendria que ver con la herencia de los objetos y la visibilidad de los mismos, PHP puede no ser tan restrictivo pero es importante leer acerca de esto.

La otra cosa que se me ocurre es la siguiente, he probado cosas así y funcionan , esto es una opcion; Igual si hay mejoras en cuanto a practicas adecuadas y nuevas ideas me interesaria saberlas.

En algunos cosos se puede instanciar el objeto en variables de session (si se estan utilizando) para que pueda ser obtenida la información en cualquier momento de la ejecución,

esto puede ser algo así como

Código PHP:
Ver original
  1. <?php $_SESSION["ObjetodeClase"] = new objeto();
  2. $_SESSION["ObjetodeClase"]->variable="Guardo un dato";
  3. ?>
Código PHP:
Ver original
  1. <?php // en otro escript, asumo que esta la session correctamente
  2. echo $_SESSION["ObjetodeClase"]->variable;
  3. ?>
Igual pensaria que puede ser interesante documentarse con los temas relacionados con POO en PHP ya que hay muchas cosas interesantes

Saludos

Última edición por GatorV; 29/07/2010 a las 16:58
  #6 (permalink)  
Antiguo 30/07/2010, 10:40
 
Fecha de Ingreso: marzo-2010
Mensajes: 152
Antigüedad: 9 años, 11 meses
Puntos: 1
Respuesta: Crear objetos para llamarlo de cualquier lado

muchas gracias tengo esto:
pagina T_BD.php
Código PHP:
Ver original
  1. <?php
  2. class DB_mysql {
  3.  
  4. var $BaseDatos;
  5. var $Servidor;
  6. var $Usuario;
  7. var $Clave;
  8.  
  9. var $Conexion_ID= 0;
  10. var $Consulta_ID= 0;
  11.  
  12. var $Errno = 0;
  13. var $Error = "";
  14.  
  15. function DB_mysql($bd="", $host="localhost", $user="root", $pass="") {
  16.  
  17. $this->BaseDatos=$bd;
  18. $this->Servidor=$host;
  19. $this->Usuario=$user;
  20. $this->Clave=$pass;     }
  21.  
  22. /*Conexión a la base de datos*/
  23.  
  24. function conectar($bd, $host, $user, $pass) {
  25.  
  26. if ($bd != "") $this->BaseDatos=$bd;
  27. if ($host != "") $this->Servidor=$host;
  28. if ($user != "") $this->Usuario=$user;
  29. if ($pass != "") $this->Clave=$pass;
  30.  
  31. // Conectamos al servidor
  32.  
  33. $this->Conexion_ID=mysql_connect($this->Servidor, $this->Usuario, $this->Clave);
  34. if (!$this->Conexion_ID) {
  35.      $this->Error = "Ha fallado la conexión.";
  36.      return 0;           }
  37.  
  38. // seleccionamos la base de datos
  39. if ([email protected]mysql_select_db($this->BaseDatos, $this->Conexion_ID)) {
  40.                       $this->Error = "Imposible abrir ".$this->BaseDatos ;
  41.                       return 0;                             }
  42.                      
  43. /* Si hemos tenido éxito conectando devuelve el identificador de la conexión, sino devuelve 0 */
  44.                       return $this->Conexion_ID;            }
  45. /* Ejecuta un consulta */
  46. function consulta($sql =""){
  47. if ($sql == "") {
  48. $this->Error = "No ha especificado una consulta SQL";
  49. return 0;                  }
  50.  
  51. //ejecutamos la consulta
  52. $this->Consulta_ID = @mysql_query($sql, $this->Conexion_ID);
  53. if (!$this->Consulta_ID) {
  54. $this->Errno = mysql_errno();
  55. $this->Error = mysql_error();                               }
  56.  
  57. /* Si hemos tenido éxito en la consulta devuelve el identificador de la conexión, sino devuelve 0 */
  58. return $this->Consulta_ID;          }
  59. /* Devuelve el número de campos de una consulta */
  60.  
  61. function numcampos() {
  62. return mysql_num_fields($this->Consulta_ID);    }
  63.  
  64. /* Devuelve el número de registros de una consulta */
  65. function numregistros(){
  66. return mysql_num_rows($this->Consulta_ID);  }
  67.  
  68. function nombrecampo($numcampo) {
  69. return mysql_field_name($this->Consulta_ID, $numcampo); }
  70.  
  71. function verconsulta() {
  72. echo "<table border=1>\n";
  73. for ($i=0; $i<$this->numcampos(); $i++){
  74. echo "<td><b>".$this->nombrecampo($i)."</b></td>\n";    }
  75. echo "</tr>\n";
  76. while ($row = mysql_fetch_row($this->Consulta_ID)) {
  77. echo "<tr> \n";
  78. for ($i=0; $i<$this->numcampos(); $i++){
  79. echo "<td>".$row[$i]."</td>\n"; }
  80. echo "</tr>\n"; }   }   } //fin de la Clse DB_mysql
  81. ?>
esta es mi clase para la conexion a la base de datos pero si quiero hacer algo como esto:

Código PHP:
Ver original
  1. <?php
  2. require ("T_BD.php");
  3. $miconexion = new DB_mysql ;
  4. $miconexi = new DB_mysql ;
  5.  
  6. $miconexion->conectar("dpadmwin", "localhost", "root", "");
  7. $miconexi->conectar("dpnmwin", "localhost", "root", "");
  8.  
  9. $miconexion->consulta("SELECT cli_codigo as Codigo, cli_nombre as Nombre FROM dpclientes");
  10. $miconexi->consulta("SELECT APELLIDO FROM nmtrabajador");
  11.  
  12. $miconexion->verconsulta();
  13. $miconexi->verconsulta();
  14.  
  15. ?>

entonces me da un error y me muestra solo una consulta no se supone que puedo crear varios objetos de la misma clase?????
  #7 (permalink)  
Antiguo 01/08/2010, 14:02
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 15 años, 3 meses
Puntos: 43
Respuesta: Crear objetos para llamarlo de cualquier lado

mmmm no entiendo porque quieres hacer 2 conexiones de tu clase db, pero si lo que quieres es poder instanciar en cualquier lugar tu clase, puedes usar el patron singleton, con el cual estas instanciando una sola vez el objeto y despues puedes llamarlo desde donde quieras con algo asi:
Código PHP:
Ver original
  1. $db = DB_mysq::singleton();
  2. $db->conectar("dpadmwin", "localhost", "root", "");

espero que sea lo que estas buscando
  #8 (permalink)  
Antiguo 02/08/2010, 09:31
 
Fecha de Ingreso: julio-2010
Mensajes: 5
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Crear objetos para llamarlo de cualquier lado

De todas formas pienso que hay algo de concepto que puede serte util,

Cuando instancias el objeto puedes instanciarlo con parametros diferentes según la necesidad.

Ejemplo

ObjetotazaDeCafe("Cafe","Leche","Agua");

Luego en el mismo script puede tener otra forma de instanciarlo si es lo que se quiere

ObjetotazaDeCafe("Agua","Cafe","Azucar");

Aunque estoy de acuerdo con Destor que no deberian hacerse dos llamados a la misma conex, retomando el codigo que enviaste

Código PHP:
Ver original
  1. <?php
  2. require ("T_BD.php");
  3. $miconexion = new DB_mysql ;
  4. //$miconexi = new DB_mysql ;
  5.  
  6. $IdCon=$miconexion->conectar("dpadmwin", "localhost", "root", "");
  7.  
  8. $miconexion->consulta("SELECT cli_codigo as Codigo, cli_nombre as Nombre FROM dpclientes",$IdCon);
  9. $miconexi->consulta("SELECT APELLIDO FROM nmtrabajador",$IdCon);
  10.  
  11. $miconexion->verconsulta();
  12.  
  13. ?>

------------------
www.offisum.com

Etiquetas: lado, objetos
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 22:55.