PHP orientado a objetos para principiantes

Cubriremos conceptos como programación orientada a objetos, clases PHP, constructores PHP, destructores PHP, métodos mágicos PHP, etc. Este tutorial está destinado a programadores principiantes y experimentados que quieran aprender PHP OOP desde un nivel básico.

Uno de los mayores cambios en PHP 5 es la inclusión de un modelo totalmente de objetos, que mejora el rendimiento. Algunas de las nuevas características importantes agregadas en PHP 5 incluyen métodos finales y abstractos, clases, interfaces, clonación y métodos mágicos. Veremos ejemplos de cada uno de ellos en este tutorial PHP de programación orientada a objetos.

En la programación orientada a objetos, un objeto se trata de la misma manera que referencias o punteros. Esto significa que cada nueva variable contiene una referencia al objeto, en lugar de una copia del objeto completo.

El concepto más difícil de entender son los conceptos básicos de la programación orientada a objetos, ya que son diferentes de la programación PHP normal. Pero una vez que comprenda los principios básicos, el modelo en sí le resultará sencillo y claro.

¿Qué es la programación orientada a objetos en PHP?

Dado que el término programación orientada a objetos comienza con la palabra "objeto", podemos decir que es un tipo especial de programación en la que se crean y utilizan objetos.

Aquí hay una explicación de PHP OOP para principiantes. Mira el mundo que nos rodea, está lleno de objetos. Sol, luna, coches, árboles, casas, etc. etcétera. Todos estos son objetos, tienen atributos y funciones. En el proceso de pensar, operamos con objetos. Cuando hablamos de un coche, no piensas en las ruedas, el motor, los asientos, las puertas, piensas en el coche como lo que es. En pocas palabras, piensas en términos del sujeto o del objeto. La orientación a objetos es la representación de elementos como objetos en programación.

El coche es un objeto. Tiene los atributos de color, tamaño, peso y función de movimiento. Cualquier objeto sin funcionalidad será inútil. En POO, el programador utiliza objetos; Cada objeto tiene algunos atributos y funciones. En general, la programación se reduce a construir módulos utilizando objetos.

Una definición simple de programación orientada a objetos:

La programación orientada a objetos es programación basada en objetos que contienen datos (atributos) y métodos (funcionalidades) que procesan estos datos. Los objetos son un tipo de datos definidos por el programador, y las interacciones entre diferentes objetos también las define el programador.

En otras palabras, la programación orientada a objetos permite al programador agrupar tareas similares en clases; la clase puede contener datos y funciones para acceder a esos datos, relacionados entre sí.

La programación orientada a objetos básica en PHP le ayuda a desarrollar código que es más fácil de mantener y administrar. Cuanto más limpio y legible sea el código, más probabilidades habrá de que se reutilice. Como resultado, se pueden aplicar patrones de diseño al sistema. En OOP, los módulos se crean y utilizan de acuerdo con los requisitos. Con la ayuda de la programación orientada a objetos en PHP, podemos crear aplicaciones para sitios web que tengan una estructura modular.

Términos importantes en el tutorial de programación orientada a objetos de PHP:

A continuación se muestra una definición general de algunos términos importantes que se utilizan a menudo en PHP orientado a objetos.

Clase

En PHP POO, una clase es un tipo de datos definido por el programador. La clase contiene datos y funciones para trabajar con estos datos. Los datos y funciones tienen el ID de acceso privado. Esto significa que no son visibles fuera de la clase. Una clase es una plantilla o plantilla a partir de la cual se pueden realizar tantas copias o instancias como sean necesarias.

Un objeto

Un objeto también se conoce como instancia. Cuando se instala una instancia de una clase, se crea un objeto. Si una clase es una muestra, entonces un objeto es el producto final creado con la muestra. Una vez que se ha definido una clase, se pueden crear muchos objetos a partir de ella.

variable miembro

Las variables definidas en una clase se denominan variables miembro. De hecho, son los datos contenidos en esta clase, solo pueden ser modificados por funciones de esta clase. Normalmente, las variables miembro son visibles sólo para esa clase y están ocultas para otras clases.

función miembro

Las funciones definidas en una clase se denominan funciones miembro. Tampoco son visibles para otras clases. Se utilizan para cambiar variables miembro para acceder a datos de objetos.

Constructor

Un constructor es un tipo especial de función miembro. Cuando se establece una clase, se crea un objeto, esta función se llama automáticamente y asigna valores iniciales a las variables de la clase.

Incinerador de basuras

Este es un tipo especial de función que se llama automáticamente cuando se elimina un objeto.

Herencia

En PHP 5 OOP, la herencia es el proceso en el que una clase (subclase) recibe todos los atributos y funciones de otra clase (superclase).

super clase

También conocida como clase base o padre: heredada por una o más subclases.

Subclase

Una clase hija o derivada, una subclase hereda de una superclase.

Polimorfismo

Este es un fenómeno en programación orientada a objetos en el que una única función se puede utilizar para múltiples propósitos.

Encapsulación

Uno de los conceptos más importantes de la programación orientada a objetos. Los datos y funciones que trabajan con estos datos están interconectados y no son visibles para otras funciones.

Abstracción

La abstracción significa que los detalles de implementación de funciones o clases no son visibles.

, lo que significa que las funciones que tienen el mismo nombre pero una cantidad diferente de argumentos se ejecutan de manera diferente.

Clases y objetos:

