PHP Orientado a objetos

loveshino

Bovino adolescente
#1
Hola Bakunos

Otra vez yo, el torpe y sus problemas. Empecé a programar creando clases y creo que ya entiendo lo más básico, pero tengo un problema bastante enredado. Tengo una clase que manipula varias operaciones sobre una tabla especifica de mi base de datos. La cosa es que también tengo otras clases que realizan otras operaciones sobre otras tablas de la base de datos. El problema viene cuando requiero hacer las conexiones a mySql por PHP. Mi idea estaba en que podia crear una sola referencia a bd. Digamos una db->link; pero esta propiedad no es reconocida por el resto de las clases, y por supuesto, los llamados que hago a la base de datos devuelven un error por no tener un source apropiado. Desmenuzado la cosa anda asi:

class bd {
var $link;
function conectar{
el procedimiento para conectar
$this->link=[el source]
}
}

class poblaciones {
var $poblado;
function cargar_poblaciones{
$sql="sentencia sql";
mysql_query($sql,$bd->link)
[el resto del procedimiento]
}
}

---------- en el programa principal instancio la clase bd como $bd (y ya probé con otros nombres) y hago llamado a la función para conectar (no he terminado de entender el tema del __construct, pero eso no me apura ahorita). Provisionalmente estoy usando las clases como las tengo con metodo para conectar cada una, lo cual pueden suponer es una barbaridad, porque estoy iterando codigo una y otra vez, estoy seguro de que hay una mejor forma, pero no estoy lo suficientemente empapado en el tema. Les agradezco mucho el tiempo para leerme y espero me puedan ayudar.

:)
 

yisus

Bovino adicto
#4
no entendi bien tu problema, pero te propongo algo.

1.- Crear una sola clase la cual sera la que interactue con la DB.
2.- Esta clase tendra los metodos para la conexion (te aconsejo que sea en el mismo constructor), consultas, inserciones, updates, etc.
3.- Cuando ocupes hacer algo en la base de datos, simplemente creas un objeto de esta clase y te despreocupas de estar configurando a cada rato la conexion p estar pasando el ink de conexion.

Espero me hayas entendido
saludos
 

loveshino

Bovino adolescente
#5
Gracias, Yisus. Mientras estaba investigando sobre esto me topé con el concepto de las sub clases, ¿sabrías orientarme al respecto de esto, pensando que pudiera ayudarme esto para conservar cierto orden dentro de los métodos?

Actualización: Hice las cosas tal como me sugeriste, gracias nuevamente. Ahora mi inquietud está en si no hay riesgo por la cantidad de variables que se declaran cada vez que instancio la clase (que serán como 80 por instancia);
 
#6
HOLA AMIGOS PODRIAN AYUDARME CON ESTOS EJERCICIOS
Ejercicio 1

Implementar en PHP una clase que contenga un método el cual permita el truncamiento de una cadena de texto cada N cantidad de caracteres sin cortar palabras (esto no vale: pala –corta- bra) y devuelva un arreglo con cada uno de las subcadenas generadas. Ejemplo:
Dividir cada N = 10 caracteres (incluye espacios)

Cadena 1: este es un
Cadena 2: mensaje de
Cadena 3: ejemplo
Cadena 4: para este
Cadena 5: ejercicio


Ejercicio 2

Desarrollar un cliente web en PHP que consuma el servicio web dispuesto en http://www.info-me-sms.it/ws.php. Solo desarrollar el cliente web que invoque el método send. Pista, investigar nusoap y consumo de servicios web a través de PHP.
 

Muertoz

Bovino adolescente
#7
Para que no tengas esos problemas yo hago lo siguiente, podría ser trampa pues no se esta siguiendo todo el paradigma orientado a objetos (no voy a escribir el codigo completo)

Conexion.php
PHP:
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
?>
Clase.php
PHP:
<?
// Esta es la clase que utiliza la base de datos
class Clase{
...
}
?>
Implementacion.php
PHP:
<?
include_once("Conexion.php");
include_once("Clase");

Clase->getObjects(); //Método totalmente inventado para el ejemplo

mysql_close();
?>
 
Arriba