Estoy metiendome con ésto de las clases en PHP (se prgramar en Java, pero usando archivos de texto, aun sin DBs)
Mi duda es la siguiente. tengo una clase DataBase con varios métodos (conectar, desconesctar, consultar, limpiar...etc), que en las pruebas unitarias me funciona bien.
Sim embargo, el asco que tengo a los includes me persigue a todos los lados .Como no se si existen 'packages' o cosas por el estilo, incluyo mi clase conexion "a pelo" en otras clases. Intentando hacer un sistema de users sencillo, hago lo siguiente:
Código PHP:
<?php
//incluyo la clase
include('bd.php');
class User{
private $user;
private $pass;
//bueno, aqui todo el resto de atributos
//llamo a la clase db
$db=new DataBase();
function User($u,$p)
{
$this->user=$u;
$this->pass=$p;
//etc..
}
function Register()
{
$query="INSERT INTO usuario VALUES ('$this->user','$this->pass',etc..)";
$this->db->execute($query);
$this->db->free();
$this->db->close();
}
....
....
sigue con más métodos
}
1-Es correcto? Es decir, si yo quiero usar mi clase DB en otras 20 clases distintas a User, no me darán problemas? Aunque las instancie entre sí?
2- Éstas lineas ($this->db->close();). He visto que el uso del 'this' está muy extendido en el PHPOO. quizá tengo malas costumbres del Java (aparte que el no tener que declarar el tipo de atributo y método me despista). Tiene algo de especial en PHP? Os parecera una pregunta estúpida, pero es que a mi me despista un poco. Si fuese java, yo el this me lo hubiese fumao. Pasaría algo en el funcionamiento de la aplicación si hubiese puesto ($db->close();)?
3-es preferible usar include, require_once, o require, cuando estamos hablando de PHPOO?
4-Es recomendable dejar los atributos públicos, o hacerlos privados y petar la clase de getters y setters?. Se que en Java el encapsulamiento es muy útil. Supongo que dotará de una mayor seguridad la aplicación..
5- para que sirve el símbolo ::? (no sé c++..lo digo pq creo haberlo visto por ese lenguaje)
6- hay alguna manera de "crear" packages? o existe algo parecido?
7- (se me olvidaba)Es correcto limpiar el resultado y cerrar la conexion despues de cada consulta?
Bueno, de momento, mi sed de dudas se saciará si algún sabio me responde a éstas.
muchas gracias por adelantado.