Clase y objeto se utilizan ampliamente como sinónimos en la programación orientada a objetos, pero en esencia son muy diferentes entre sí. Una clase representa un patrón, patrón o molde, y un objeto es un producto o pieza moldeada a partir de ese patrón o molde en particular.

Tomemos como ejemplo una casa. El aula es la base del hogar; tiene dimensiones, forma, número de puertas, pasillos, etc. Pero esto es sólo un proyecto, no la casa en sí. Cuando una casa física se construye basándose en la información contenida en el plano, es un objeto.

Antes, el objeto era un montón de madera, ladrillos, cemento, etc., a partir del cual se construía una casa u objeto según la información del plano:

Una clase en PHP OOP es un plan o plantilla según el cual se instala una instancia de una clase y se crea un objeto. Una vez creada la clase, podemos crear tantos objetos como queramos. En la figura anterior, se crearon cinco objetos (casas) a partir de una clase (plano). Un objeto siempre seguirá las instrucciones dadas en la clase utilizada para crearlo.

Ventajas de la programación orientada a objetos en PHP:

  1. Arquitectura mejorada y código más limpio.

PHP orientado a objetos está mejor catalogado y empaquetado fácilmente, lo que le permite especificar la arquitectura óptima. Normalmente cada clase se guarda en un archivo independiente. Los lenguajes procedimentales se caracterizan por tener un código complejo que es muy difícil de leer o comprender. En POO, al implementar objetos que contienen datos privados con definiciones claras de relaciones entre objetos, el código es legible y limpio.

  1. Reutilizar

La programación orientada a objetos hace que el código sea reutilizable. Los objetos creados una vez se pueden utilizar una y otra vez. Los programas se pueden crear combinando módulos de trabajo en lugar de escribir todo desde cero. Esto ahorra tiempo y mejora la productividad.

  1. Fácil de mantener y actualizar

Los objetos tienen sus propios datos y funciones, y toda su estructura es compacta y comprimida, lo que facilita realizar cambios en el código. La programación procedimental convencional produce código en el que es muy difícil encontrar un punto para realizar cambios. En PHP OOP, podemos agregar una nueva propiedad y luego agregar métodos asociados para manipular esa propiedad.

  1. Encapsulación

La encapsulación significa que los valores de las variables de un objeto no son visibles desde el exterior, por lo que se implementa la seguridad de los datos. Pero si surge la necesidad, se puede acceder a los datos mediante modificadores de acceso. Para crear programas seguros, los datos y las funciones miembro de una clase se pueden ocultar de otras clases. Una vez que se crea un objeto, no se necesita información de implementación para usarlo.

  1. Herencia

La clase heredera recibe todas las características de la clase padre y luego le agrega sus propias características. La subclase hereda las variables y métodos de la superclase. Podemos ampliar el uso de clases existentes y también eliminar código innecesario.

" Será útil tanto para principiantes como para aquellos que ya son bastante buenos escribiendo código no orientado a objetos y quieren descubrir por qué todavía se necesita la programación orientada a objetos.

Lo que me hizo escribir varios artículos sobre programación orientada a objetos en php fue el hecho de que no encontré artículos sobre este tema que me satisficieran. Hay manuales o artículos oficiales aburridos y aburridos que presentan esencialmente los mismos manuales solo que con ejemplos más detallados, y también hay mucha información desactualizada sobre este tema en Internet.

¿Por qué necesitamos programación orientada a objetos?

La popularidad y simplicidad de PHP lleva al hecho de que la mayor parte del código escrito en este lenguaje es de calidad muy dudosa. Con tan solo un poco de tiempo libre aprendiendo este lenguaje y un poco de perseverancia, aunque no estés familiarizado con la programación, podrás empezar a escribir aplicaciones web. A medida que aprendas PHP, podrás hacerlos más funcionales. Sin embargo, si no ha dedicado tiempo a diseñar, pronto agregar funciones adicionales a la aplicación, depurarla y probarla se vuelve más complicado y para agregar alguna cosita hay que remover una cantidad cada vez mayor de código, se vuelve cada vez más incomprensible y Confuso, otros desarrolladores, al familiarizarse con su código, comenzarán a insultarlo y criticarlo duramente.

Ilustración del libro “Código Limpio” - Robert Martin

Entonces, ¿cuál es el trato? ¿Por qué el proyecto que tienes en mente, cuando se expande, puede convertirse tan rápidamente en un montón de código confuso con una nube de errores? El hecho es que los principiantes escriben código que hace solo lo que se le requiere en una situación específica y no implica realizar ningún cambio. Este enfoque no es aceptable, especialmente para las aplicaciones web, que inevitablemente tendrán que crecer y desarrollarse si, por supuesto, se vuelven populares. Tarde o temprano, usted, y tal vez otros desarrolladores, necesitarán volver al código escrito anteriormente y realizar cambios en él, y cuanto más fácil sea hacerlo, más rápido se desarrollará su aplicación y ganará popularidad.

El enfoque de programación orientado a objetos, por supuesto, no es una panacea para todos los males y por sí solo no mejorará su código, pero su uso le permitirá presentar el código no como un montón de funciones y variables, sino como una colección de objetos que interactúan entre sí, lo cual es mucho más claro. Los datos no estarán tirados en ningún lado, sino que se almacenarán en objetos, protegiéndolos del uso indebido. Las funciones (en programación orientada a objetos se llaman métodos) no solo realizarán acciones con variables, sino que describirán el comportamiento de los objetos. En esencia, se trata de modelar entidades reales, como un usuario, una publicación, un comentario, etc.

