Autor Tema: [CLASE] queryManager para mysqli.  (Leído 1648 veces)

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
[CLASE] queryManager para mysqli.
« en: 18 de Enero de 2011, 22:37:37 pm »
Esta clase la hize para la CMS que estoy haciendo aunque aun me falta hacerle un modo debugger que se lo hago despues.
Citar
/*
[========================================================================]
[========================================================================]
[===========
	
	
	
	
	
	
	
=========]
[===========
	
._____________                         
	
	
=========]
[===========
	
|__\_   _____/___   ____  __ _____  ___
	
	
=========]
	

[===========
	
|  ||    __)/  _ \_/ ___\|  |  \  \/  /
	
	
=========]
[===========
	
|  ||     \(  <_> )  \___|  |  />    < 
	
	
=========]
[===========
	
|__|\___  / \____/ \___  >____//__/\_ \
	
	
=========]
[===========        
	
\/             \/            \/
	
	
=========]
[===========
	
	
	
	
	
	
	
=========]
[========================================================================]
[========================================================================]
[===========
	
	
Content Management System
	
	
=========]
[========================================================================]
[===========
	
Para dudas o preguntas contactarme a mi correo
	
=========]
[========================================================================]
[===========
	
	
leonardo920@msn.com
	
	
	
=========]
[========================================================================]
[========================================================================]
[===========
	
FAVOR DE NO QUITAR DERECHOS DE AUTOR -
	
	
=========]
[========================================================================]
*/
mysqli_report(MYSQLI_REPORT_OFF); #No mostramos los errores de mysqli, para eso esta la funcion de mostrar errores
class queryManager {
     const 
host = &#39;localhost&#39;; # RELLENA CON TUS DATOS.
     
const user = &#39;&#39;;
     
const pass = &#39;&#39;;
     
const db = &#39;&#39;;
    
private static $mysqli;
    public static 
$isconnected false#ESTA VARIABLE LA PUEDES USAR PARA AVERIGUAR SI LA CONEXION EXISTE.


	
public static function 
conectarBD(){ #FUNCION PARA CONECTAR
	
self::$mysqli = new mysqli(self::hostself::userself::passself::db);
        if (!
$mysqli->connect_errorself::$isconnected true;
}
	
public static function 
makeQuery($query) { # PARA HACER CONSULTAS.
	
if(
self::$isconnected){
	
$mysqli self::$mysqli;
        return 
$mysqli->multi_query($query);
}
}
	
public static function 
doFetch(){ # PARA SELECCIONAR TODOS LOS DATOS DE UNA CONSULTA HECHA CON makeQuery, la funcion devuelve un array de esta manera [&#39;nombre de la fila&#39;][0] eso seleccionara el primer dato, para seguir seleccionando van sumandole al 0.

	
if(
self::$isconnected){
	
$mysqli self::$mysqli;
     
	
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;
}
}
	
public static function 
escapeString($string){ #PARA ESCAPAR LAS VARIABLES, LO MISMO QUE MYSQL_ESCAPE_STRING LO UNICO QUE PARA MYSQLI.
	
$mysqli self::$mysqli;
	
return 
$mysqli->real_escape_string($string);
}
	
public static function 
showError(){ #MOSTRAR ERROR
	
$mysqli self::$mysqli;
	
if(
$mysqli->connect_error){
	
return die(&
#39;Ha ocurrido un problema al intentar establecer la conexion con la BD:<br/>CODIGO DE ERROR:&#39; . $mysqli->connect_errno . &#39;<br/>Detalles:&#39; . $mysqli->connect_error);
	
} elseif(
$mysqli->error){
	
return die(&
#39;Ha ocurrido un problema al intentar realizar la consulta&#39;.$mysqli->error);
}
}
	
public function 
__destruct(){ #DESTRUIMOS
	
$mysqli self::$mysqli;
	
$mysqli->close(); #CERRAMOS LA CONEXION
	
unset(
self::$mysqli); #BORRAMOS LA VARIABLE
	
self::$isconnected false#CAMBIAMOS EL ESTADO A FALSE
}
}
?>
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Comunidad PHPeros

[CLASE] queryManager para mysqli.
« en: 18 de Enero de 2011, 22:37:37 pm »

Desconectado Physlet

  • PHPero Experto
  • *****
  • Mensajes: 822
  • Karma: 41
  • Sexo: Masculino
  • Todo es posible con esfuerzo, dedicación e interés
    • Ver Perfil
    • PanamaDev
Re:[CLASE] queryManager para mysqli.
« Respuesta #1 en: 19 de Enero de 2011, 01:03:25 am »
Has creado una clase para hacer exactamente lo mismo que MySQLi. A eso es lo que se refería TLX, no tiene sentido.
Por cierto, según veo ahí, el destructor realmente no hace nada, pues tengo entendido que el destructor destruye un objeto, pero ahí como tienes todo estático, no es necesario crear ningún objeto.

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[CLASE] queryManager para mysqli.
« Respuesta #2 en: 19 de Enero de 2011, 18:49:27 pm »
Osea, lo que yo hago es simplificar mi trabajo, para eso es POO, no es lo mismo poner todo el codigo que poner la clase, el destructor no destruye un objeto, el destructor ejecuta lo que esta en el cuando no se encuentra ningun rastro de la clase, cuandos e termino de ejecutar la clase.
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado Physlet

  • PHPero Experto
  • *****
  • Mensajes: 822
  • Karma: 41
  • Sexo: Masculino
  • Todo es posible con esfuerzo, dedicación e interés
    • Ver Perfil
    • PanamaDev
Re:[CLASE] queryManager para mysqli.
« Respuesta #3 en: 19 de Enero de 2011, 18:58:46 pm »
Osea, lo que yo hago es simplificar mi trabajo, para eso es POO, no es lo mismo poner todo el codigo que poner la clase, el destructor no destruye un objeto, el destructor ejecuta lo que esta en el cuando no se encuentra ningun rastro de la clase, cuandos e termino de ejecutar la clase.
En realidad no simplifica nada, porque lo mismo que haces al llamar todo eso, es lo mismo que haces al llamarlo en MySQLi. Como dije anteriormente, la situación cambiaría si heredaras la clase MySQLi y la manipularas desde ahí.

Y sobre lo del destructor:
Citar
PHP 5 introduce un concepto de destructor similar al de otros lenguajes orientados a objetos, tal como C++. El método destructor será llamado tan pronto como todas las referencias a un objeto en particular sean removidas, cuando es explícitamente destruido o en cualquier otra circunstancia de finalización.

Quizás me equivoque, pero lo comento porque no utilizas ningún objeto para llamar a los miembros de la clase. Comprobarías lo que te digo si en una de las sentencias del destructor, haces una impresión. Si se imprime, es que se ejecuta el destructor, de lo contrario no.

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[CLASE] queryManager para mysqli.
« Respuesta #4 en: 19 de Enero de 2011, 20:14:55 pm »
En realidad no simplifica nada, porque lo mismo que haces al llamar todo eso, es lo mismo que haces al llamarlo en MySQLi. Como dije anteriormente, la situación cambiaría si heredaras la clase MySQLi y la manipularas desde ahí.

Y sobre lo del destructor:
Quizás me equivoque, pero lo comento porque no utilizas ningún objeto para llamar a los miembros de la clase. Comprobarías lo que te digo si en una de las sentencias del destructor, haces una impresión. Si se imprime, es que se ejecuta el destructor, de lo contrario no.
Entonces buscame una funcion en mysqli que al llamarla imprima esto..
Citar
   

if(self::$isconnected){

   

$mysqli = self::$mysqli;
     

   

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;
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado Physlet

  • PHPero Experto
  • *****
  • Mensajes: 822
  • Karma: 41
  • Sexo: Masculino
  • Todo es posible con esfuerzo, dedicación e interés
    • Ver Perfil
    • PanamaDev
Re:[CLASE] queryManager para mysqli.
« Respuesta #5 en: 19 de Enero de 2011, 20:27:39 pm »
Entonces buscame una funcion en mysqli que al llamarla imprima esto..
¿Necesitas crear toda una clase solo para variar en eso con respecto a MySQLi?
¿Qué buscas hacer con eso realmente? Dame un ejemplo de uso sin códigos, para no liarme tanto.

¿Ya comprobaste lo del destructor?

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[CLASE] queryManager para mysqli.
« Respuesta #6 en: 19 de Enero de 2011, 20:47:36 pm »
¿Necesitas crear toda una clase solo para variar en eso con respecto a MySQLi?
¿Qué buscas hacer con eso realmente? Dame un ejemplo de uso sin códigos, para no liarme tanto.

¿Ya comprobaste lo del destructor?
No es en lo unico que varia de MySQLi, tambien pienso hacerle un modo debugger. Esta clase lo hize con el sentido de hacerle debugger, manejar los errores, ahorrar codigo a la hora de extraer toda o alguna informacion que necesite, tener mas control de la conexion..
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>