2010-07-12 18 views
9

Estoy desarrollando un sistema web usando PHP de forma regular. Esta fue mi primera experiencia con PHP, por lo que el código no es legible ni está limpio. Mezcla algo de código HTML con PHP. Diría que ya he hecho la mitad del código.PHP vs OO PHP - ¿Cuál usar?

¿Cuáles son las ventajas reales del PHP orientado a objetos? El sitio web trata de libros y autores de libros, utilizando MySQL y Apache. Entonces, no es un sitio web muy complicado.

+3

Realmente es más la diferencia entre ser organizada en el código y no. QUIERES organización. El dolor de cabeza de revisar el código desorganizado es un ENORME fregadero con el que no querrás tener que lidiar ... OO aumenta la longevidad y la reutilización del código. Haga una clase de libro, abofetee los atributos como vars y disfrute de los beneficios de tener que lidiar con un objeto consolidado que contiene todos los datos que necesita (frente a un grupo de matrices desconectadas o cualquier otra forma en que se pueda seguir el seguimiento de libros). Este sitio web es tu amigo: http://php.net/manual/en/book.classobj.php – abelito

+0

Quité las etiquetas 'comparsion' y 'language-comparison' porque realmente no estás pidiendo una comparación entre PHP y otros idiomas: pregunta sobre PHP y si usa el sistema de objetos. –

Respuesta

16

La verdadera ventaja de la orientación a objetos: su código está mejor organizado, más fácil de mantener, más modular (y por lo tanto más fácil de reutilizar), y potencialmente menos frágil (debido a la encapsulación del estado y la implementación, y con suerte una mejor seguridad). (El cínico en mí también dice que si aprendes PHP orientado a objetos, tomas el primer paso importante para dejar el PHP ghetto. ¡Heh. Funcionó para mí!)

Ya hay muchas preguntas de los PHPers al mudarse a OO en desbordamiento de pila:

no hablar de que t aquí hay trillones de tutoriales PHP orientados a objetos por ahí. Mi opinión: básicamente, sí, si estás escribiendo PHP, probablemente deberías escribir PHP orientado a objetos para algo más allá de las aplicaciones más triviales. Hay muchos frameworks tipo Rails para PHP que harán su vida más fácil y pueden ayudarlo a convertirse en un mejor programador.

+0

+1: ¡Estoy de acuerdo contigo! Solo agregaría que PHP mantiene el estado de tus objetos en una página a otra, por lo que quizás quieras conservar los datos en la matriz $ _SESSION. – Alerty

2

PHP orientado a objetos no difiere con el estilo de procedimiento en la cantidad de código HTML que se mezcla con el código PHP. Entonces, si su única preocupación es la mezcla, debe buscar otras formas de limpiar su código. Por ejemplo, puede crear archivos de plantilla html con marcadores de posición para su contenido dinámico y usar file_get_contents y str_replace para inyectar el contenido dinámico en tiempo de ejecución.

+0

Sin embargo, la cantidad de código PHP que se entremezcle con su HTML será SIGNIFICATIVAMENTE mayor al utilizar OO no. – thetaiko

+1

@thetaiko: No necesariamente. Demuestre que estoy equivocado con un ejemplo y respondería a su desafío con la reescritura de la versión de procedimiento. –

+1

Ya sea que esté usando OOP o PHP procedural, si está mezclando en HTML (presentación) con su lógica comercial, se encontrará con un gran desastre. Cualquier desarrollador web puede decírtelo. Use la presentación más como una plantilla, como la forma en que JSP la impone. –

-5

si realmente quieres usar la programación oo ve a Ruby.

OO PHP para mí es falso. Y si ya tienes la mitad del código hecho en php estructural, no cambies de opinión.

sólo recuerda a hacer que el código limpio con un montón de comentarios para que pueda cambiar fácilmente algo en el futuro

+6

Alguien debería decirle a Facebook. Y Zend. Y PEAR. Y el mantenedor de SPL. Hay millones de líneas de PHP orientado a objetos de calidad, independientemente de sus sentimientos personales al respecto. –

+3

no digo que no haya buenas herramientas en oo php. Solo digo que PHP nunca fue realmente el lenguaje de programación OO. –

+0

@Dobiatowski ¿Y qué? Es OOP ahora. Claro, no es mi implementación OOP favorita, pero funciona bien. –

0

En mi mente, PHPERS pueden lanzar bien lejos el concepto de objeto (instancia de clase), sólo necesitamos de la matriz y el modo Clase:

todas las matrices de compatibilidad con el modo inicial de cualquier función de matriz como su método:

<?php 
$array1->array_flip(this); 
?> 

uso "-> modo()" para validar el conjunto de datos mínimos, y luego cambiar de clase modo:

<?php 
$array1->mode('class1', $success); 
?> 

Cualquier clase de modo de no "-> construct()" en ella, pero tiene "-> validate()" para validar el conjunto de datos mínimo.

La matriz en un modo todavía podría usar la función de matriz como su método, pero después de usar cualquiera de ellas, la matriz volverá al modo de matriz básica, y necesitamos usar "-> mode ('class1', $ éxito); " para regresar el modo.

El pensamiento radical aquí es la programación centrada en los datos; necesitamos separar los datos (matriz) y la actividad (método de clase).

Podríamos modificar el motor de PHP, deshacernos de partes de OO (orientado a objetos) y admitir la clase de modo. Podríamos llamarlo MyPHP.

Por ejemplo: $ array_man1 podría fijarse en dos modos: cls_normal_man y cls_crazy_man:

<?php 
$array_man1->mode('cls_normal_man')->normal_method1()->mode('cls_crazy_man')->crazy_method1(); 
?>