Además, en la programación orientada a objetos, los llamados patrones de diseño son comunes: patrones para resolver un problema que surge constantemente en la programación. El uso de estas plantillas le permitirá, en primer lugar, conocer la solución a un determinado problema antes de que surja y, en segundo lugar, la solución al problema será clara para otros desarrolladores que estén familiarizados con la plantilla que utilizó.

Conceptos básicos

POO es una metodología de programación (método, enfoque) según la cual un producto de software se representa en forma de objetos que interactúan. No estoy de acuerdo con que la programación orientada a objetos siempre implique el uso de clases: js es como un lenguaje orientado a objetos, pero no tiene clases. Sin embargo, cuando se aplica a php, la programación orientada a objetos siempre implica el uso de clases.

Bajo objeto Por lo general, se entiende como una determinada entidad con nombre que almacena datos y tiene su propio comportamiento. El comportamiento de un objeto y la estructura de los datos que almacena, así como la forma en que se accede a estos datos, describe la clase a la que pertenece el objeto. Clase Esta es una descripción de objetos relacionados algo similares que generalmente almacenan el mismo conjunto de datos y tienen el mismo comportamiento. Un objeto que pertenece a una clase particular se llama Copiar. Un ejemplo es una clase que describe a un usuario. Esta clase describe la estructura de datos que almacenará cada instancia de esta clase. Deje que estos datos sean su nombre de usuario y contraseña. Un objeto de clase que almacena valores de inicio de sesión y contraseña específicos será una instancia de esta clase.

Tres pilares de la programación orientada a objetos


La POO se basa en tres principios, a menudo llamados los tres pilares de la POO, estos son:

  • encapsulación
  • polimorfismo
  • herencia

Encapsulación es el principio según el cual los datos se combinan y almacenan en objetos, y también están protegidos contra un uso incorrecto.

Puede parecerle extraño que un programador se limite a sus derechos de lectura o modificación de datos, pero a menudo sucede que es muy difícil rastrear y comprender completamente cómo funciona el código y, por lo tanto, vale la pena evitar situaciones que obviamente son erróneo.
Un ejemplo de uso indebido de datos es intentar asignar una edad negativa a una instancia de la clase Persona. Naturalmente, un intento de este tipo, con un código bien escrito, no debería tener éxito, de lo contrario se violaría el principio de encapsulación.
En la práctica, el principio de encapsulación es que se accede a los datos mediante métodos que pueden filtrar o ajustar los valores de los datos que intentamos cambiar.

Herencia es el proceso por el cual un tipo de objeto (clase) adquiere ciertas propiedades de otro tipo de objeto.

A menudo sucede que la descripción de un tipo de objeto, es decir, una clase, cae completamente dentro de la descripción de otro tipo de objeto. Por ejemplo, una clase que describe a un administrador también podría describir a un usuario, excepto que el usuario no tiene derechos de acceso. En este caso, tiene sentido crear una clase que describa a los administradores, descendiente clase que describe a los usuarios. Al mismo tiempo, en la clase que describe a los administradores, no tenemos que describir los datos y el comportamiento que ya están descritos en la clase “usuario” solo necesitamos describir los datos que serán los encargados de otorgar los derechos de acceso; En este caso la clase "usuario" será antepasado clase “administrador”, que puede tener su propio hijo, y ese niño puede tener el suyo propio, etc. La cadena de herencia puede ser tan larga como se desee. Además, un antepasado puede tener varios descendientes, cada uno de los cuales adquirirá completamente las propiedades de su antepasado y les agregará algo propio; de lo contrario, la herencia no tiene sentido.

Polimorfismo es el uso del mismo nombre de método para resolver varios problemas similares.

Es natural utilizar el mismo nombre de método para la misma acción con diferentes tipos de objetos de la misma cadena de herencia. La implementación de este método puede diferir en cada clase y al llamar al método no lo sabremos CómoÉl está haciendo algo, pero lo sabremos. Qué lo hace basándose en su nombre. Volvamos a nuestro ejemplo con el usuario y el administrador. Tanto el administrador como el usuario pueden iniciar sesión y, naturalmente, elegir un nombre de método para esta acción, por ejemplo iniciar sesión. Su implementación específica en estas clases puede diferir, por ejemplo, durante la autorización registramos los derechos de acceso del administrador a la sesión, pero no los del usuario. Al escribir código que procesa datos recibidos del formulario de código, después de crear una instancia de la clase, no nos importará si inicia sesión un usuario simple o un administrador; para una instancia de cualquiera de estas dos clases, llamaremos a método con el mismo nombre.

Ya basta de teoría aburrida. La próxima vez escribiré sobre cómo describir clases, crear instancias de clases, acceder a datos (campos) y métodos de instancia.

11 de marzo de 2010 a las 11:37 am

POO con ejemplos (parte 1)

  • Proceso educativo en TI.

Por voluntad del destino, tengo que leer un curso especial sobre patrones de diseño en una universidad. El curso especial es obligatorio, por eso los alumnos que vienen a mí son muy diferentes. Por supuesto, entre ellos también hay programadores en ejercicio. Pero, desafortunadamente, la mayoría de las personas tienen dificultades incluso para comprender los términos básicos de la programación orientada a objetos.

Para ello, intenté explicar los conceptos básicos de la POO (clase, objeto, interfaz, abstracción, encapsulación, herencia y polimorfismo) utilizando ejemplos más o menos vivos.

