Autor Tema: [CLASE] Hacer consultas con mysqli  (Leído 7194 veces)

Desconectado FeDe

  • PHPero Avanzado
  • ****
  • Mensajes: 448
  • Karma: 35
  • Sexo: Masculino
  • BaDyDj -> ¡Mi Stylo, Mi ViDa!
    • Ver Perfil
Re:[CLASE] Hacer consultas con mysqli
« Respuesta #15 en: 07 de Enero de 2011, 00:00:45 am »
Exaaaaacto!

No nos entiende TLX ! jajajajajaja
Sin Firma me haces una? :P

Comunidad PHPeros

Re:[CLASE] Hacer consultas con mysqli
« Respuesta #15 en: 07 de Enero de 2011, 00:00:45 am »

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] Hacer consultas con mysqli
« Respuesta #16 en: 07 de Enero de 2011, 02:01:11 am »
Si hubieras heredado MySQLi a tu nueva clase, quizás pudo ser más interesante...

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[CLASE] Hacer consultas con mysqli
« Respuesta #17 en: 07 de Enero de 2011, 03:39:32 am »
Focux.. Fede solo esta dandote un ejemplo... Lo que quiere decir es que hacer una clase de una clase es como hacer una función de una función!
No tiene sentido! Es reiterativo, es como si yo ahora programo una función que se llama "eco" así:

function eco($var) {
    echo 
$var;
}


Por darte un ejemplo.. ¿Para que voy a usar eco() si puedo usar echo() directamente y hacen exactamente lo mismo? Para nada.
Y no solo eso, sino que ya te he dicho que tu clase puede escribirse como una función, y por lo tanto no tiene nada de clase.
Una clase, que se ejecuta como una función, no tiene sentido. Ya te hize tu transformación clase-función y como ves es exactamente lo mismo.

Y por cierto, ahora que esta muy de moda eso de decir "No, esque programo en POO porque así el código es reutilizable". El código reutilizable no es nada nuevo, lleva existiendo desde hace mucho tiempo. Las funciones, de hecho, en su mayoria, son código reutilizable.

Saludos!
La poo es para disminuir el trabajo del programador, no es lo mismo poner todo ese código, que sólo poner una función.
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 CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re:[CLASE] Hacer consultas con mysqli
« Respuesta #18 en: 07 de Enero de 2011, 12:46:16 pm »
La poo es para disminuir el trabajo del programador, no es lo mismo poner todo ese código, que sólo poner una función.

Mi función es mas pequeña que tu clase. 18 lineas mi función y 27 lineas tu clase (sin contar los comentarios obviamente).
Aún no veo en qué disminuye el trabajo de un programador tu clase. Parece que sabes muy bien que ventajas tiene POO pero eres incapaz de ver esas ventajas en tu propio código y aprovecharte de ellas.
Esa clase no es POO, es una "función camuflada" (por llamarlo de alguna manera), aunque tu no quieras verlo.
Yo ya te he dado varios argumentos sobre por qué son las cosas así y como funcionan, y FeDe tambien, incluso Physlet te ha comentado que su heredas mysqli alomejor podías hacer algo interesante. Pero sin embargo tu solo te remites a las ventajas de POO y a sus principios, que todos conocemos pero que sin embargo en tu código no están aplicados.

No quieres verlo, pero bueno, solo queremos ayudarte a programar correctamente en POO.

Saludos
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[CLASE] Hacer consultas con mysqli
« Respuesta #19 en: 07 de Enero de 2011, 19:02:29 pm »
Lo que tu no entiendes es que hay cientos de clases que solo tienen una funcion, y son mas util de lo que parece, ademas de que se hace con sentido de que el que la va utilizar pueda editar la clase facilmente, como quiera como dije en el primer post, necesitaba algo mas que eso & modifique la clase, & se me hizo facil por lo que te explique anteriormente.
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 CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re:[CLASE] Hacer consultas con mysqli
« Respuesta #20 en: 07 de Enero de 2011, 20:26:44 pm »
Lo que tu no entiendes es que hay cientos de clases que solo tienen una funcion, y son mas util de lo que parece, ademas de que se hace con sentido de que el que la va utilizar pueda editar la clase facilmente, como quiera como dije en el primer post, necesitaba algo mas que eso & modifique la clase, & se me hizo facil por lo que te explique anteriormente.

Y yo ya te he dicho en un post anterior que es cierto, que hay clases que solo tienen un método (función) y son correctas, y también hay clases que no tienen ningún método y también son correctas, pero este no es el caso.

Si necesitabas algo mas y modificaste la clase, entonces a lo mejor la nueva clase tiene algo de sentido (habrá que verla, si es que la pones al público) pero en este caso concreto, no es el caso.
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

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] Hacer consultas con mysqli
« Respuesta #21 en: 17 de Enero de 2011, 17:06:18 pm »
Me puse a analizar un poco la clase, y no le veo sentido tener que conectar a la base de datos cada vez que quieres hacer una consulta. Pienso que pudo ser mejor si la conexión la haces desde afuera de la clase (programa principal) y por algún método 'asignar' enviar por parámetro el objeto de la clase MySQLi.

Y tampoco tiene sentido el uso que le has dado al atributo $query o al menos así lo veo yo.

