2009-10-26 7 views
5

Estoy haciendo un blog simple y quiero usar una clase para esto. Me pregunto cuál es la mejor manera de hacer esto. Hay 3 métodos hasta ahora que puedo ver. Hice una clase que obtuvo enlaces, publicaciones y comentarios. El problema al devolver todos estos datos en una sola matriz fue que los datos que solo deberían haberse repetido una sola vez se repetían tantas veces como las filas que estaba devolviendo. Algunas personas dirían que esto era correcto y que debería tener todo en una sola matriz. Todavía no estoy convencido de que este sea el camino correcto a seguir.Diseñando una clase de PHP. El camino correcto

Realmente agradecería algunos comentarios sobre cómo algunos de ustedes podrían diseñar una clase para manejar estas 3 cosas. Lo único que sé que necesito para la clase hasta ahora es un enlace a la base de datos. Qué otros miembros debería usar no me quedan claros. Una vez más, me gustaría obtener una perspectiva aquí sobre cómo se debe hacer.

Gracias, John


OK, así que si tuviera decir 3 métodos como éste:

var $db; 

function GetPosts() { 
//posts 
} 

function GetComments() { 
// blog comments 
} 

function GetLinks() { 
// links for the blog 
} 

¿Cuáles podrían ser algunos de los miembros de ustedes usarían?

Además, me pregunto si debería tener un método que llame a otros métodos. Solo un método público y luego haga que todos estos otros métodos sean privados. El método público llamaría a los métodos privados y devolvería sus valores. ¿Es esto aconsejable?

+0

¿Con la gran cantidad de plataformas gratuitas de blogs de código abierto que desea esforzarse por hacer las suyas? ¿Qué características especiales propones? – jldupont

+3

En realidad nada más que solo publicaciones y comentarios de blog. Simplemente disfruto el aspecto de la programación, eso es todo. :) – JohnB

+2

Supongo que su propósito es aprender más sobre php y diseño que crear software de blogs que será utilizado por otros. – marr75

Respuesta

0

CakePHP tiene un tutorial on creating a blog usando el marco ampliamente adoptado de CakePHP. Si estás interesado en aprender un nuevo marco mientras programa tu blog, te recomendaría hacerlo.

Si desea codificar manualmente todo, le sugiero que cree clases para gestionar la carga y el almacenamiento (persistencia) de sus entidades (enlaces, comentarios) o utilizar un marco de persistencia (por ejemplo, Doctrine ORM for PHP).

El problema es que puede implementar la funcionalidad que ha descrito de diferentes maneras; no hay una respuesta universal. Si envía algún código, es más fácil dar consejos específicos.

+0

Hola Gergely Orosz, gracias por la respuesta. He intentado un par de marcos diferentes pero no me interesan demasiado. Para mí, de todos modos, se necesita la diversión de hacerlo yo mismo. Sé que hay muchas funciones de ayuda y todas, pero he conocido a otros "programadores" que no tienen idea de lo que sucede detrás de ese marco. No me malinterpreten, me gustan los marcos, pero me gusta un poco más el interfuncionamiento. Agregaré algunas cosas a mi clase anterior y tal vez puedas darme algunos consejos. ¡Gracias de nuevo! – JohnB

1

Si desea escribirlo usted mismo desde cero, comenzaría por hacer objetos separados para cada parte del blog, es decir, un objeto de publicación, un objeto de comentarios, un objeto de enlace.

Luego, podría pensar en cómo esos objetos interactuarán entre sí (por ejemplo, un objeto de publicación puede contener una matriz de objetos de comentario) y cómo manejarán el CRUD básico (crear, leer (obtener), actualizar, eliminar) operaciones.

+0

Hola GSto, gracias por la respuesta. Estoy de acuerdo con que tengas una clase separada para cada parte del blog. He oído que hacerlo así hace que sea más difícil mantener la abstracción intacta. Aunque todavía no estoy seguro de esto. Voy a agregar algunas cosas a los métodos anteriores y tal vez me puedas decir qué harías para cambiarlo. – JohnB

+0

¿Cómo hacer eso de esta manera dañaría la abstracción? Creo que sería más fácil mantenerlo de esta manera, en lugar de tener una clase de blog que maneje todo. – GSto

0

No conozco los detalles de la tarea que desea lograr, pero piense en un Blog de fábrica, que tiene el método GetPostManager(), por ejemplo. PostManager puede crear, editar, actualizar publicaciones y seleccionarlas también. Por lo tanto, $ Blog-> GetPostManager() -> GetPosts ($ datefrom, $ dateto) devolverá la clase PostCollection, que implementa las interfaces Contables e Iteradores para buscar publicaciones. PostCollection es una matriz que contiene la clase PostItem. La clase PostItem es una clase simple, que puede mapear a la base de datos sus propiedades.

+0

Gracias FractalizeR. El patrón de fábrica suena bien. Entonces, ¿diría que sería incorrecto crear una clase con estos 3 métodos? Sé que hay más de 100 formas de hacer las cosas, pero creo que estoy buscando la "mejor" manera. No necesariamente el más fácil. Me imagino que finalmente debería ser capaz de escalar si alguna vez quisiera hacer eso. – JohnB

+0

No, la clase con tres métodos es buena ... Pero hasta que extienda su sistema. Si quiero agregar más funciones, su clase se saturará rápidamente con más y más métodos. Entonces, creo que es mejor crear algo de estructura al principio. Especialmente, si no es muy complejo. –

Cuestiones relacionadas