La primera parte a continuación trata sobre clases, objetos e interfaces.
ilustra la encapsulación, el polimorfismo y la herencia.

Conceptos básicos de programación orientada a objetos

Clase
Imagina que estás diseñando un coche. Ya sabes que un coche debe contener motor, suspensión, dos faros, 4 ruedas, etc. También sabes que tu coche debe poder acelerar y frenar, girar y dar marcha atrás. Y, lo más importante, sabrá exactamente cómo interactúan el motor y las ruedas, según qué leyes se mueven el árbol de levas y el cigüeñal, y también cómo están diseñados los diferenciales. Confías en tus conocimientos y empiezas a diseñar.

Describes todas las partes que componen tu automóvil, así como también cómo estas partes interactúan entre sí. Además, se describe lo que debe hacer el usuario para que el coche frene o encienda las luces altas. El resultado de tu trabajo será un boceto. Acabas de desarrollar lo que en OOP se llama Clase.

Clase es una forma de describir una entidad que define un estado y un comportamiento que depende de este estado, así como reglas para interactuar con esta entidad (contrato).

Desde el punto de vista de la programación, una clase puede considerarse como un conjunto de datos (campos, atributos, miembros de la clase) y funciones para trabajar con ellos (métodos).

Desde el punto de vista de la estructura del programa, una clase es un tipo de datos complejo.

En nuestro caso, la clase mostrará una entidad: un automóvil. Los atributos de clase serán el motor, la suspensión, la carrocería, las cuatro ruedas, etc. Los métodos de clase serán "abrir la puerta", "pisar el acelerador" y también "bombear una porción de gasolina del tanque de gasolina al motor". Los dos primeros métodos están disponibles para que otras clases los ejecuten (en particular, la clase "Driver"). Este último describe interacciones dentro de la clase y no es accesible para el usuario.

De ahora en adelante, aunque la palabra “usuario” esté asociada al Solitario y a Microsoft Word, nos referiremos a los programadores que utilizan tu clase como usuarios, incluido tú mismo. Llamaremos desarrollador a la persona que sea el autor de la clase.

Un objeto
Hiciste un gran trabajo y las máquinas desarrolladas según tus planos están saliendo de la línea de montaje. Aquí están, parados en ordenadas filas en el patio de la fábrica. Cada uno de ellos repite exactamente tus dibujos. Todos los sistemas interactúan exactamente como usted los diseñó. Pero cada coche es único. Todos tienen números de carrocería y de motor, pero todos estos números son diferentes, los coches difieren en color y algunos incluso tienen piezas fundidas en lugar de ruedas estampadas. Estos coches son esencialmente objetos de tu clase.

Objeto (instancia) Es un individuo representante de una clase que tiene un estado y un comportamiento específicos que están enteramente determinados por la clase.

En términos simples, un objeto tiene valores de atributos específicos y métodos que operan sobre esos valores según las reglas definidas en la clase. En este ejemplo, si la clase es un automóvil abstracto del "mundo de las ideas", entonces el objeto es un automóvil concreto que se encuentra debajo de las ventanas.

Interfaz
Cuando nos acercamos a una máquina de café o nos ponemos al volante, iniciamos una interacción con ellos. Por lo general, la interacción se produce mediante un determinado conjunto de elementos: una ranura para aceptar monedas, un botón para seleccionar una bebida y un compartimento para dispensar un vaso en una máquina de café; volante, pedales, palanca de cambios en un coche. Siempre hay un conjunto limitado de controles con los que podemos interactuar.

Interfaz es un conjunto de métodos de clase que están disponibles para que los utilicen otras clases.

Obviamente, la interfaz de una clase será el conjunto de todos sus métodos públicos junto con un conjunto de atributos públicos. Básicamente, una interfaz especifica una clase, definiendo claramente todas las acciones posibles sobre ella.
Un buen ejemplo de interfaz es el salpicadero de un coche, que permite activar métodos como acelerar, frenar, girar, cambiar de marcha, encender los faros, etc. Es decir, todas las acciones que otra clase (en nuestro caso, el conductor) puede realizar al interactuar con el coche.

Al describir una interfaz de clase, es muy importante lograr un equilibrio entre flexibilidad y simplicidad. Una clase con una interfaz sencilla será fácil de usar, pero habrá problemas que no podrá resolver. Al mismo tiempo, si la interfaz es flexible, lo más probable es que consista en métodos bastante complejos con una gran cantidad de parámetros que le permitirán hacer mucho, pero su uso estará plagado de grandes dificultades y el riesgo de cometer errores. un error, algo mezclado

Un ejemplo de interfaz sencilla sería un automóvil con transmisión automática. Cualquier rubia que haya realizado un curso de conducción de dos semanas podrá dominar su funcionamiento muy rápidamente. Por otro lado, para dominar el control de un avión de pasajeros moderno se necesitan varios meses, o incluso años, de duro entrenamiento. No me gustaría estar a bordo de un Boeing pilotado por alguien que tenga dos semanas de experiencia de vuelo. Por otro lado, nunca conseguirás un coche para despegar y volar de Moscú a Washington.

16 de abril de 2008 a las 12:15

PHP - POO o enfoque procedimental

  • PHP

PHP es uno de los lenguajes de programación de scripts más populares. Casi el 60% de los servidores web utilizan PHP Cada mes se desarrollan millones de sitios web y aplicaciones web en PHP.

