Esta bien echo el sieguiente ejemplo?:
index.php
Código PHP:
<?php
require_once 'managerdb.php';
require_once 'conectordb.php';
class index
{
public function run()
{
$conx = new conectordb();
$conx->insert();
$q = new managerdb();
$q->testQuery($conx);
}
}
$test = new index();
$test->run();
Código PHP:
<?php
require_once 'interfacedb.php';
class conectordb implements interfacedb
{
const USUARIO = 'root';
const PASS = '';
const SERVIDOR = 'localhost';
const DB = 'dairyevents';
private $_conexion;
public function conect()
{
$this->_conexion = mysql_connect(self::SERVIDOR,self::USUARIO,self::PASS);
mysql_select_db(self::DB,$this->_conexion);
}
public function insert()
{
return "SELECT * FROM animales";
}
public function close()
{
mysql_close($this->_conexion);
}
}
Código PHP:
<?php
interface interfacedb
{
public function insert();
public function conect();
public function close();
}
managerdb.php
Código PHP:
<?php
class managerdb
{
public function testQuery(interfacedb $manager)
{
echo $manager->insert();
}
}
El script funciona... pero....
En managerdb.php no hago un require_once de la interface y en el metodo testQuery solo recibo "cualquier cosa" y funciona siempre y cuando tenga el metodo insert()... ahi entiendo que debo usar el type hinting y haciendolo tambien funciona sin problemas mi duda es si lo que estoy haciendo está bien implementado el ejemplo que les expongo (usando type hinting)...
La otro duda es: Supongamos que voy a escribir una clase que se conectará a una base de datos MySQL, ahi mismo tengo su constructor y 3 metodos (insert, delete,update y select) y ademas la heredo a otra clase por el siemple echo de usar el select y mostrar los resultados... eso estaria mal verdad?... tendria que usar una interfaz cierto?.... yo lo veo asi:
"La herencia es para "heredar" propiedades y la interfaz para hacer uso de metodos que hacen diferentes cosas"
estoy bien?... voy por buen camino ???
Gracias...
P.D si alguien tiene algunos ejemplos sobre interfaces y me los quiera proporcionar muchas gracias...