Monthly Archives: abril, 2015

Obtener array de constantes de una clase en PHP

Logo de PHP

En el artículo de hoy comentaremos cómo obtener array de constantes de una clase en PHP, mediante la clase ReflectionClass de PHP.

En ciertas ocasiones, podemos necesitar extraer todas las constantes para poder utilizarlas agrupadamente en un array, ya sea por ejemplo, poder utilizar esos valores agrupadamente en nuestro código, o también, poder agrupar esas constantes para posteriormente definirlas en un array de javascript sin saber el nombre de cada una de las constantes.

Ejemplo para obtener array de constantes de una clase en PHP

A continuación, pongo un ejemplo de una clase inventada con varias constantes, que posteriormente extraeremos mediante la clase ReflectionClass de PHP:

Si hacemos un var_dump de esta constante ,para ver el contenido de la variable $constArray , obtendremos el siguiente array:

Cómo filtrar el array de constantes

Este método devolverá todas las constantes, incluso algunas que probablemente no necesitemos utilizar.Pongamos por caso de este ejempo, que no queremos obtener las constante FORBIDDEN_CONSTANT.Si lo que queremos es filtrar dicha constante, para empezar, deberíamos asignar el nombre a nuestras constantes con un prefijo a través del cual podamos realizar un filtro, como es el caso del ejemplo anterior que hemos utilizado el prefijo TEST_CONSTANT.

De esta forma, realizaremos un filtrado, obteniendo solo las constantes que nos interese manipular.El resultado obtenido tras hacer var_dump será el siguiente:

1 Star2 Stars3 Stars4 Stars5 Stars (Sin puntuaciones)
Loading...

El patrón de diseño Singleton en PHP

El patrón de diseño singleton en PHP

El patrón de diseño singleton se utiliza cuando necesitamos que un objeto no se instancie varias veces.
El acceso a dicha clase será mediante un método estático que instanciará un objeto privado y estático y lo devolverá, siendo este método la única forma de obtener el método y poder manipularlo.

Consideraciones al crear el patrón de diseño singleton en PHP

Para conseguir evitar que no podamos duplicar ni instanciar el objeto, deberemos sobreescribir los siguientes métodos mágicos de las clases de PHP:

  • Dar visibilidad privada el método __construct.
  • Introducir una excepción al método __clone para que si alguien intenta clonar el método pare la ejecución del código
  • Sobreescribir los métodos __wakeup  y __sleep con una excepción para que no se pueda serializar la clase

El patrón de diseño singleton en PHP en un ejemplo

Un ejemplo claro en el que podemos utilizar este patrón, sería en un objeto de conexión de base de datos.Para hacer queries, no necesitamos hacer una conexión cada vez que vamos a ejecutar una sentencia SQL, por lo que se puede utilizar este patrón de diseño para utilizar únicamente una conexión durante una ejecución de ficheros , evitando a la vez, consumir menos memoria en el tiempo de ejecución del fichero.

Aquí os dejo un ejemplo de una clase PHP, que utilizando este único patrón,devuelve un único objeto mysqli

 
Para poder llamar al objeto y que nos devuelva la instancia para poder utilizarla, deberemos llamarla de esta forma:

1 Star2 Stars3 Stars4 Stars5 Stars (Sin puntuaciones)
Loading...

La clase DbQuery de Prestashop

Logo de Prestashop

La clase DbQuery de Prestashop es una clase del propio core del CMS y utilizada para programar por los desarrolladores de Prestashop en algunas ocasiones para montar selects complejas por la variabilidad que puede llevar tener los campos y que quede montada de una forma más limpia en el código.

La clase DbQuery de Prestashop

Es una clase útil para poder montar queries sin tener que mantener el orden normal de las queries, es decir, que no necesitamos poner primero los campos de la select, el from después… , y de esta forma, no condicionar nuestro código con la estructura de las queries MySQL.

Los métodos de la clase DbQuery de Prestashop

Aquí os dejo un ejemplo con algunos de los métodos de esta clase:

Cómo podréis observar en el código no es necesario poner el prefijo de las tablas de Prestashop en las sentencias from y join.Por otro lado también es compatible con los alias de MySQL, ya sea para los campos de la select desde el mismo método, como los de las tablas mediante el segundo parámetro del método from o de la join.

Si necesitáis más información acerca de los métodos de esta clase podéis visitar la documentación que generé hace un tiempo de las clases y controllers de Prestashop que hace referencia a esta clase.

Para poder debugar la query que llevamos construida, podemos obtener el resultado mostrando la query por pantalla mediante el siguiente método.

d($sql->build());

Cómo ejecutar la query

A la hora de ejecutarla, podemos proceder como hacemos normalmente con cualquier query, ya que la clase Db soporta introducir la clase DbQuery de Prestashop en vez de ser una string construida por nosotros.Podemos utilizar ya sea el método executeS(), getRow(), getValue() o el resto de los métodos que utilizamos habitualmente en nuestras queries.

Si necesitáis más información sobre cómo ejecutar sentencias, os propongo que visitéis el artículo de Jose Aguilar que explica cómo trabajar con la clase Db.

1 Star2 Stars3 Stars4 Stars5 Stars (1 votos, media: 4,00 de 5)
Loading...

Copyright © 2017. Powered by WordPress & Romangie Theme.