PHP se desarrolló originalmente como un simple reemplazo de Perl y en un par de años se había vuelto extremadamente poderoso y popular. El lenguaje PHP en sí es muy similar a ANSI C.
Una de las razones por las que PHP se ha vuelto tan popular es su corta curva de aprendizaje.

Aprender PHP no es nada difícil, especialmente si estás familiarizado con la sintaxis de Java o C.

Dado que escribir scripts PHP es bastante fácil, cualquiera puede escribir código PHP sin seguir ninguna convención y sin mezclar la capa de presentación con la lógica empresarial (esta es una de las razones principales por las que hay tantos proyectos no administrados). Debido a que PHP no necesariamente tiene convenciones de codificación estrictas, con el paso de los años, a medida que el proyecto crece cada vez más, se convierte en una aplicación enorme e inmanejable.

La programación orientada a objetos o POO se utiliza bien en la práctica de la programación para crear proyectos manejables más fácilmente.
El enfoque procesal implica escribir código de programa sin utilizar objetos. La programación procesal implica escribir código con o sin rutinas.

La programación orientada a objetos entrena cualquier lenguaje de programación para producir un mejor código de programación y se utiliza para lograr una mayor productividad y escribir proyectos más grandes sin temor a confundirse al administrarlos. La programación orientada a objetos le brinda la posibilidad de crear objetos reutilizables para que usted u otros desarrolladores puedan usarlos en sus proyectos sin tener que rediseñarlos una y otra vez. La programación orientada a objetos elimina las barreras y la complejidad al escribir y administrar aplicaciones grandes.

PHP nos permite escribir aplicaciones de 2 formas diferentes, la primera es procedimental y la segunda orientada a objetos. Si aún no comprende la diferencia entre estos dos enfoques, veamos estos fragmentos de código: el mismo ejemplo escrito en diferentes enfoques.

Procesal:

$entrada_usuario = $_POST['campo'];
$filtered_content = filtro($user_input); //filtrado de entrada del usuario
mysql_connect("dbhost", "dbuser", "dbpassword"); //base de datos
mysql_select_db("nombrebd");
$sql = "alguna consulta";
$resultado = mysql_query($sql);
mientras ($datos = mysql_fetch_assoc())
{
proceso($datos);
}
Process_user_input($filtered_content);

Y aquí está el mismo código usando programación orientada a objetos:

$input_filter = nuevo filtro();
$input_filter->filter_user_input(); //filtrar las entradas del usuario
$db = nuevo dal("mysql"); //capa de acceso a datos
$db->connect($dbconfig);//estábamos usando mysql
$resultado = $db->ejecutar($sql);
ReportGenerator::makereport($resultado); //procesar datos
$modelo = nuevo Postmodel($filtro->get_filtered_content());
$modelo->insertar();

Si observa detenidamente estos dos fragmentos de código, notará que el código que utiliza programación orientada a objetos es más legible y más fácil de entender.

El código con programación orientada a objetos está mejor organizado porque está claro qué objeto se procesa con qué. Las aplicaciones grandes escritas utilizando un enfoque procedimental se vuelven casi imposibles de percibir después de que se han lanzado varias versiones. Por supuesto, puede seguir reglas estrictas para escribir el código de un programa, pero están aprobadas por millones de desarrolladores que saben que, en última instancia, esto no le brindará control y usabilidad del proyecto si no usa programación orientada a objetos en su programa.
Casi todas las aplicaciones grandes están escritas usando Orientación a Objetos
acercarse.

Con base en lo anterior, podemos extraer las ventajas de usar programación orientada a objetos:

La programación orientada a objetos se creó para hacer la vida más fácil a los desarrolladores. Con la programación orientada a objetos puedes dividir tus grandes problemas en pequeños problemas que son mucho más fáciles de resolver.
El principal requisito de la programación orientada a objetos: haz todo lo que quieras hacer como objetos. Los objetos son pequeños fragmentos de código separados que pueden combinar datos y propiedades. En las aplicaciones, todos los objetos interactúan entre sí.

La POO se puede considerar mejor desde diferentes ángulos, especialmente cuando el tiempo de desarrollo y el desarrollo posterior de la aplicación son importantes para usted.
Las principales ventajas de utilizar POO se pueden expresar como:

* Reutilizar: Un objeto es un objeto lógico que tiene un conjunto de propiedades y métodos y puede interactuar con otros objetos. Un objeto puede ser completamente independiente o puede depender de otros objetos. Generalmente se crea un objeto para resolver problemas específicos. Por lo tanto, cuando otros desarrolladores encuentran problemas similares, pueden conectar su clase a su proyecto y usarla sin temor a que interrumpa su proceso de desarrollo. Esto evita DRY, que significa No repetirte. En la programación procedimental o modular, la reutilización sólo es posible de forma agregada.

* Refactorización: Cuando necesita utilizar la refactorización en un proyecto, la programación orientada a objetos le brinda las máximas ventajas, ya que todos los objetos son elementos pequeños y contienen sus propiedades y métodos como parte de sí mismos. Esto hace que la refactorización sea relativamente fácil de usar.

* Extensibilidad: Si necesita ampliar la funcionalidad de su proyecto, puede lograr mejores resultados utilizando programación orientada a objetos. Una de las principales funciones de la programación orientada a objetos es la extensibilidad. Puede utilizar la refactorización de objetos para agregar funcionalidad. Al trabajar en esto, aún puedes guardar
la compatibilidad anterior del objeto; por lo tanto, puede trabajar bien con el código anterior. O puede expandir el objeto y crear uno completamente nuevo, que contendrá todas las propiedades y métodos necesarios del objeto principal del que se deriva el nuevo, y luego agregarle nuevas funciones. Esto se llama "herencia" y es una característica muy importante de la programación orientada a objetos.

