lo que hace mi clase es procesar la consulta y luego enviar una clase.
Eso es, procesa un dato (una consulta) y devuelve un array. Vamos, que procesa un dato y lo devuelve ya procesado.
Tambien me llamo mucho la atencion esto ''Haces una clase de mysqli, que es una clase'', obvio, me imagino que si crean la clase es para darle uso y te digo algo, yo podria tambien haber extendido la clase pero se me hizo mas facil hacerlo asi.
Si, estamos de acuerdo, MySQLi está hecho para que se use, y puedes usarlo de esta forma si quieres. Lo que intento decirte es que usarlo de esta forma en una clase no es ni efectivo, ni eficiente, ni útil. Es lo mismo que usarlo en una función. Lo que quiero decir es que tu definición de clase no tiene sentido.
Con respecto a eso, la programacion orientada a objetos busca facilitar el trabajo al programador y hacer los codigos reutilizables, entonces si lo puse asi es porque yo lo puedo usar en cualquier momento y agregarles mas funciones, hasta el mismo que lo use si sabe de programacion lo puede hacer.
En primer lugar, tu clase tiene poco de reutilizable (que por cierto como veo que sabes, es una base de la POO). Este fragmento:
private static $host = 'host';
private static $user = 'usuario';
private static $pass = 'pass';
private static $db = 'basededatos';
Es básicamente lo que lo convierte en no-reutilizable. En este caso la diferencia no es mucha porque solo hay que modificar 4 lineas. Pero si alguien quiere utilizarlo ya tiene que modificar la clase a mano. Lo correcto habría sido colocar esto en un constructor, y mediante el constructor asignar los valores.
Pero bueno, dejando este "matiz" de lado... ¿serias capaz de decirme cual es la ventaja de usar ese código y no este que pongo a continuación? Puedes razonarlo como quieras: reutilización, modificación, lo que quieras.
function makeQuery($query) {
$mysqli = new mysqli("TU HOST", "TU USUARIO", "TU PASS", "TU DB");
if ($mysqli->connect_error) die('Problemas al establecer la conexion.<br/>CODIGO DE ERROR:' . $mysqli->connect_errno . '<br/>Detalles:' . $mysqli->connect_error);
if ($mysqli->multi_query($query)) {
do {
if ($focux = $mysqli->store_result()) {
while ($mrfocux = $focux->fetch_assoc()) {
foreach($mrfocux as $key => $value) {
$datos[$key][] = $value;
}
}
$focux->close();
}
}
while ($mysqli->next_result());
return $datos;
$mysqli->close();
}Créeme, son exactamente lo mismo. Usar una clase para esto no da ninguna ventaja.
¿Se puede usar? Claro que si, estas en tu derecho, puedes hacer lo que quieras, pero no te aporta nada útil, simplemente estas cambiando la sintaxis de función a clase, pero el modelo funcional (espero que entiendas lo que quiero decir con eso) es el mismo.
Me gustaría aclarar que mis mensajes son críticas totalmente con ánimo constructivo, y no de faltar, y si critico tanto el código es porque creo que se puede mejorar mucho, y pienso que puedo ayudarte al menos a comprender como funciona POO y como debería ser el código (o en este caso, como no debería ser) pero mi fin es únicamente ayudarte.
Saludos