PD: Lo más correcto no es asignarle los valores directo desde la declaración de los atributos, sino mediante el constructor.
« Última modificación: 17 de Enero de 2011, 17:08:44 pm por Physlet »

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[CLASE] Hacer consultas con mysqli
« Respuesta #22 en: 18 de Enero de 2011, 19:29:16 pm »
Eso era para un script que necesitaba que la conexión se haga solamente al hacer la consulta, pero todo cambio, en un minuto público la nueva clase de un script que estoy haciendo.
EDITO:

No importa lo de asignarles valores directo, almenos que sea una función que lleve como valor o vallas a extraer los datos desde afuera de la clase.
« Última modificación: 19 de Enero de 2011, 00:03:55 am por Focux »
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] Hacer consultas con mysqli
« Respuesta #23 en: 19 de Enero de 2011, 01:04:57 am »
No importa lo de asignarles valores directo, almenos que sea una función que lleve como valor o vallas a extraer los datos desde afuera de la clase.
No es que no importe, todos los lenguajes permiten hacerlo, pero no es lo más correcto, ya que para eso se ha inventado el constructor. Eso sí, para las constantes sí se debe hacer por lógicas razones.

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[CLASE] Hacer consultas con mysqli
« Respuesta #24 en: 19 de Enero de 2011, 20:16:56 pm »
No es que no importe, todos los lenguajes permiten hacerlo, pero no es lo más correcto, ya que para eso se ha inventado el constructor. Eso sí, para las constantes sí se debe hacer por lógicas razones.
Desde cuando vez que esa clase esta pasando por un constructor?, ademas, el constructor sirve para los parametros que necesitas extraer de afuera de la clase.. muy obvio eso.
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] Hacer consultas con mysqli
« Respuesta #25 en: 19 de Enero de 2011, 20:25:03 pm »
Desde cuando vez que esa clase esta pasando por un constructor?, ademas, el constructor sirve para los parametros que necesitas extraer de afuera de la clase.. muy obvio eso.
No, porque para traer datos desde afuera de la clase, también existen los métodos que en pseudocódigo se llaman 'asignar', no es necesario utilizar el constructor solo para esto, ya que si necesitas cambiar valores en los atributos luego de haber creado el objeto, ¿qué harías? Usar un método para asignar valores, no volver a crear el constructor.

Sí, ya me dí cuenta que tampoco creas objetos aquí, a diferencia del otro sí lo pasaste porque eran constantes, pero en este caso no eran constantes y por eso lo decía.

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[CLASE] Hacer consultas con mysqli
« Respuesta #26 en: 19 de Enero de 2011, 20:37:45 pm »
Primeramente.. si necesito cambiar el valor a algun atributo lo puedo hace asi, $objeto->nombreAtributo = 'nuevo contenido' , los metodos pseudocodigos se utilizan cuando el atributo es privado. Asi que no digas que no es correcto dar valores a un atributo directamente, alrevez lo veo muy util esto.
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] Hacer consultas con mysqli
« Respuesta #27 en: 19 de Enero de 2011, 20:45:45 pm »
Primeramente.. si necesito cambiar el valor a algun atributo lo puedo hace asi, $objeto->nombreAtributo = 'nuevo contenido' , los metodos pseudocodigos se utilizan cuando el atributo es privado. Asi que no digas que no es correcto dar valores a un atributo directamente, alrevez lo veo muy util esto.
Como no me gusta repetir cosas, te citaré algo que comentó TLX sobre eso:

¿A que os referís con usar eval?
No se si os referís a llamar directamente desde fuera de la clase a las variables así:
echo $noticia->fetch[&#39;titulo&#39;];
En este caso no necesitas eval, simplemente colocar a $fetch como public, aunque no te lo recomiendo.
En POO existe el principio de abstracción (busca un poco de información sobre él si quieres), que dice que una clase debe definirse a si misma y debe contener todos los métodos y variables que necesita, y ella misma se modificará y se adaptará, exepto en los casos en que necesita estrictamente pasarle como parametro otra clase o algo similar.
Normalmente lo que se suele hacer es un método Get (como en tu caso, mostrar) y un metodo Set para cada variable.

Con set se refiere a los 'asignar' de lo que te comenté.

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[CLASE] Hacer consultas con mysqli
« Respuesta #28 en: 19 de Enero de 2011, 20:50:42 pm »
Se a que se refiere set, he usado esos metodos pero para atributos privados como te dije, si necesito hacerlo a un atributo publico no hay problemas de volverle a asignar el nombre desde afuera.. Comentando sobre lo que dijo TLX que no habia leido, si quisiera hacer eso, son mas adecuadas las interfaces que las abstractas.
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] Hacer consultas con mysqli
« Respuesta #29 en: 19 de Enero de 2011, 21:00:41 pm »
Se a que se refiere set, he usado esos metodos pero para atributos privados como te dije, si necesito hacerlo a un atributo publico no hay problemas de volverle a asignar el nombre desde afuera.. Comentando sobre lo que dijo TLX que no habia leido, si quisiera hacer eso, son mas adecuadas las interfaces que las abstractas.
Todo depende del uso y lógica que le des. Pero lo que te digo es que lo más correcto es que sólo se deba asignar un atributo público cuando realmente sea necesario hacerlo, son casos excepcionales, pero de que te lo permite el lenguaje, lo permite, pero no es lo más correcto.