* Apoyo: el código orientado a objetos es más fácil de mantener porque
Sigue convenciones de codificación muy estrictas y está escrito de manera que se explica por sí mismo.
Por ejemplo, cuando un desarrollador agrega, reelabora o depura código, puede encontrar fácilmente la estructura interna del código y mantenerlo de vez en cuando. Además, cuando tienes un equipo de desarrolladores trabajando en tu entorno, la programación orientada a objetos puede ser una mejor solución, ya que puedes distribuir tu código entre los miembros del equipo después de dividirlo en partes pequeñas. Estas pequeñas partes se pueden desarrollar como objetos separados, de modo que los desarrolladores puedan trabajar casi de forma independiente unos de otros. En última instancia, combinar todas las partes en una sola aplicación no será difícil.

* Eficiencia: La idea de POO en realidad se desarrolló para aumentar la eficiencia y facilitar el proceso de desarrollo. Se desarrollan varios patrones de diseño para crear un código bueno y más eficiente.
Además, en OOP puede reflexionar sobre sus decisiones de una manera más conveniente que con un enfoque procesal. Debido a que divides tu problema en varios problemas pequeños y encuentras una solución para cada uno de ellos por separado, el gran problema se resuelve solo.

P.D. Mi primer habratopic, si te gusta, traduciré más el libro, ya que para mí es bastante interesante e informativo.

En este tutorial aprenderá los conceptos básicos de la programación orientada a objetos en PHP. Aprenderá sobre los principios de la programación orientada a objetos en general y aprenderá a escribir scripts simples en PHP.

¡Bienvenido a la primera de una serie de lecciones sobre programación orientada a objetos en PHP! Al completar todas las lecciones de esta serie, aprenderá sobre los principios y conceptos básicos de la programación orientada a objetos y aprenderá cómo crear rápida y fácilmente aplicaciones útiles en PHP.

En este tutorial comenzaré a ponerte al día y te contaré los conceptos básicos de la programación orientada a objetos. Aprenderás:

  • ¿Qué es la programación orientada a objetos?
  • Cómo la programación orientada a objetos te ayudará a crear mejores scripts PHP
  • algunos conceptos básicos como clases, objetos, métodos, variables de clase
  • dónde empezar a escribir un script PHP

¿Estás listo para sumergirte en el mundo de los objetos PHP? ¡Entonces adelante!

¿Qué es la programación orientada a objetos?

Si alguna vez creó y utilizó funciones personalizadas en PHP, utilizó un estilo de programación procedimental. En la programación de procedimientos, normalmente se crean estructuras de datos: números, cadenas, matrices, etc. - almacenar algunos datos y luego procesar estas estructuras con funciones especiales que manipulan estos datos.

La programación orientada a objetos, u OOP, ha avanzado porque aquí almacenamos estructuras de datos y las funciones que las procesan en una sola entidad llamada objeto. En lugar de procesar los datos con alguna función, carga esos datos en un objeto y luego llama a sus métodos para manipularlos y obtener el resultado deseado.

Muy a menudo, los objetos creados con programación orientada a objetos reflejan entidades reales. Por ejemplo, si está creando un foro para su sitio, crearía un objeto Miembro que almacenará información sobre cada miembro del foro (nombre, inicio de sesión, correo electrónico, contraseña, etc.), así como métodos que procesarán esta información ( registro, autorización, cierre de sesión, prohibición, etc.).

¿Por qué utilizar programación orientada a objetos?

Procedimental y orientado a objetos son dos formas diferentes de hacer la misma cosa. Esto no quiere decir que uno de ellos sea mejor que el otro: cada uno escribe como quiere, por lo que incluso puedes combinar fácilmente estos dos enfoques en un solo guión.

Sin embargo, aquí hay algunos beneficios de la programación orientada a objetos para los desarrolladores:

  • Es más fácil reflejar situaciones reales: como señalé anteriormente, los objetos reflejan entidades reales: personas, productos, mapas, artículos de blogs, etc. Esto simplifica enormemente la tarea cuando recién comienza a diseñar su aplicación, ya que el propósito de cada objeto Es como un objetivo: las relaciones entre objetos serán claras y comprensibles.
  • Es más fácil escribir programas modulares: la programación orientada a objetos implica escribir módulos. Al dividir su código en módulos, le resultará más fácil administrarlo, depurarlo y ampliarlo.
  • Es más fácil escribir código que se usará muchas veces: escribir código que se pueda usar más de una vez ahorrará tiempo al escribir una aplicación y, con el tiempo, incluso podrá crear una biblioteca completa de este tipo de módulos que podrá usar en muchas ocasiones. aplicaciones. Con la programación orientada a objetos, resulta comparativamente más fácil escribir dicho código, ya que las estructuras de datos y las funciones se encapsulan en un único objeto que se puede utilizar cualquier número de veces.

Algunos conceptos básicos

Antes de comenzar a escribir scripts, debe tener una buena comprensión de los conceptos de clase, objeto, variable de clase y método.

Clases

Una clase es un marco para un objeto. Este es un fragmento de código que define:

  • Tipos de datos que contendrán los objetos de clase creados
  • Funciones que contendrán estos objetos.

Cuando crea una aplicación OOP, normalmente creará varias clases que representarán los diferentes tipos de entidades en su aplicación. Por ejemplo, para crear un foro, puede crear las clases Foro, Tema, Publicación y Miembro.

