2010-08-31 18 views
8

Tengo un montón de código OOP hermoso, pero las funciones tienen estas consultas SQL monstruosamente enormes. En 2010, ¿deberíamos seguir escribiendo nuestras consultas en línea o hay una abstracción, como MVC, para consultas SQL en PHP?¿La mejor práctica para organizar consultas SQL en código?

Gracias por su conocimiento.

Editar: Probablemente debería haber mencionado esto aquí. Pero como ingeniero profesional de PHP, no creería con qué frecuencia me he encontrado con ORM horriblemente (y peor aún) con ORM programados correctamente que funcionan absolutamente terriblemente (especialmente en muchas consultas de combinación y muchas más). Estoy muy predispuesto negativamente hacia los ORM, con la excepción de algunos ORM simples, como Kohana.

Creo que lo que estaba buscando era un patrón de diseño de SQL dinámico genérico.

Respuesta

8

puede escribir sus consultas (seleccionar, insertar, actualizar, eliminar, ...) en procedimientos almacenados y solo llamar a esos procedimientos almacenados desde su código php en lugar de escribir sus consultas en sus archivos php.

un buen recurso para el aprendizaje de procedimientos almacenados en MySQL es este libro:

mysql stored procedure programming

+2

+1 acceso a datos desde la aplicación debe ser a través de procs almacenados – CaffGeek

1

Puede consultar usando Doctrine ORM. No estoy seguro de si eso es lo que estaba pidiendo o no.

1

Una buena forma es usar un ORM como Doctrine.

3

No sé de PHP, pero podría usar un ORM. Wikipedia tiene un buen list de software ORM.

1

que en su mayoría trabajan en Joomla y desarrollado mi propio envoltorio OO para la generación de SQL. Pero cuando trabajo en proyectos que no son de Joomla siempre uso db2php, este es el complemento IDE de Netbeans. Facilita la ejecución incluso de consultas complejas.

La generación de los modelos requiere un par de clics y todo está hecho.

Es un excelente proyecto fuente de apertura. Echale un vistazo.

http://code.google.com/p/db2php/

1

me gusta usar los PHP POO se aproxima con una clase estática DB y el uso de procedimientos almacenados (SP).

De esta forma, todo el código Mysql se almacena en el servidor y puede implementar las comprobaciones de permisos junto con las consultas complejas, utilizando declaraciones preparadas dentro del SP. Con Postgres uno usaría funciones.

Esto permite una clase de base de datos limpia con código generalizado para crear llamadas SP. En el mejor de los casos, los métodos del intermediario aceptan objetos como parámetros, de modo que el desarrollador de PHP puede concentrarse en su código y disfrutar de todos los beneficios del phpdoc en su IDE (autocompletado).

p. Ej.

$x = new SEARCH_ITEM(); 
$x->name = $blab; 
$resObj = $this->db->search_item($x); 

Esto también hace que sea fácil implementar cosas como una API para su proyecto.

Escribir SP es bastante si no estás acostumbrado.

¿Hay un buen software? Supongo que hay buenos paquetes de abstracción que no sé ... No veo cosas como PDO o Adodb como una capa de abstracción en ese sentido. Creole o Propel es más parecido a lo que estoy pensando. Algo donde las consultas no son parte del código y se están creando usando capas de abstracción como PDO. No probé el criollo y la propulsión.

Cuestiones relacionadas