Objetos

Un objeto es un tipo especial de variable que se crea a través de una clase. Contiene datos reales y funciones para manipularlos. Puedes crear tantos objetos como quieras a partir de una sola clase. Cada función de un objeto es independiente de otro objeto, incluso si están creados a partir de la misma clase.

Para comparación con entidades reales:

  • Una clase es el marco de un automóvil: define cómo se verá y actuará el automóvil, pero sigue siendo una entidad abstracta.
  • Un objeto es un coche real creado a partir de una estructura alámbrica: tiene propiedades reales (como la velocidad) y comportamiento (como la aceleración o el frenado).

Nota: Un objeto a menudo se denomina esencia de una clase y el proceso de creación de un objeto de una clase se denomina implementación.

Variables de clase

Los valores de datos que se almacenan en un objeto particular se escriben en variables especiales llamadas variables de clase. Las variables de clase están estrechamente asociadas con su objeto. Aunque todos los objetos de una clase tienen las mismas variables, sus valores pueden diferir.

Métodos

Las funciones definidas en una clase y utilizadas en objetos de esa clase se denominan métodos. No son muy diferentes de las funciones normales: puede pasarles valores, pueden contener variables locales y valores de retorno. Sin embargo, los métodos suelen funcionar con variables de objeto. Por ejemplo, el método login() para iniciar sesión en su foro podría establecer la variable de clase loggedIn en verdadero.

¿Cómo crear una clase en PHP?

Ahora que ya sabes qué son las clases, métodos, variables de clase y objetos, es hora de crear un par de clases y objetos en código PHP.

Primero, veamos cómo crear realmente una clase. Básicamente, el script para crear una clase se ve así:

Clase NombreClase ( // (definición de clase) )

Por ejemplo, si estás creando una clase de miembro para tu foro, escribirías esto:

Miembro de clase ( // (definición de clase) )

Es bastante simple. Naturalmente, esta clase no hará nada hasta que le agregue variables y métodos. Sin embargo, el código anterior crea una clase PHP válida que se puede utilizar.

Una buena regla general: coloque cada clase en un archivo separado con el mismo nombre que el nombre de la clase. Por ejemplo, coloque la clase Miembro en el archivo Member.php y guárdela en una carpeta, por ejemplo, clases.

¿Cómo crear objetos en PHP?

Puedes crear un objeto usando la nueva palabra clave:

Nuevo nombre de clase()

Este código creará un objeto de clase ClassName. Necesitará utilizar este objeto más adelante, por lo que deberá almacenarlo en una variable. Por ejemplo, creemos un objeto de la clase Miembro y almacenémoslo en la variable $miembro:

$miembro = nuevo miembro();

También podemos crear otro objeto de la misma clase:

$miembro2 = nuevo miembro();

Aunque creamos estos dos objetos a partir de la misma clase, las variables $miembro y $miembro2 son independientes entre sí.

Creando variables de clase

Ahora que ya sabemos cómo crear clases y objetos de clase, veamos cómo crear variables de clase. Hay 3 descriptores de acceso para variables de clase que se pueden agregar a una clase:

  • Variables de clase pública (públicas): accesibles, es decir se pueden leer y/o modificar - en cualquier parte del script, independientemente de dónde se encuentre este código - dentro o fuera de la clase
  • Variables de clase privadas (privadas): accesibles solo para métodos de clase. Es mejor hacer que las variables de clase sean privadas para separar los objetos del resto del código.
  • Variables de clase protegidas: Disponibles para métodos de tu propia clase, así como para métodos de clases heredadas (hablaremos de herencia más adelante).

Para crear una variable de clase, escriba la palabra clave pública, privada o protegida y luego ingrese el nombre de la variable:

Clase NombreClase ( público $nombrepropiedad; privado $nombrepropiedad; protegido $nombrepropiedad; )

Agreguemos una variable de clase pública a nuestra clase Miembro para almacenar el nombre de usuario:

Miembro de la clase ( public $nombre de usuario = ""; )

Observe que hemos inicializado nuestra variable de clase, su valor es la cadena vacía, "". Esto significa que cuando se crea un nuevo usuario, el nombre de usuario será la cadena vacía de forma predeterminada. Al igual que en el caso de las variables regulares en PHP, las variables de clase no necesitan inicializarse, pero es mejor no ser perezosos. Si no inicializa una variable de clase, su valor predeterminado es nulo.

Accediendo a variables de clase

Para obtener acceso a una variable de un objeto, use el operador ->:

$objeto->nombrepropiedad

Intentemos. Escribamos un script que declare una clase Miembro y una variable de clase, cree un objeto de esta clase y luego establezca el valor de la variable de clase y lo muestre en la pantalla:

nombre de usuario = "Fred"; echo $miembro->nombre de usuario; // Imprimir "Fred" ?>

Ejecute este código, mostrará la cadena "Fred", el valor de la variable de clase $miembro->nombre de usuario. Como puede ver, opera con una variable de objeto como con una variable normal: puede establecerle un valor y leerlo.

Agregar métodos a una clase

¿Qué pasa con la creación de métodos? Como mencioné anteriormente, los métodos son simplemente funciones regulares que forman parte de una clase. Por lo tanto, es posible que no le sorprenda que se creen utilizando la misma palabra clave de función. La única diferencia con la creación de funciones normales es que también puedes agregar uno de los identificadores de acceso (público, privado, protegido) a su declaración. De esta forma, los métodos son similares a las variables de clase:

Clase Nombre de clase ( función pública Nombre de método() ( // (código) ) Función privada Nombre de método() ( // (código) ) Función protegida Nombre de método() ( // (código) ) )

Nota: al igual que en el caso de las variables de clase, los métodos públicos se pueden llamar desde cualquier lugar, los métodos privados solo se pueden llamar dentro de la clase y los métodos protegidos se pueden llamar desde la propia clase y su descendiente.

Intentemos agregar algunos métodos y variables de clase a nuestra clase:

  • Variable de clase privada $loggedIn para identificar al usuario, es decir. si entró o no,
  • método login(), que iniciará sesión en el foro estableciendo la variable de clase $loggedIn en verdadero,
  • método logout(), que cerrará la sesión del foro configurando la variable de clase $loggedIn en falso,
  • Método isLoggedIn(), que devolverá el valor de la variable de clase $loggedIn.

Aquí está nuestro código:

iniciado sesión = verdadero; ) función pública cerrar sesión() ( $this->loggedIn = false; ) función pública isLoggedIn() ( return $this->loggedIn; ) ) ?>

Es posible que hayas notado que utilizamos una nueva palabra clave $this. En el contexto de los métodos de un objeto, la variable especial $this se refiere al objeto mismo. Al usar $this en un método de objeto, el método puede acceder a cualquier variable de clase y método del objeto.

Por ejemplo, el método login() puede acceder a la variable de clase $loggedIn del objeto a través de $this->loggedIn.

Por cierto, nuestra variable de clase es privada, por lo que no se puede llamar desde ninguna parte del script, sino solo desde los métodos login(), logout() e isLoggedIn(). Este es un buen enfoque porque los aspectos internos del objeto (como cómo registra exactamente si el usuario ha iniciado sesión o no) están separados del resto del código. Siempre que sea posible, intenta utilizar variables de clase privada para que tus objetos sean autónomos, móviles y protegidos.

Nota: la variable de clase $username en nuestro ejemplo es pública. Hice esto sólo para demostrar cómo se puede acceder a las variables de clase de un objeto. En proyectos reales, preferiría hacer que esta variable sea privada y crear variables de clase pública especiales para establecer valores de nombre de usuario si es necesario.

Usando métodos

Para llamar a un método en un objeto, utilice el operador ->, con el que ya está familiarizado.

$objeto->nombremétodo()

Esto funciona igual que llamar a una función normal. Puede pasar argumentos entre paréntesis (asumiendo que toma algún argumento, por supuesto), y la llamada al método también puede devolver valores específicos que luego puede usar.

iniciado sesión = verdadero; ) función pública cerrar sesión() ( $this->loggedIn = false; ) función pública isLoggedIn() ( return $this->loggedIn; ) ) $miembro = nuevo miembro(); $miembro->nombre de usuario = "Fred"; echo $miembro->nombre de usuario. "es". ($miembro->
"; $miembro->login(); echo $miembro->nombre de usuario . " es " . ($miembro->isLoggedIn() ? "ha iniciado sesión": "desconectado") . "
"; $miembro->logout(); echo $miembro->nombre de usuario . " es " . ($miembro->isLoggedIn() ? "ha iniciado sesión": "desconectado") . "
"; ?>

Este script mostrará lo siguiente:

Fred está desconectado Fred está conectado Fred está desconectado

Así es como funciona:

  1. Después de describir la clase Miembro, creamos su objeto y lo almacenamos en la variable $miembro. También le dimos a la variable de clase $nombre de usuario de este objeto el valor "Fred".
  2. Luego llamamos al método $member->isLoggedIn() para determinar si el usuario ha iniciado sesión o no. Este método simplemente devuelve el valor de la variable de clase $loggedIn. Dado que el valor predeterminado de esta variable de clase es falso, el resultado de llamar a $member->isLoggedIn() será falso, por lo que se mostrará el mensaje "Fred ha cerrado sesión".
  3. Luego llamamos al método login(). Establecerá la variable de clase $loggedIn en verdadero.
  4. Ahora, al llamar al método $member->isLoggedIn(), devolverá verdadero y mostrará el mensaje "Fred ha iniciado sesión".
  5. Llamemos al método logout(), que establece el valor de la propiedad $loggedIn en falso.
  6. Llamemos al método $member->isLoggedIn() por tercera vez. Ahora devolverá falso porque la propiedad $loggedIn se establece nuevamente en falso. Entonces, se mostrará nuevamente el mensaje "Fred ha cerrado sesión".

Nota: en caso de que hayas visto esto primero: ?: es un operador ternario. Esta es una versión simplificada de los bloques if...else. Puedes aprender sobre este tipo de operadores.

conclusiones

En este tutorial aprendiste los conceptos básicos de la programación orientada a objetos en PHP. Aprendiste sobre cosas como:

  • ¿Qué es la programación orientada a objetos y por qué es útil?
  • conceptos de clases, objetos, variables de clase y métodos
  • cómo crear clases y objetos
  • cómo crear y usar variables de clase
  • conceptos de identificadores de acceso públicos, privados y protegidos
  • cómo crear y utilizar métodos de clase

Ya ha aprendido mucho al respecto y aprenderá mucho más en las siguientes lecciones. Sin embargo, si ha trabajado con todos los ejemplos que le he dado, tendrá una base sólida. Puede comenzar a crear aplicaciones usando programación orientada a objetos.




Arriba