Programación orientada a objetos en PHP: la manera correcta | John Morris | Skillshare
Menú
Buscar

Velocidad de reproducción


  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x

Programación orientada a objetos en PHP: la manera correcta

teacher avatar John Morris, I help freelancers get clients.

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Qué es la programación orientada en objetos

      23:45

    • 2.

      clase, propiedad, objeto, método

      15:30

    • 3.

      Constructores

      8:45

    • 4.

      Visibilidad

      8:15

    • 5.

      Herencia

      12:31

    • 6.

      Métodos y propiedades estáticas

      12:48

    • 7.

      Espacios de nombres

      9:26

    • 8.

      Autoload

      15:20

    • 9.

      Interfaces

      6:30

    • 10.

      Primer de MVC

      26:10

    • 11.

      Cómo construir aplicaciones profesionales con OOP

      43:19

    • 12.

      Próximos pasos

      1:16

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

2042

Estudiantes

2

Proyectos

Acerca de esta clase

Aplicaciones de cliente y de objetos son lo que quieren de clientes y employers lo que la mayoría de los desarrolladores están tienen problemas de aprender a hacer. Pero, ¿qué si podrías aprender cómo construir estos usos en las siguientes horas de tiempo?

¿Qué tipo de puertas te abrirían para ti?

El problema es de ..de la formación que encontrarás en la programación orientada a objetos en PHP es confusos de hell. Algo de la persona de clase con tres brazos que pueden de ejecutar () y Jump()... ¿¿eh? Dejes más confusión que cuando empezaste.

Eso es para que hice este curso.

No soy un programador naturalmente talentado.

Así que no de lo que de lo "obtienes. Tengo que luchar de lucha y frustrar y quiero lanzar mi computadora de la ventana como todos los demás. Así que para aprender cualquier nuevo, tengo para desglose y entender toda parte antes de que pueda unir todo y de que pueda tener sentido.

Así que, eso es lo que he hecho en este curso.

Te guio a través de mi proceso de aprender OOP... los ejemplos de jerga y confuso. Te enseño fundamentos de la programación orientada en objetos en PHP y te mostraré cómo unir todo para crear aplicaciones orientadas en objetos.

Las lecciones incluyen:

  1. ¿Qué es la programación orientada de Object-Oriented Objeto?
  2. clase, propiedad, objeto, método
  3. Constructores
  4. Visibilidad
  5. Herencia
  6. Métodos y propiedades estáticas
  7. Espacios de nombres
  8. Autoload
  9. Interfaces
  10. Primer de MVC
  11. Proyecto de clase: cómo construir una aplicación profesional con programación orientada en objetos

Es un lot, obvio todo lo que necesitas para dominar a OOP en PHP. Así que, si estás listo para abordar a OOP en PHP, enroll y comencemos.

Conoce a tu profesor(a)

Teacher Profile Image

John Morris

I help freelancers get clients.

Profesor(a)

Click here to start this class

Ver perfil completo

Habilidades relacionadas

Desarrollo Lenguajes de programación PHP
Level: Intermediate

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Qué es la programación orientada en objetos: Hola, John Morse. Aquí. John Morse online dot com. Esta lección. Te vamos a dar un poco de introducción a la programación orientada a objetos. Habla de lo que es la programación orientada a objetos, por qué podrías querer usarla y realmente, ojalá solo te dé una base de conceptos y conocimientos y comprensión que luego podemos construir a medida que luego nos adentramos en el código. Entonces dicho eso, esto es exactamente de lo que vamos a estar hablando. Vamos a, ah, ah, definir la programación orientada a objetos. Vamos a hablar de algunos del método de propiedad de clase de palabras clave reservadas y luego también hablar de diferencia entre clases y objetos. Te voy a dar alguna analogía. Esperemos que sea, ojalá un poco más informativo que los que me ocupé cuando estaba aprendiendo todo esto. Esperemos que nos ayude a dejarlo un poco más claro, y luego hablaremos de por qué querrías usar la programación orientada a objetos y por qué se ha vuelto una especie de cosa tan grande y generalmente se recomienda en la mayoría de las situaciones. Está bien, así que esa es una agenda D. Vamos a sumergirnos en esto entonces. Entonces hablemos de la definición, así que voy a pasar por esto y señalarle cosas que creo que son importantes. Por lo que la programación orientada a objetos es un modelo de lenguaje de programación. Ahora quiero enfocarme en este modelo de palabras. También podrías usar la palabra yo pienso, estilo o acercamiento o paradigma, cualquiera que sea la palabra que trabaje ahí para ti. Pero lo que hay que entender del objeto durante la programación es que no es como ningún conjunto diferente de tecnología o lenguaje diferente ni nada por el estilo. Es solo un enfoque o estilo o modelo diferente de la forma en que se avanza sobre la programación. Y está organizado, como dice la definición aquí alrededor de objetos en lugar de acciones y alrededor de datos en lugar lógica tan bien, sólo continuaremos aquí. Históricamente, un programa ha sido visto como un procedimiento lógico que toma entrada, datos, procesa, lo procesa y produce salida. Entonces un buen ejemplo de esto es si tomaras, digamos, un solo tipo regular de forma PHP, que, realidad, en muchos casos es el bloque de construcción de cualquier aplicación si realmente lo piensas. Pero solo toma un tipo regular de formulario HTML que enviarías a través de PHP en y almacenarías en una base de datos de mi secuela. Generalmente, la forma en que eso se ha hecho o la forma en que la gente lo pensaría es que comenzarías con tipo de interfaz de usuario, que es la forma que tomarías los datos que hay ahí y tu lenguaje de scripting real de tu lenguaje de programación. PHP lo pensaría en términos de lo que necesito hacer para procesarlo. Pensaría en ello como más una acción y la lógica necesaria para cumplir con esa acción. Por lo que es muy autónomo en un sentido que sólo le preocupa esa forma lo que se necesita hacer para procesarla y finalmente almacenarla en la base de datos. Y luego, claro, si vas a recuperar esos datos, entonces tienes todo un conjunto de actos, otra acción y la lógica necesaria para realizar esa acción. Por lo que el código procesal generalmente se enfoca en torno a esta idea de acciones enviando este formulario, almacenando estos datos aquí recuperando estos datos, mostrándolos aquí, etcétera, y así fue como habían sido las cosas hecho por mucho tiempo. El problema con eso es que cuando comienzas a construir aplicaciones más avanzadas, si solo te estás enfocando en acciones y realmente no te estás preocupando con el resto de la aplicación. Cuando estás construyendo otra parte de ella, comienzas a volver a usar mucho código. Empiezas a tener cosas que pueden entrar en conflicto entre sí, y terminas con este tipo realmente grande de potencialmente desorganizado Ah, sólo tipo de biblioteca de código que no necesariamente tiene ningún tipo de organización. Y cuando sí empiezas a organizarlo, lo que te encontrarás haciendo es organizarte de una manera que siga, junto con los principios Cooper o principios orientados a objetos. Y así que realmente la programación orientada a objetos está tomando esa idea de Hey, ¿cómo podría organizar esto un poco mejor y realmente solo tipo de extrapolarlo y PHP ahora soportándolo con algunas de las funcionalidades que ha salido con ella y así sucesivamente dedo del pie donde se puede hacer eso? Entonces a medida que continúa la definición, el reto de programación se vio como cómo escribir la lógica, no cómo definir los datos. programación orientada a objetos toma la opinión de que realmente nos importa lo que realmente nos importa, de los objetos que queremos manipular en lugar de la lógica requerida para manipularlos. Y ese es un punto realmente importante, porque cuando piensas en una aplicación, empiezas a descomponerla. En última instancia, lo que sí te importa son los objetos. Entonces, por ejemplo, si estás trabajando con la CIA, CMS, no necesariamente te importa exactamente la lógica que es necesaria para que un usuario cree un derecho de publicación, sin embargo tienes que hacer eso es algo trivial al hecho de que lo que importa al programa es que el usuario un objeto puede crear. Eso es básicamente un método o una acción. Otro objeto el post. De acuerdo, entonces tienes dos objetos, el usuario en la publicación y tienes una acción la cual es crear o editar o eliminar o categorizar etcétera. Y así cuando empiezas a mirarlo de esa manera, lo que te das cuenta es que una aplicación es realmente solo una colección de objetos y acciones , sus usuarios creando usuarios de post, eliminando usuarios de post, categorizar usuarios de publicaciones, crear categorías, usuarios crear etiquetas, etcétera, etcétera, etcétera. Entonces, cuando comienzas a pensarlo de esa manera, realidad estás pensando en ello de la forma en que funciona la propia aplicación y última instancia, la forma en que el usuario final se va a relacionar con ella, verdad? Entonces al usuario no le importa cómo se crea el Post en el back end. Todo lo que les importa es que se cree el Post. Y así nos permite escribirlo de una manera que hace más está más en línea con cómo funciona realmente el programa y como resultado, también ser mucho más organizado, no repetir, un montón de código y todo tipo de diferentes ventajas en las que nos vamos a meter, ¿verdad? Entonces esperemos que eso te dé un poco de comprensión más clara de lo que sabes, qué programación orientada a objetos es en alguna de las razones por las que, inicialmente, por qué quisiéramos usarla. Entonces a continuación hablemos de algunos conceptos básicos de programación orientada a objetos, y estoy como limitando esto principalmente a PHP solo porque eso es lo que es este curso. Entonces, uh, lo primero es lo que llamaríamos la clase. Ahora mucha gente piensa que las clases, en realidad lo que estás creando y como el codificador que es realmente esa es la parte que tu que realmente estás escribiendo. Pero no es lo real en sí mismo no va a hablar de eso. Lo que eso significa aquí en tan solo un segundo. Pero la forma de pensar en las clases es en realidad el proyecto para crear el proyecto. Entonces cuando estás escribiendo una clase no estás creando un objeto. Estás creando el blueprint bruto para un objeto para que se cree en un punto posterior. De acuerdo, así que recuerda, la clase es realmente el plano. Y luego dentro de una clase, vas a tener las dos cosas principales. Vas a tener nuestras propiedades y métodos. Por lo que las propiedades son variables que pertenecen a un objeto. Lo que eso realmente significa en general es que es algo que describe el objeto. Entonces, por ejemplo, si tomas un puesto, sería el título del Post. Son los datos sobre el proyecto en particular ahí. El objeto en particular, un método son acciones que o bien el objeto puede tomar o que se pueden tomar sobre el objeto. Entonces, por ejemplo, tienes un usuario mientras un usuario puede crear una publicación. Por lo que es el usuario tomando una acción en la creación de una publicación. Pero también es la publicación como un objeto en sí mismo siendo creado, Así que es un objeto tomando una acción. También es otro objeto de opción teniendo una acción tomada al respecto. De acuerdo, entonces pero lo que hay que tener en cuenta es que las propiedades son más como solo características. Sus datos que describen los métodos del objeto son cosas relacionadas con la acción que se pueden hacer o se pueden hacer a la derecha. El objeto, entonces, es lo real. Volveremos a eso en un segundo y luego en Stan Shih ation o dos en Stan ella comió es la acción de crear un objeto a partir de una clase. Entonces otra vez, la clase es el plano. El objeto es lo real que se crea a partir de la clase. De acuerdo, así que ahora vamos a saltar a algunas analogías porque sé que cuando inicialmente aquí eso probablemente puede ser un poco confuso. Pero sigamos adelante y veamos alguna analogía. Entonces la primera analogía es la analogía de la casa. Y así la forma de pensar en esto es la propia casa. Cuando todas las casas construyeron la cosa rial que existe que ha sido construcción construida con madera y tejas y citando todo eso, la acción para que solo estés en el mundo real, olvídate del recubrimiento por un segundo. Si solo estás en el mundo real, mirando la casa. Esa casa es el objeto en sí. De acuerdo, entonces cuando estamos haciendo objeto durante la programación ¿Qué? En realidad estamos creando nuestras cosas rial. El objeto real. De acuerdo, ahora, los planos de la casa son de la clase. Entonces cuando estás escribiendo la clase, realmente solo estás escribiendo planos. Vale, Ahora, dentro de esos planos, lo harías tú Y aquí es donde se puede poner un poco complicado, pero es capa abstraída. Por lo que se hablaría de cosas en los planos, como el color, tal vez dar forma al número de ventanas, todo ese tipo de cosas. Todas las propiedades, características de aire de la casa que la hacen única esa casa de otras casas por ahí . Pero no necesariamente dirías de qué color o qué forma o qué número de ventanas, al menos en cuando lo pensamos. En cuanto a programación orientada a objetos, todo lo que estás diciendo es que puede tener un color. Podría ser de cualquier color, pero puede tener un color o una forma o un cierto número de ventanas otra vez. No estás sordo necesariamente definiendo cómo son esos detalles específicos en realidad. Los métodos, entonces, son las acciones que ya sea la casa puede tomar o se pueden tomar sobre la casa. Entonces edificando la casa, calentando la casa, vendiendo la casa, llevando un martillo a un costado de la casa, cualquiera que sea cualquier tipo de acción relacionada con este objeto en particular o los métodos, y luego la construcción real es la instancia que ella ation. Entonces en Stan Shih ating ah, clase y creación de un objeto es la construcción real del objeto a partir de los planos. Entonces estás construyendo la casa a partir de los planos que creaste en la clase y en la clase. Tienes diferentes propiedades y métodos que esa casa puede tener. Y es en Stan Shih ation donde harías donde dirías, o designarías cuál es el color, cuál es la forma, cuál es el número de ventanas. No, es un poco eso está un poco confundido, porque no tienes que declarar siempre todas esas cosas y decir un método constructor. Cuando crea la clase, puede definir esas propiedades explícitamente de antemano. Eso se puede hacer, pero así entender. Puedes tener unos que estén definidos explícitamente de antemano, o puedes tener unos que definas cuando tú y Stan se lo comieron, pero colorea un ejemplo realmente bueno, justo si tuvieras un conjunto de planos para crear una casa, esos planos no necesariamente te dirían de qué color va a ser el avistamiento en la casa. Simplemente dirían que va a tener citación. Y tú irías con el dueño de casa. Diría, Oye, Oye, ¿de qué color citando quieres o qué tipo de encimeras no quieres que se otorguen? Quieres canchas o quieres algo más, ¿verdad? El dueño de casa sería capaz de recoger todas esas cosas, y en realidad no afectaría tu construcción. Entonces no tienes que definir esas cosas específicamente, uh, en los planos. Pero lo que estás definiendo es que hay citando, y que va a haber algún tipo de mesas. Entonces cuando realmente lo construyes, es cuando determinarías esas cosas es la misma idea aquí hay ciertas propiedades que no tienes que definir, Ya sabes, el color de la casa que puedes en la clase real. Se puede definir eso cuando tú y Stan se lo comieron. De acuerdo, entonces, nuevo, la casa es el objeto. Los planos son la clase que en postura ocho esa clase para crear el objeto y Por supuesto , ese objeto tendrá ciertas propiedades y métodos asociados con él. Muy bien, echemos otro vistazo a la analogía del auto. Entonces otra vez, si estamos hablando de un auto, el auto en sí es el objeto es el real va a re una cosa mundial. El modelo tres d del auto que podría estar en una computadora que se está construyendo a partir de eso sería la clase contra el plano o el modelo. Ya sabes, el color del auto no necesariamente el color específico, sino que tiene un color. El tamaño del motor, las ruedas excepto esas son todas propiedades. Sus datos sobre los métodos del automóvil son cosas que el automóvil puede hacer o se puede hacer al automóvil. Así que arranca el auto, conduce el auto, gira el auto y la fabricación o construcción real del auto Es thean postura. Ver ation. De acuerdo, entonces otra vez, sólo quiero tratar de realmente hacer la diferencia está clara. El objeto es lo real que se crea. El tipo son los blueprints para crearlo, y la forma en que lo creas es por instancia ating. Una instancia de ese objeto de la clase del blueprint que es lo que la instancia asiática es y otra vez con lo bonito del objeto. La programación de Dorian es porque no estás diciendo específicamente de qué color tiene que ser algo . A modo de ejemplo, podrías crear un auto azul o un auto rojo o un auto verde, o podrías, en una instancia, cuando instancias, comer la clase. Se podría decir que esta instancia particular de las clases van a ser de este objeto o lo que sea va a ser azul. Aquí, va a ser verde. Aquí, se va a leer, etcétera, etcétera, por lo que podrías tener múltiples instancias de la misma clase que tengan diferentes propiedades asociadas. Um, de hecho, si vuelves a echar un vistazo a un CMS todos los posts individuales que tienes en un blawg, por ejemplo, esos son objetos diferentes, esos aire, diferentes instancias de la clase. En la clase no te dice cuál es el título del post ni cuál tiene que ser el contenido del post . Simplemente te dice que hay un título, que hay una descripción. Ahí hay contenido. Hay una categoría de etiqueta, etcétera, por lo que cada fila en tu base de datos de tu for post es realmente y diferente instancia de esa clase en particular. O es un objeto diferente que has almacenado en tu base de datos. De acuerdo, entonces otra vez, sé que algunos de ustedes que solos tienen sentido. Algunos de ustedes eso sería como, OK, ya sabes, sigo un poco confundido. O quizá ahora estoy más confundido. El asunto de esto es que ahora hay cosas en tu cerebro. Entonces cuando nos metamos en el código real y empecemos a usarlo, algunas de estas cosas esperemos que empecemos a hacer click para ti un poco más. Y si no, vuelve y mira esto y solo como que rebota un poco entre los dos si es necesario. Ah, para que realmente se lo aclare porque en realidad, sólo estamos tratando de sentar las bases aquí. No es necesariamente necesario, o incluso necesariamente cierto que lo vas a entender por completo todo aquí. De verdad tienes que empezar a trabajar con él para que eso suceda. Está bien, así que hablemos de algunas de las razones por las que querrías usar la programación orientada a objetos . Probablemente seamos la más grande, más importante o la que se ha hablado mucho es lo que se llama encapsulación. Y lo que eso significa son tus datos agrupados con los métodos que operan en esos datos. Entonces nos vemos bastante literalmente sólo cubierto exactamente lo que es eso. El aire de propiedades, realmente, los datos y los métodos son los métodos que operan sobre esos datos. Entonces lo que está pasando es que estás juntando esas dos cosas en una sola clase, y lo que eso te permite hacer es construir clases individuales que hagan cosas específicas muy individuales para que puedas crear, digamos, una publicación clase. Y esa clase tendrá todos los datos necesarios para que construyas un objeto y almacene esos todos los datos necesarios para eso en la base de datos. Tendrá definidas todas esas propiedades, junto con los métodos que te van a permitir interactuar con ese post de cualquier manera aire necesario para crearlo, agrégalo para eliminar etcétera. Entonces esa será una clase. Entonces podría tener otra. Esa es una categoría que tiene todos los datos y métodos. Para eso tengo otro que está etiquetado para todos los métodos y datos. Para eso, podrías tener otro. Ese usuario para todos los métodos y datos para eso. Entonces estás pensando en la aplicación en cuanto a los objetos reales y cosas que están dentro de las publicaciones de la aplicación, categorías, etiquetas, etcétera, y los estás organizando por esos cosas y mantenerlas muy encapsuladas para que Ah, no lo estés. No estás mezclando y emparejando abrigo por todo el lugar. Y eso lleva a que las edades sean mucho más organizadas y más fáciles de trabajar, por lo que hace que sea más fácil escalar. Ah, especie del principio seco, que se observa aquí bajo el inherente pozo de SA. Pero también sucede aquí no necesariamente vas a estar reutilizando un montón de código y así sucesivamente. Por lo que la encapsulación es lo grande conduce a sólo un tipo más limpio, más organizado , más eficiente, más escalable. Aplicación. La herencia es otra, por lo que la herencia es esencialmente, el Es un proceso que permite a los objetos adquirir las propiedades de los objetos de otra clase, por lo que esencialmente se puede extender sobre el objeto, y cuando se extiende, se puede extender una clase. Cuando amplías esa clase. Básicamente, la nueva clase que estás creando inherente a todas las propiedades de la clase que está extendiendo y puede tener acceso a esos métodos y así sucesivamente. Y así te impide tener que hacerlo si quieres agregar o trabajar con o quieres usar una clase en particular, pero quieres agregarle cosas, no tienes que reescribirla por completo. Simplemente puedes extenderla y luego agregarle lo que quieras agregarle. Te impide volver a tener que reescribir un montón de código, no te repitas y mejora la usabilidad y todo ese tipo de cosas. Entonces la herencia es otra razón por la que la última es lo que se llama polimorfismo. Por lo que diferentes instancias pueden tomar diferentes formas. Esto es básicamente de lo que ya hemos hablado, que es una instancia, sabes, el auto se puede leer otro azul completo, otro puede ser verde y nada cambia en la clase. No cambias de clase para nada. Todo lo que haces es cambiar la información o los datos que pasas a la clase cuando haces instancia sentada, o cuando estás trabajando con los métodos o en base a ciertas condiciones y así sucesivamente, puedes cambiar el objeto que obtienes de la sin tener que cambiar el propio plano. Por lo que nuevamente crea un nivel de flexibilidad para su aplicación. También lo hace de nuevo. Entonces no estás repitiendo tu código. Entonces eres más reutilizable de nuevo, más escalable, todo ese tipo de cosas. Y así es que por eso ves que la programación orientada a objetos se convierte en este tema realmente candente realmente muy recomendable y en la mayoría de los casos es algo que te gustaría usar. Ahora hay algunas instancias, y esto es realmente probablemente polémica, podría decir que es altamente polémico. Pero diría que hay algunas instancias en las que el programa orientado a objetos no es necesariamente la mejor manera de hacer las cosas bien. Entonces el buen ejemplo de que me gusta usar sus temas de WordPress ahora partes de temas de WordPress absolutamente deben ser clases. Hay cosas individuales que te gustaría hacer en un tema. Por ejemplo, Nación Paging podría estar en un buen ejemplo donde hay una serie de cosas que necesitabas hacer para poder paginar en ocho correctamente, y todas esas cosas están relacionadas entre sí para que puedas agrupar todas esas cosas juntos, y puedes usar esa clase para manejar esencialmente esa parte de De las cosas bien. Por lo que tendrías que seguirías teniendo clases dentro de tu tema de WordPress. Pero lo real cuando creaste el tema de WordPress, creas un archivo de funciones, ¿ verdad? El acto que real funcionará archivo donde lo que es esencialmente especie de se convierte en su controlador. Si estás pensando en esto en términos de ah M V C mall de puedes controlador tipo configurar que funciones pensadas tipo de se convierte un poco en tu controlador. Es discutible si construir una clase en el controlador real y usarla ahí. Creo que es discutible si eso realmente te ayuda o por solo crea gastos generales innecesarios . Y así otra vez hay. O tal vez estás construyendo,ya sabes, ya sabes, un simple tú literalmente o construyendo un solo formulario en tu página web, ¿ verdad? Y no se va a convertir No es esta enorme aplicación que vas a construir. O si lo hiciera, entonces lo entenderías. Vale, Ahora probablemente debería cambiar y empezar ah, usando ah , tomando el enfoque orientado a objetos y ese tipo de cosas. Pero es literalmente una forma que vas a procesar bien, es realmente necesario construir una clase entera para todo eso? Ciertamente podrías Y si eres como un stickler para ese tipo de cosas, entonces por todos los medios. Pero no es realmente necesario, necesariamente cualquier ventaja para hacerlo de esa manera. De acuerdo, entonces hay instancias en las que la programación orientada a objetos no es necesariamente ningún tipo de ventaja y tal vez incluso agrega algunos s sobrecarga necesaria. Pero si estás construyendo una aplicación, si estás sentada, voy a construir un CMS. Voy a construir una red social. Voy a construir ah e commerce un tipo de aplicación donde vas a tener una serie de partes móviles diferentes. Vas a tener una serie de objetos diferentes y que están interactuando entre sí y así sucesivamente. El programa orientado a objetos es absolutamente el camino a seguir. Te va a hacer la vida mucho más fácil. Ah, va a hacer las cosas más organizadas, más escalables, más reutilizables, todo ese tipo de cosas. Por lo que absolutamente debes usarlo en esas instancias particulares. Está bien, Entonces, como dije, no, eso como lo hará para esta lección. Pero como dije, no es realmente necesario que todo eso tuviera un 100% de sentido completo. Ahora está en tu cabeza. Ya lo has oído. Y conforme entramos en el código, entonces deberías empezar a Seymour ejemplos claros de las cosas de las que hemos hablado, y ojalá empiece a juntarse para ti. Entonces otra vez, lo haré por esta lección. Gracias por ver. Hablaremos con la próxima vez. 2. clase, propiedad, objeto, método: tampoco. John Morse. Aquí, John Morse online dot com. Esta lección. Vamos a pasar por la sintaxis básica de clase. Entonces te voy a mostrar cómo crear una clase cómo crear una propiedad dentro de la clase, cómo crear un método. Tenía dos instancias Ian una instancia de esa clase y luego cómo llamar a un método de nuestros objetos recién creados. Entonces esto te va a dar toda la gama de tipos de los conceptos de los que hablamos y mostrarte cómo utilizarlos realmente aquí en PHP. Por lo que se puede empezar a trabajar con el dedo del pie construir sobre este tipo de marco. Entonces este es un marco en el que vamos a construir y a partir de todo el resto de clase, por lo que crear una clase es realmente bastante simple. Solo necesitas la palabra clave class. Entonces eso es clase. Y luego necesitas nombrar a tu clase. Entonces hagamos algo como mi clase. Ahora puedes nombrar a tu clase lo que sea. Um, pero el tipo de estándar para cómo lo llamas es usar caso de camello. Por lo que mayúscula M mayúscula C. Eso no se requiere. No va a lanzar algún tipo de aire ni nada por el estilo que simplemente es tiende a ser la convención entre los desarrolladores de PHP, por supuesto. Haz lo que quieras, siempre. Pero, uh, si estás buscando cuál es el tipo de estándar, eso es lo que es. Entonces una vez que tenemos la palabra clave class que tenemos el nombre de nuestra clase y todo lo que necesitamos es abrir corchete rizado y luego una ropa, por supuesto, un corchete rizado de cierre. Y esa es esencialmente nuestra clase. Todo lo demás que vamos a hacer fuera de en postura, comer y va a pasar dentro de aquí. Entonces cuando hablamos de crear un blueprint, aquí es donde estás creando tu blueprint por dentro, y va a ser lo que va a ser es colección de propiedades y métodos. Por lo que la forma de tal vez relacionar esto con el código procesal está en código procesal. Muchas veces podrías crear un archivo de conflicto, y en ese archivo de conflicto, tienes Constance y luego a lo largo del resto de tu código, tu función o podrías crear variables globales. Podrías crear variables en el espacio global, uh, nombre, uh, nombre,es decir, fuera de una designación de función, y luego dentro de funciones podrías globalizar, usar la palabra clave global y luego usar esas variables que se crearon fuera de la función dentro de la función. Bueno, esta es una idea de tipo similar en el sentido de que las propiedades aire como, Ah, hay algo así como Constance para tu clase. Creas una propiedad en la parte superior fuera de tus funciones, o son como si fueran más como variables globales. Creas, Ah, variable fuera de tus llamadas de función en la parte superior de tu clase, y luego puedes usar esas variables dentro de tus funciones sin tener que globalizarlas . Entonces, en cierto modo, una clase es realmente sólo una especie de espacio de nombres. Es una forma de algo que puedes envolver todas tus funciones en tus propiedades dentro de, y realmente solo funcionan dentro de ese espacio de nombres en particular, y podrías usarlo. Podrías usar el mismo nombre de variable fuera de la clase, y los dos no entrarían en conflicto. Ahora hay algunas adversidades y excepciones a esas cosas, y vamos a pasar por eso. Pero sólo en un sentido general, eso es una especie de lo que esto es ahora de nuevo, hablamos de que vamos a programación orientada a objetos en realidad está en la idea detrás de ella, y el hecho de que pudieras escribir y poner todas tus cosas dentro de clase y aún así realmente no estar haciendo objeto durante una programación volverá a hacerlo. Nos sumergemos en eso algunos más a medida que avanzamos. Pero quiero darles esta base, estos tipos basados de conceptos y sintaxis. Entonces una vez que hemos creado nuestra clase, ahora podemos crear nuestras variables y nuestros métodos. Por lo tanto, crear una variable es bastante sencillo. Simplemente lo haces. Usas el ah, usa esto. Identifícala aquí. Ahora hablaremos en un poquito. Éstos eran públicos, privados, protegidos. Hablaremos de thes el y cómo eso afecta el alcance y el uso y demás. Pero ah, por ahora, nos quedaremos con público, y luego solo usas esta sintaxis de r igual a me gusta. Es como crear una variable, en cierto sentido, por lo que es bastante sencillo y que esa es una propiedad de clase. Entonces otra vez, nada demasiado loco en eso ahora, para volver a crear un método, usamos aquí la palabra clave pública, y luego creas tu función. Y luego, claro, vas a hacer tu nombre de función así que solo haremos mi función y haremos nuestros corchetes rizados de apertura . Entonces, de nuevo, esto es justo como una designación de función regular que te acertarías. Simplemente agregamos esta palabra clave pública al inicio de la misma. Y realmente no te preocupes demasiado por eso, porque es voy a explicar lo que significa. Pero no es tan complicado o grande de una cosa. De acuerdo, hay algunas apenas alguna diferencia en las áreas donde podrías usar una u otra, pero no es nada que sea excesivamente complejo y sería difícil de entender. Tan grande el nombre de nuestra función. Y luego dentro de esto, vamos a hacer algo así que aquí solo haremos eco y usaremos la palabra clave esta y luego vamos a, uh, echo var. De acuerdo, entonces déjame explicarle esto. Siempre que estés dentro de tu clase así, puedes usar esta palabra clave aquí mismo. O tienes que usar esta variable que cuando creas una clase, esto básicamente se vuelve disponible y puedes usarlo para llamar ya sea propiedades dentro tu clase o funciones para que pudiéramos hacerlo no tendría sentido dentro de aquí, Pero podríamos hacer así mi función para llamar a nuestra función. De acuerdo, entonces la forma en que hace referencia a propiedades y métodos dentro de una clase es usar esto usando esta variable y luego ah, este puntero y luego el nombre de la variable o la propiedad o la función o el método por lo que y por si acaso no está claro. Dentro de una clase, variables o propiedades frías y, uh, funciones se denominaron métodos. Entonces si intercambio esos dos, perdóname un poquito en eso. Pero esa es la Esa es la idea básica. Por lo que de nuevo se puede hacer referencia a los que usan esta ah, variable aquí. Y así eso es y eso es lo que hacemos aquí con el fin de referenciar, son variables aparecen ahora. El saludo a esto es que hablaremos de clase Constance y así sucesivamente y funciones estáticas y así sucesivamente aquí en un poco y pocas lecciones por delante. Pero esto sólo funciona cuando esto se pone instancia, sentado como instancia de un objeto. Ahora, en la mayoría de los casos, eso no va a importar, porque eso es lo que vas a hacer de todos modos. Pero si estás creando una función estática, no puedes usar la esta dentro de ella porque ningún objeto estaba sentado cuando vuelves a usar una función estática ah nos meteremos en eso más en un poco. Pero eso sólo va a empezar. Estás pensando un poco en eso ahora. Entonces otra vez, estamos destrozados. Entonces, ¿qué debe hacer esta función en realidad? Si llamamos a esta función, debería hacerse eco. A mí me gusta Coop. Eso es en última instancia lo que esto debería hacer. Por lo que ahora, dos instancias se comen una nueva instancia de esto. Lo que vamos a hacer es que vamos a hacer mi clase igual a nueva mi clase. Entonces esto está en postura, comiendo una instancia de nuestra clase. Recuerda las clases, el plano. Esto es lo real que estamos creando. Este es el objeto. Entonces mi clase, esta variable es un objeto. Esto es usted sabe, si este es el plano de la casa, esta es la casa. Entonces ahora tenemos nuestra casa dentro de nuestra variable mi clase, y podemos llamar, debilitar, debilitar, referenciar cualquiera de las propiedades, cualquiera de los métodos, y construir lo que esté disponible dentro de nuestro blueprint. Nuestra clase. Podemos construir eso usando este nuevo objeto. De acuerdo, entonces ahora lo que podemos hacer es que podamos hacer eco. Bueno, en realidad, ni siquiera hagas eso. Podemos hacer mi clase y mi función y simplemente llamarlo así. Y cuando llegamos a nuestra página aquí, podía ver que conseguimos me gusta Coop. De acuerdo, así que esa es toda la idea aquí. Y lo que esto otra vez, ¿Qué esos nos permite hacer? Simplemente crear una clase no es decir, técnicamente lo es, pero en realidad no está en el espíritu de necesariamente en el espíritu de objeto durante una programación. OK, pero lo que hace es que nos da la base sobre la cual ahora podemos empezar involucrarnos en la programación orientada a objetos. Y podemos crear ah individual, clases individuales a ah, manejar la funcionalidad individual. Y ese es realmente todo el punto de esto. Es eso para cualquier tipo de cosa que quieras hacer en tu aplicación, es decir, ya sabes, más que solo tal vez una función, quieres empezar a pensar en ponerlo dentro de una clase y tener esa clase todo. Entonces, por ejemplo, si miras el CMS de la CIA, tendrás en un CMS, necesitarás crear editar actualización, eliminar publicaciones, derecha, bueno, que deberías tener una clase que esencialmente maneje todo eso. Es tu tipo de clase post y hace todo lo que se necesita hacer para ese objeto en particular. Por lo que te va a permitir crearlo. Se va a hacer toda la interacción con la base de datos que necesita suceder con tu clase de base de datos. Eso tiene que suceder para insertarlo en la base de datos. Se va a hacer toda la interacción que necesitas para sacar cosas de la base de datos al estado del estado, actualizar cosas en la base de datos, eliminar cosas en la base de datos y cualquier otra cosa que puedas querer hacer que creas pertenece a eso. Entonces ahora tienes eso todo auto contenido en una clase y todo lo que tienes que hacer en lugar de reescribir ese código cada vez, cada vez que quieras obtener un post de la base de datos, en lugar de tener que reescribir toda la base de datos vestida que es necesario para hacer eso, has creado en su lugar una función o un método dentro de tu clase que hace todo eso, y tal vez todo lo que necesitas hacer en orden. Digamos sólo esta palabra que pasas en el post yo d. Y así digamos que esto es, ah, conseguir función. Es una función de lectura. Se pasa en el puesto I d. Y hace toda la conexión conectándose a la base de datos, consiguiendo que d. de la base de datos. No tirar de esos datos, ponerlos en algo con lo que puedes trabajar, ya sea un objeto o un PHP iraní y luego devolverte eso. Entonces ahora aquí podrías ser como post es igual a mi función. Y ahora, en post, tendrías acceso a, digamos, ningún eco post título eco contenido post, etcétera. Tendrías acceso a todos los datos dentro de eso. Y entonces tal vez haya funciones de ayuda que tienes dentro de esa clase que te permiten , no lo sé. A lo mejor quieres hacer eco post, y vas a hacer formato y, ah, fecha de publicación o algo así. De acuerdo, Entonces y tal vez solo,ya sabes, ya sabes, tal vez tendrías que ponerte cuando llames a Post Date. Ya está formateado. Usted, por supuesto, podría hacer eso. Pero la idea es que puedes crear métodos que sean ayudantes o que te permitan hacer algo relacionado con ese objeto que quizá quieras hacer. Entonces toda la idea otra vez es, no es solo saber crear una clase, sino cómo tomarla. Y luego para los objetos que tienes en tu aplicación y las cosas que quieres , esos objetos sean para poder hacerte género. La regla general de oro es que vas a crear una clase para cada uno de esos que va a manejar todas las cosas que tienes que hacer ahora. Eso otra vez y yo quiero no quiero llegar demasiado confuso aquí. Pero esa es una capa secundaria que esa que esas clases se sentarían encima de, ah, ah, capa más fundacional, que sería tu clase de base de datos. ¿ Has visto alguna cosa que he hecho con las clases de base de datos? Ya sabes que esas clases tienen función. Tienen función básica de interacción de base de datos interactiva, por lo que no tienes que escribir todas las consultas. Simplemente puedes llamar a métodos desde dentro de la clase de base de datos para que tu clase de post no esté consultando directamente la base de datos. Sería llamar a métodos desde tu clase de base de datos, y así es como tú así es como capas una aplicación. Si nos fijamos en decir, por ejemplo, WordPress, tienen una clase de base de datos WordPress. Lo único que hace la clase de base de datos es interactuar con la base de datos. Por lo que hay algunos métodos, como obtener resultados Obtener fila Queary Update. Elimina etcétera que son métodos a los que llamas y no ejecutas las consultas. Acabas de pasar datos. Se pasa una información que a eso los métodos requieren los parámetros, y hace todas las cosas de la base de datos por ti conectando, ejecutando las consultas, devolviendo los resultados maneja todo eso. Entonces esa es una clase de nivel base. Pero además de eso, tienen una clase de consulta en esa consulta clases de cómo consultan publicaciones y páginas y categorías y así sucesivamente. Por lo que la clase de base de datos es una clase fundacional que es una clase de nivel base que interactúa directamente con la base de datos. Queary es una clase que nunca interactúa con la base de datos. Todo con lo que siempre interactúa es con la teoría. Clase de base de datos WordPress. Entonces otra vez, así es como capas. Es así como se usan las clases para capas de una aplicación. Y eso es lo que quiero que empieces a pensar es cómo puedo empezar a tomar todo este código que tengo que tal vez todo tipo de entrelazado entre las consultas y las vistas front-end que estoy mostrando en la base de datos es todo tipo de mezcla juntos. ¿ Cómo puedo empezar a separarlo para crear clases individuales que hagan cosas individuales Tener una clase que interactúe con la base de datos. Todas las demás clases se sientan encima de eso. Cualquier clase que quiera interactuar con mi base de datos tiene que pasar por mi clase de base de datos. Y entonces tengo,ya sabes, ya sabes, tal vez una clase de consulta o una clase de post y luego, ya sabes, tal vez tengas una clase de vistas que se sienta encima de eso, una excepción. Podríamos hablar de algo más de esas cosas, pero solo quería que tu mente pensara en esa dirección. Entonces, de nuevo, poder hacer lo que hemos hecho aquí es la base de todo eso. Entonces esa es una forma realmente, realmente sencilla sencilla de cómo crear clase, cómo crear una propiedad, cómo crear un método en postura, saliendo con una instancia de la clase y luego llamando a un método de esa clase. Entonces ojalá sacara algo de eso. Obviamente seguiremos construyendo sobre esto a medida que avancemos. Ah, el resto de estas lecciones lo veré en los próximos videos 3. Constructores: Hey ahi, John Morrissey, John Morse online dot com Esta lección. Vamos a hablar de constructores. Y entonces lo que los constructores te permiten hacer es que algo se ejecute automáticamente cuando tú y Stan sientas una instancia de un objeto. Entonces para mostrarles esto, sigamos adelante y solo copiemos aquí todo este código y abramos nuestro nuevo archivo. Y así vamos a crear una nueva función llamada Función Pública y bajo subrayado constructo. Entonces ese es el nombre. Así es como nombras al constructor. Si estás viendo tutoriales realmente antiguos, posible que veas tutoriales donde hay un método ahí dentro que tiene el mismo nombre que la clase. Entonces pudo haber sido algo así como, um, funcionar mi clase. Así se hacían los constructores en el pasado. Pero ahora hay un método constructor real que quieres usar. Creo que en este punto incluso lo hará. Si usas el nombre de la clase por un tiempo, ambos son funcionarían este método constructor y la función con el mismo nombre es la clase. No creo que la función con el mismo nombre de la clase incluso funcione, y sin importar que quieras usar esto. Se desea utilizar este método constructo aquí. Entonces lo que esto hace es cualquier cosa que pongas dentro de este método. Cuando tú y Stan declararon una incidencia de la clase, va a ejecutar este método automáticamente. No tienes que llamarlo ni nada por el estilo. Y así esto es bueno para cualquier cosa que tengas que hacer para configurar tu base de datos. ¿ Yo? No lo sé. A lo mejor hay que quieras poner si estás escribiendo una clase de base de datos, ¿quieres poner tus detalles de conexión de mi secuela ahí? Um O tal vez hay algo que tienes que hacer con Post en nuestro Hay un montón de cosas que te gustaría hacer dentro de un constructor. Pero lo principal es que corre cuando este cliente está de clases y Stan sentado. Entonces sólo una especie de mostrarte esto. Lo que vamos a hacer es que vamos a tomar este var, y vamos a cambiarlo a hombre. Coop, ¿estoy bien? Eso lo que fue lo que esencialmente hemos hecho aquí es que tenemos esta variable que hemos configurado aquí, pero ahora en nuestro constructor la estábamos restableciendo a algo diferente. Y así cuando instancia ocho una instancia de esta clase. Lo que debería pasar es que esto correrá. Y esto sobrescribirá lo que hemos establecido aquí. En realidad, muy rápido. Necesito quitar esta idea post porque en realidad no tenemos una. Y así ahora cuando vengamos aquí para hacer eco de esto, debería hacer eco de lo que hemos establecido aquí en nuestro constructor. Entonces sigamos adelante y cargemos esta página y puedes ver que nos enojamos. Hoopers, I Así que eso es lo que los constructores nos permiten hacer. Y ahora no tiene que ser solo anulando variables que podrían ser literalmente cualquier cosa que quieras hacer aquí que necesites configurar. Eso necesita correr justo cuando esta no es postura saciada de la que el resto de la clase va a depender más o menos ahora. Otra cosa que puedes hacer con los constructores e importante saber es que puedes poner variables, así que sigamos adelante y solo cambiemos una variable aquí llamada texto. Ahora, en lugar de codificar duro esto aquí, podemos deshacernos de eso. Podríamos establecer esto igual al texto. Entonces ahora lo que va a pasar es que podemos pasar el texto a nuestra clase Cuando instancia lo comamos y te mostraré que lo haces en un segundo. Podemos pasar esto y ahora son variables. Ah, de esto. Esta variable aquí se ajustará a lo que pasemos. Y así lo que tienes es un tipo de cosas bastante estándar que verás en las clases en que en la decoración variable aparecen, tendrás algún tipo de defecto. Esto ahora está sirviendo básicamente como un defecto. Y aquí No, tendrás algo con lo que puedes anular en tu constructor aquí. De acuerdo, Entonces si bajamos aquí ahora, para poder usar este texto ahora tenemos que sumar entre paréntesis y entonces podemos pasar nuestro texto aquí mismo. Entonces si guardamos eso y refrescamos que todavía vamos a conseguir May Lupas I y entonces podemos cambiar esto a cualquier cosa. Nosotros sólo queremos decir hola y se puede ver ahora eso está pasando en. Ahora, si empiezas a pensar un poco en eso, puedes empezar a ver el poder de algo de esto porque ahora puedes. Sea cual sea este texto, ahí está por lo que podrías pasar y tal vez quieras formar en este texto. A lo mejor quieres dedo del pie. No lo sé. También hay tal vez en un, uh, cambiar lo que el texto se basa en ciertas condiciones o hay todo tipo de rutinas diferentes . Podrías ejecutar este texto que fue pasado, pero literalmente podrías pasar en cualquier texto. Y así esta es toda la idea de lo que realmente es una clase cuando hablamos de Oh, en términos conceptuales, que la clase es un blueprint y el objeto es lo real. Y son los datos que se tiene cuando se come una instancia de una clase que cambia lo que se obtiene del blueprint. Entonces, lo que significa , ya sabes, un plano para una casa no te dice el color de la casa. Entonces cuando realmente vas y creas la casa, es cuando decides el color. Esta es la misma idea. Esto no te dice cuál tiene que ser el texto, ¿ verdad? No dice, De acuerdo, puede que tengamos una especie de defecto, pero en realidad no dice cuál es el texto. Se puede pasar en cualquier texto. Entonces ahora este objeto. De acuerdo, si volvemos a hacer esto en adelante se irá. Simplemente ve nueva clase y hará referencia a nueva clase aquí. Podemos deshacernos de este post cosas iguales. En realidad no necesitamos eso aquí. De acuerdo, así que quiero mostrarles esto. Por lo que tenemos dos instancias diferentes de nuestra clase. El plano es el mismo. Pero todo lo que hemos hecho es crear dos instancias diferentes y hemos pasado en diferentes datos. Entonces tenemos mi clase, y luego ejecutamos mi función. Tenemos nueva clase la cual pasa. Oye, así que si refrescamos esto ya ves, tenemos alto y tenemos Hey, esos aire literalmente dos objetos diferentes. Esos aire, dos casas diferentes. Y la forma en que los cambiamos se basa en los datos que pasamos a nuestra clase aquí. Entonces ese es el poder de esto. Nosotros cambiamos. No apareció nada para conseguir estas dos instancias. Ahora, claro, como tienes aplicaciones más complejas, vas a tener clases mawr complejas. Van a condenar o cosas complejas. Y así las diferencias aquí, y tal vez los datos que pasarás aquí o los datos que eres gráfico de una base de datos o lo que sea . lo que pase a estar haciendo, va a hacer que esos dos objetos sean muy, muy diferentes. Si lo piensas, solo toma WordPress. Si piensas en dos publicaciones diferentes de WordPress, ¿ tendrán un título completamente diferente? ¿ Tener contenido completamente diferente? Van a tener fecha de imagen destacada completamente diferente que fueron creados, tal vez autor. Realmente hay dos completamente diferentes para publicar en un blogger, dos completamente diferentes pero el blueprint de dedo de clase para llevarlos al punto que se muestran en la página y almacenar en la base de datos y todo lo que necesita suceden. La clase es la misma, por lo que puedes crear dos objetos muy diferentes a partir del mismo blueprint. Y eso es realmente lo que es la programación orientada a objetos y volver de nuevo a objetos individuales especie de tener clases individuales que tratan y manejan con manejan ahí. Están funcionalmente, no es una gorda dura, y no quiero engañar y luego decir que esa es una regla dura, rápida. Absolutamente tienes que hacer eso, pero esa es la forma general en que lo miras. Ah, al menos en una línea de base cómo se mira el objeto durante en la programación por lo que de nuevo eso es tratar con los constructores. Eso es lo que te permiten sumar a tus clases que las hacen que puedan empezar a hacerlas realmente, realmente poderosas. Entonces espero que sacaras algo de eso. Gracias por ver Hablaremos con el siguiente. 4. Visibilidad: Hola, John Morris. Aquí, John Morris, en línea dot com. Esta lección vamos a entrar en visibilidad y visibilidad trata específicamente con facilidad, designadores estas palabras clave aquí mismo. No hay calle que se pueda tener. Ahí hay público, hay protegido y hay privado. Entonces voy a copiar este código aquí mismo. Vamos a entrar en nuestro nuevo archivo, y voy a crear algo realmente rápido que ayude, creo, dejar este poco más claro. Entonces voy a crear clase. Nueva clase extiende mi clase. Muy bien, Entonces lo que esto está haciendo es que esto es crear una clase infantil. Por lo que esta clase aquí mismo, la que hace la extensión se considera el niño, y la que se está extendiendo se considera el padre. Y la razón que es porque cuando haces esto, lo que pasa es que obtienes acceso dentro de nueva clase. Obtienes acceso a todas las propiedades y métodos que están disponibles dentro de la clase padre original si no son privados, y para que eso trata son una especie de designadores ah aquí. Por lo que quiero mostrarles este tipo de arriba a abajo. Entonces cuando venimos aquí abajo y tenemos postura una nueva instancia de una clase y llamamos a nuestra función o son método mi función La razón por la que somos capaces de hacer eso Y si recargamos esta página, se puede ver que nos drogamos. El motivo por el que hacemos eso es porque este este método está puesto a público. Si entro aquí y le pongo esto a otra cosa que no sea público así que pongámoslo en privado para empezar. Si le dije eso a privado, me sale un aire. Si lo dije para proteger y luego recargamos, me meto en el aire. Entonces este es el primer tipo de designación y la forma de explicarlo. Creo que visualmente esto ayudará. Pero los métodos y propiedades privados están disponibles en Lee aquí, Onley dentro del funk o la clase y eso los creó tan privados. ¿ Están Onley disponibles aquí protegidos van a estar disponibles dentro de la clase que las creó y cualquier clase infantil bien y luego público van a estar disponibles en la clase que le creó cualquier clase infantil y fuera de la clase. Entonces para poder acceder y utilizarlo un método o propiedad aquí fuera, se tiene que poner de pie en público. De acuerdo, así que vamos a repasar algunos ejemplos. Entonces sigamos adelante y pongamos esto de nuevo a público. Y sigamos adelante y pongamos esto en privado. Ahora tu instinto podría ser Oh, no, estamos usando privado aquí y lo estamos llamando aquí. Entonces y entonces lo estamos llamando aquí, para que eso no va a funcionar. Y en realidad son que sí funciona. Y la razón es porque lo que estamos llamando aquí es en Lee el método de mi función . Es el método de mi función el que ahora hace referencia a esta variable. Y estas dos cosas están dentro de la misma clase, por lo que mi función puede usar esta variable privada. De acuerdo, entonces por eso funciona esto. No seríamos capaces de si tratáramos de bajar aquí e ir var así, no seríamos capaces de acceder de manteca de cerdo directamente por nuestra es una propiedad privada. Por lo que dice que no podemos acceder a la propiedad privada. Está bien, entonces eso es algo bueno a tener en cuenta. Y luego otro ejemplo tratando con las clases infantiles. Si venimos aquí abajo y creamos una nueva función pública funcional la llamará display y dentro de ella. Simplemente vamos a hacer eco Ah, esto y var. De acuerdo, entonces vamos a hacer eco de esta var. Recuerda, este es nuestro privado. Esta es una propiedad privada, por lo que no debería estar disponible aquí abajo. Entonces si cambiamos esto a nueva clase y cambiamos esto a ah, display y solo nos deshagamos de este relax, dejará eso por un segundo. Entonces ahora lo que estamos tratando de hacer es dentro de la pantalla. Estamos tratando de hacer eco de esta propiedad privada. Si intentamos hacer eso, ya ves, está en blanco, no conseguimos nada. Y eso es porque no tenemos acceso a esto. Ahora, si vengo aquí y cambio esto a protegido Así que ahora recuerda, protegido está disponible para la clase original y cualquier clase infantil, y vuelvo a ejecutar esto. Ahora tengo acceso a ella. Está bien. Entonces, nuevamente, esa es la diferencia entre lo privado protegido y lo público. Ahora, las instancias en las que tal vez quieras hacer esto muchas veces, es posible que tengas un método que usas dentro de una clase que Onley pretendes ser usado dentro de esa clase. Buen ejemplo. Se me ocurre es, digamos que estás creando una clase de post y digamos que cuando extraigas los datos de post de la base de datos antes de mostrarlo, quieres dedo del pie formateado de alguna manera. Entonces WordPress, por ejemplo, ¿esto tiene, ah, esta esta función ah o este método llamado WP auto Top nuestro auto WP auto P o algo así? Básicamente, lo que hace es tomar lo que obtiene del editor de texto enriquecido, que sucede para agregar saltos de línea a en lugar de etiquetas de párrafo. Entonces cuando estás escribiendo en WordPress y creas un nuevo párrafo cuando eso se guarda en la base de datos, no se guarda en etiquetas de párrafo que se guarda con etiquetas de break. Entonces, ¿qué hace WP Auto P es cuando se agarra eso de la base de datos y cambia los encendidos? Se trata de una especie de método de formato complicado, pero cambia esas etiquetas de rotura y se da cuenta en qué lugar los párrafos en los que se supone que deben estar realmente usan las etiquetas de párrafo. Entonces es solo que es una cosa de formateo. Bueno, ese método de formateo puede no ser algo que quieras disponible para todo lo demás y solo para ponerle un punto fino. Si tienes un método de formato para, digamos, ejemplo, tu clase de post, realmente no quieres tener eso que también disponible para, digamos tu clase de categoría. De acuerdo, así que realmente te gustaría que eso fuera un método privado porque no quieres ser tipo de usar tener una clase de categoría que está usando un método de tu post clásico dos objetos completamente diferentes. Eso no es realmente bueno hacer esto en una mejor práctica. Si querías crear un método de formato que luego usaste en, digamos, categoría y publicar en DSO cuarto. Donde harías es sacar ese método de formato de metanfetaminas fuera de la clase de post y crearías una clase de formato, y luego lo harías en cualquier momento que quisieras formatear algo, llamarías a esa clase de formato, y podrías llamarlo desde la categoría. O podrías llamarlo desde post. Podrías llamarlo desde donde sea pero lo harías. Lo encapsularías en lo propio si quisieras usarlo en múltiples clases, no quieres estar usando un método de, sabes una clase en otra clase. En términos generales, se quiere mantenerlos encapsulados para que sean sus propias cosas. Y así una de las formas en que puedes hacer eso es haciéndolos métodos privados. Si se trata de un método privado o de una propiedad privada, otras clases pueden acceder. O si es ah, protegido. Otras clases pueden acceder a ella a menos que se extiendan. Ah, el Ah, amplían la clase original. Entonces otra vez, esa es la diferencia entre público. Peyron protegió que parte de la información de fondo en contexto sobre cuándo querrías usar estas Ah, y así sucesivamente. Por lo que ojalá hayan encontrado eso útil. Gracias por ver nos metemos en el siguiente. 5. Herencia: Hola ahí. John Morrissey, John Morse online dot com Esta lección. Vamos a hablar de herencia, ya que como que empezamos un poco. La última lección seguiría adelante y especie de ir todo en esta lección. Entonces sigamos adelante y copiemos. Este código que teníamos de menos de cuatro vendrá aquí a esta lección. Y así esto extender una clase es en realidad bastante simple. Y lo que permite hacer es heredar toda la funcionalidad que no es privada de la clase original. Entonces cuando hablamos de thes y tenemos nueva clase extendiendo mi clase nuevas clases, lo que llamaríamos la clase child y mis clases lo que llamaríamos la clase parent ya que nueva clase extiende mi clase, mi clase es el padre y la nueva clases. El niño consigue heredar nuevas clases, heredando de mi clase. De acuerdo, Entonces, nuevo, lo que esto nos permite hacer es cualquier cosa que esté protegida o pública de lo que seamos capaces de usar dentro de esta nueva clase. Ahora, la forma en que podemos ver eso es si vamos a y cambiamos esto a nueva clase Ahora ten en cuenta, no tenemos ninguna funcionalidad dentro de una nueva clase aquí mismo. Todo lo que estamos haciendo es extender mi clase. Pero seguimos llamando a esto mi método de función aquí. Entonces sigamos adelante y cargemos esto. Y ya ves, conseguimos este alto aquí mismo. Entonces, a pesar de que no hemos agregado nada dentro de la nueva clase, hemos heredado toda la funcionalidad de nuestra clase padre original. Ahora, solo para mostrarte, si cambiamos esto a protegido y recargamos esto, entonces puedes ver que recibimos esta llamada a este método protegido. De acuerdo, entonces estamos llamando a esto fuera de la clase aquí, y esta función está protegida. Entonces por eso no tenemos acceso a esto. Y entonces si lo hacemos, ya sabes , privado así , claro, vamos a conseguir eso también. Ahora, algo que podríamos hacer es si cambiamos esto de nuevo a protegido. Y digamos que agregamos un nuevo método dentro de aquí. lo hacen la función pública, y haremos display y display interior. Todo lo que hacemos es llamar a esto y llamamos a mi función y luego aquí fuera vamos a poner nuestro punto y coma . Ah, aquí una nueva clase que llamamos mostrar el nuevo método que creamos nuestra nueva clase. Entonces sigamos adelante y corremos eso, ya ves, nos volvemos a drogar. Ahora la razón por la que nos drogamos es porque somos de estamos llamando a mi función ahora desde dentro de una clase que la extiende. Entonces a pesar de que está protegido, todavía lo estamos llamando desde dentro de una clase que lo extiende. Entonces esto está permitido. Y ahora estamos llamando a la pantalla de función pública. Eso es lo que estamos llamando aquí. Entonces lo que tendríamos que hacer es, si pusiéramos esto en privado, pusimos eso en Privado. Ah, Ahora vamos a conseguir la fatal llamada aérea a privada Método. De acuerdo, entonces no podemos hacer eso. Entonces así funciona la herencia en todo esto. Ahora de nuevo, ya conoces la forma en que quieres Teoh, usa estos ejemplos de cómo podrías usar esto. Digo, digámoslo. Un ejemplo en el que puedo pensar es, digamos que consigues ah, en SDK de algún sitio, como tal vez YouTube por interactuar con Es un P I, y quieres construir un envoltorio alrededor de eso Bueno, una de las formas en que podrías hacer eso sería simplemente extender cualquier clase o clases que suelen estar en este caso SD, va a haber, como, como, una clase estándar de clase basada que tú para que puedas extender esa clase. Um, para poder usar su funcionalidad, trae toda su funcionalidad disponible a tu nueva clase que vas a hacer bien, eso es un rapero, que porque vas a usarte para haber sido de alguna manera específica para que podría tomar algo que está ahí fuera, que alguien está escrito ahí que está existente. O tal vez has escrito y podrías ampliarlo y luego agregar en tu propia funcionalidad muy específica o tienes, digamos, digamos, una clase de base de datos. Y digamos que hablamos de una clase de consulta en la clase de base de datos. A lo mejor la forma en que quieres usar tu clase de base de datos es simplemente extenderla con tu clase de consulta. Ahora quieres ser un poco cuidadoso de eso por la forma en que funciona la herencia múltiple . Y podría ponerse un poco complicado cuando lo sepas, si quieres usar tu clase de base de datos y en consulta y en tal vez otra clase en otra clase en otra clase a esa todo puede ponerse un poco complicado. Pero ah, ya sabes, si esas son las consultas, la única clase va a estar interactuando directamente con la clase de base de datos, entonces tal vez esa sería una opción para que pudieras hacer eso. Um, esa no es la única forma de interactuar con la clase de base de datos, pero de nuevo, es una opción. O tal vez creas una clase de objeto que es una especie de marco base. Y luego a partir de eso creas una clase de post muy específica que se suma a lo que tienes un objeto para que puedas, ah, tener cosas muy específicas para la publicación. Por lo que de nuevo, sólo estoy arrojado a algunos ejemplos de diferentes formas en las que podría ser capaz de usar esto. Pero de nuevo, lo grande es que esta Nueva clase va a tomar todas las, uh, propiedades y todos los métodos de su clase padre. Ah, siempre y cuando esos sean públicos o protegidos. Ahora hay un par de cosas a tener en cuenta aquí. En primer lugar, cuando se trata de constructores, la clase secundaria no llamará automáticamente al constructor de la clase padre, por lo que hay que usar algún tipo de sintaxis específica. Entonces vamos a hacer público y vamos a ir a funcionar. Y vamos a crear nuestro propio constructor dentro de nuestra ah, dentro de nuestra clase infantil. Ahora, si dejamos esto así, puedes ver que volvemos a conseguir que me guste Coop. Ahora, ¿por qué? ¿ Por qué volvimos a eso? Porque anulamos antes de no tener un constructor en nuestra clase infantil. Por lo que acabamos de utilizar la clase de padres. Ahora en realidad hemos creado constructor clase child insider. Sobrescribe al padre. Entonces este padre no va a ser corrido. Por eso retrocedemos el dedo del pie. Me gusta Coop porque necesitamos que ese constructor padre sobrescriba lo que estaba en nuestra variable aquí. Entonces por eso eso sucede ahora. A lo mejor podría ser el caso en el que quieres que este constructor se ejecute quieto. Entonces, lo que haces es usar colon padre y luego construir Así que esencialmente estás llamando a ese método padre. Entonces ahora esto va a hacer que ese constructor padre se ejecute. Entonces si volvemos a ejecutar esto Ah Oh, en realidad, necesitamos pasar nuestras variables, así que vamos a texto y necesitamos texto. Muy bien, entonces tenemos variable. Por lo que necesitamos asegurarnos de poner esos ahí dentro. Entonces ahora si volvemos a ejecutar eso, volvemos a drogarnos. Entonces eso es algo a tener en cuenta cuando estás trabajando con esto. Esto también abre algo. Ah, que no podemos que eso pueda no ser inmediatamente obvio, pero te muestra cómo puedes hacer esto porque tenemos esta clase constructor aquí y tenemos un método constructor aquí. Se podría pensar. Bueno, tenemos dos del mismo nombre. Así es como anulas los métodos de la clase de padres en tu clase de hijo. Entonces, por ejemplo, podríamos crear un método llamado público y podríamos volver a hacer mi función. Este es el mismo nombre es lo que tenemos aquí arriba ahora en lugar de sólo hacer Ah, déjame seguir adelante y mi función. Palabra clave. soy bastante horrible. En realidad, tal vez notes que hago eso incluso cuando solo abrigo por mi cuenta. Um así mi función ahora lo que podemos hacer es quizá queremos cambiar esto. A lo mejor queremos tomar eco este var, y luego le vamos a agregar algo. Eso es como, um hola. Bueno, es apenas fuera de periodo desde que lo hicimos en el original. Mi nombre es John. De acuerdo, así que sigamos adelante y refresquemos eso. Ya puedes ver ahora conseguimos Hola, mi nombre es John. Entonces tenemos dos métodos con el mismo nombre, pero no hay error porque lo que hace PHP es cuando se extiende así, esta clase sobrescribirá la clase en el padre. De acuerdo, así es como puedes extender una clase y tener acceso a los datos que están disponibles en el padre o a las funcionalidades disponibles en la clase padre. Y luego si hay ciertos métodos dentro de esa clase que quieres sobrescribir, también puedes hacerlo. Y obviamente, si quieres entrar aquí puedes sobrescribir propiedades. Es decir, como bien podrías, ya sabes, esta var es igual a bien, así que vamos a ver qué nos da eso. Entonces ahora tenemos algo diferente. Mi nombre es John. ¿ Por qué tenemos eso? Porque recuerden, pasamos en alto es todo lo que pasamos para que eso vaya a esta clase alta. Pero entonces corremos eso a través de nuestro padre. Nuestro padre viene aquí y dice: OK, OK, que esta var ahora es igual a probar. Entonces nosotros justo después de eso cambiamos esta var a algo diferente. Entonces esto básicamente se pone un, uh, sobre escrito por esto aquí mismo. Y ahora es esto lo que vamos a usar aquí abajo cuando hagamos esto se detuvo lejos de nuestro periodo. Mi nombre es John. De acuerdo, entonces eso podría ser un poco confuso. Pero lo que estoy tratando de mostrarles es que se puede anular prácticamente todo dentro de la clase de padres. Los métodos, las propiedades, todo ese tipo de cosas. Para que puedas agarrar la funcionalidad que quieras, y luego si quieres, ahí está que quieres agregar a lo que hay, puedes agregarle creando nuevo. Puedes crear nuevos métodos dentro de aquí como lo hicimos con display. También puede anular los métodos existentes y las propiedades existentes dentro de él. Ahora, la única salvedad final a eso. Digamos que pongo esta palabra clave final aquí en mi función. Adelante y recarga que veas, decimos que no puede anular método mi clase, mi función. Entonces, cuando estás creando tu clase padre, si quieres crear un método que no puede ser anulado por clases infantiles, necesitas usar esta palabra clave final justo aquí, y eso evitará que alguien pueda hacer esto. De acuerdo, así que eso es una inmersión realmente profunda en la herencia. Esperemos que eso quede bastante claro para ti. De no ser así, yo diría que sólo una especie de volver a través de él y entonces realmente entrar ahí y empezar a jugar. Y está cambiando las palabras clave de privada a protegida del dedo del pie, extendiendo una nueva clase sobre ella. Tan solo métase ahí y límese con él. Escuché esta gran cita el otro día. Esa claridad viene de la acción, no del pensamiento, para que yo creo que eso es muy, muy cierto. Y eso va a ser muy, muy cierto en este caso. Cuanto más sea el mensaje de que cuanto más lo uses, más va a tener sentido y y y a quedar claro para nosotros. Entonces entra ahí y empieza a meterte con estas cosas, está bien, eso lo hará para esta lección. Gracias por ver. Te hablaremos el próximo 6. Métodos y propiedades estáticas: Hey ahi, John Morris Aquí, Joe Morris, online dot com. Esta lección. Vamos a meternos en propiedades y métodos estáticos y realmente hablando de la palabra clave estática porque eso es lo que agregas a ambos. Eso en realidad los hace estáticos. Así que sigamos adelante y copiemos este código aquí mismo y vayamos a nuestro nuevo cabello de archivo. Y vamos a citar, especie de simplificar esto por un segundo para que pueda mostrarles esto. Voy a deshacerme del constructor por un segundo. Voy a volver a cambiar esto a público, y vamos a cambiar este dedo público y lo llamaremos le agregará esta palabra estática. Está bien. Y luego bajemos aquí y instemos una nueva instancia de nuestra clase. Entonces iremos. Mi clase es igual a nueva mi clase. No tienes constructor ahora, así que no necesitamos preocuparnos por eso. Y vamos a ver qué pasa si vamos a mi clase. Ya conoces mi función. Entonces básicamente estamos haciendo lo que hicimos antes, verdad? Tenemos un método. Mi función, estamos haciendo referencia a nuestra propiedad aparecen y estamos aquí afuera y queremos simplemente hacer eco de eso y en realidad, una cosa más que necesito hacer antes de hacer esto, puede que necesites o no hacer esto. Sucede que mi sistema suprime los aires. Entonces necesito encender el reportaje aéreo y así e todo de nuevo, puede que tengas o no que hacer esto porque algunos de los errores que iban a llegar aquí no son aires fatales reales. Van a ser avisos. Y así solo quiero que puedas ver esos. Y si no hago esto, no vas a ser capaz de destruir Ve a ese alguien para exhibir aires, y vamos a poner a ese Teoh verdadero. Está bien, así que eso debería ser lo que necesitamos aquí. Entonces sigamos adelante y recarguemos esto y solo veamos qué pasa. Por lo que dice normas estrictas accediendo a la propiedad estática. Mi clase de nuestra como no estática en burbuja online nueve. Entonces aquí mismo estamos referenciando son variables como lo hicimos antes. Pero ahora nos está dando este aire que lo estamos referenciando como no estático. Entonces esta es una especie de primer tipo de introducción a lo que esto realmente significa Cuando creamos A cuando creamos una variable estática o un método estático como este Lo que hace es que lo haga para que esta variable, por ejemplo, básicamente existe fuera del yo diría, el alcance del objeto de esta clase que significa si traté de usar esto Si trato de usarlo en cualquier parte de mi clase y utilicé esta variable aquí, no va a funcionar porque la he cambiado a una variable estática. Y no está destinado a ser usado en el ámbito del objeto, ¿de acuerdo? Y es lo mismo si traté de bajar aquí y tratemos de acceder directamente a la propiedad. Entonces si trato de acceder a esto directamente, adelante y recargar y volver a acceder a la propiedad estática mi clase como no estática. Entonces cuando lo haces estático, lo hace para que no puedas acceder a él a través de este objeto. Ya que sintaxis lo, ya no es parte de ese contexto de objeto. Entonces ahora lo que tienes que hacer para acceder a él es que necesitas usar el que necesitas para acceder y lo que en realidad es directamente. Entonces ahora vamos a hacer mi clase, y puede que hayas visto esto antes, y luego hagamos mi función así, Ok, Ok y en realidad, necesitamos a Teoh. En realidad, es hacer lejos y creo que es así. Entonces si queremos acceso del dedo del pie, la clave fue así. Tenemos que asegurarnos o la propiedad. Tenemos que asegurarnos de que ponemos nuestro, um, que sea en una variable real aquí. Entonces sigamos adelante y recarguemos esto y sigamos adelante, repítalo. Por lo que ahora conseguimos me gusta aro. Por lo que ahora tenemos acceso a ella. Entonces lo que acabo de hacer ya que pude acceder a una propiedad de clase sin instancia comer una instancia de la clase. Eso es en última instancia lo que las palabras clave estáticas te permiten dio. Y podemos hacer lo mismo con nuestro método aquí. Entonces cambiemos esto a Estático. De hecho cambiemos esto de nuevo a regular, ya que vamos a estar ah, haciendo esto. Entonces sigamos adelante y hagamos mi clase. Mi función como esta quiero mostrarles esto. Ahora se puede ver aire fatal usando esto cuando no es un contexto de objeto. Por lo que de nuevo estamos accediendo. Esta es una función estática, por lo que no estamos en el contexto del objeto. Entonces esto no funciona en esto. Lee se crea cuando se instancia e ocho Una instancia de la clase. Ahí es cuando esto se pone disponible. Ya que no hemos hecho eso, no está disponible. Entonces sigamos adelante y hagamos esto. Uh huh. Ahora mismo, No, no hemos hecho esta estática aquí, así que vamos a seguir adelante y refrescar ese acceso a la propiedad estática no declarada. Entonces ahora volvemos aquí arriba y cambiamos esto a Estático, y recargamos. Y ahora conseguimos lo que queremos. Entonces no quiero mostrarles es que cuando empiezas a usar la palabra clave estática, como que empieza a hacerse cargo de todo lo que dio. Entonces, ¿quieres ser un poco cuidadoso con cómo estás usando esto? Ahora, la realidad de esto es que podrías estar preguntando, Bueno, Bueno, ¿por qué esto se usaría principalmente, esto se usó. Ah, esto se usaba antes de que tuviéramos espacios de nombres y se usaba en el contexto de que no estabas creando un Esto básicamente estaba tomando código de procedimiento y poniéndolo dentro de una clase, y esencialmente estabas usando la clase como espacio de nombres . Y entonces esto es lo que yo llamaría pseudo. Esto se usó para pseudo objeto o programación odiada en el sentido de que ya sabes, no estabas creando necesariamente una post clase muy post en una categoría plástica, básicamente solo estabas tomando No estabas rompiendo todo y en realidad viviendo a la altura del espíritu de qué objeto es durante la programación. Y no digo que no sea como fastidiarme con estas personas. Yo no lo soy. No digo que esto sea como una cosa horrible o lo que sea. Solo digo que no fue en general cómo se usaron este tipo de cosas. Esto se usó en un contexto donde acabas de tener más de una colección de métodos dentro de tu clase y tenías una colección de propiedades y solo las estabas poniendo dentro de la clase para evitar que estuvieran en el espacio de nombres globales y enturbiando ese espacio de nombres globales y teniendo colisiones con otras variables y de otras aplicaciones y así sucesivamente. Entonces la idea era ponerlo dentro de una clase y usar la clase es una especie de espacio de nombres, pero aún así poder acceder a estas cosas directamente. Y así, si ustedes si sacamos esto de la clase aquí mismo, y acabamos de tener mi función. Podríamos llamar así a mi función, ¿verdad? No tendríamos que instancia ocho. Una nueva instancia de una clase y todo ese tipo de cosas. Por lo que las palabras clave estáticas te permiten hacer algo similar. Sólo tenías que añadir esto mi designación de clase. Y ahora podrías acceder directamente a tus funciones. Se podría acceder. Ah, ya sabes, eres muy tus propiedades directamente. Y si querías Teoh referencia una propiedad aparece igual que si estuviéramos haciendo solo hagamos esto vamos. Mi var. Y eso está en el espacio de nombres globales, ¿verdad? No está dentro de ninguna clase dentro de cualquier función dentro de cualquier espacio de nombres, cualquier interfaz, cosa es lo correcto directamente en PHP. Por lo que este es el espacio de nombres globales. Entonces ahora creamos una función y queremos hacer eco ups, arreglarla en un segundo, mi var, y vamos a llamar a esto mi funk. Está bien. Ah, funciona mi funk. Está bien. Entonces si quisiéramos seguir adelante y eco, realidad son esto es llamar mi funk, ¿eh? Está bien. Está bien. Entonces si quisiéramos hacer esto ya ves, nos vamos a quedar indefinidos. Variable, indefinido. Variable mi var justo aquí. ¿ Por qué es indefinido? Porque esto está en el espacio de nombres globales. Y esto está en el espacio de nombres locales. Entonces lo que tendrías que hacer aquí y si has tomado mi PHP uno en un solo curso, lo sabrás, pero hazte global mi var. De acuerdo, entonces ahora lo que dice esto es que quiero usar la versión global de mi var dentro de esta función . Ahora, ya sabes, obtenemos, obtenemos lo que queremos, no obtenemos aire, y podríamos poner esto a mi barra igual a global. Y así obtenemos, en realidad obtenemos algo de salida para que nos pongamos globales así. De acuerdo, así pudo haber sido así como antes se escribió tu código. Y ahora solo son como, OK, OK, necesito poner esto dentro de una clase porque tener mi var en el espacio de nombres globales cualquier cosa podría llamarse mi var. Podría tener alguna otra aplicación y podría haber colisiones, así que sólo voy a tomar esto y ponerlo dentro de una clase. Pero no lo hago No estoy tratando de hacer todo el módulo separador de Allenby. Yo sólo quiero tomar estos métodos y ponerlo dentro de una clase. Bueno, eso fue generalmente como se usaba la estática. Porque ahora todavía se puede hacer esto Este un tipo similar de configuración a esto. Pero ahora solo tienes que usar en lugar de usar global y así globalizarte con global, solo necesitas asegurarte de referirlo estáticamente, y usas palabra clave estática en todo. Tan palabras clave estáticas, gusano o usado cuando estabas tratando de hacer esto y una realmente más de una manera ah no orientada a objetos , y solo querías tomar tipo de código de procedimiento y ponerlo en una clase. Por lo que las clases estaban más acostumbradas al espacio de nombres cuando la gente estaba haciendo este tipo de cosas es el punto que quiero hacer. Yo traigo eso porque ahora tenemos un hacha, nombre real, palabra clave espacio para crear un espacio de nombres, y así ya no necesitamos hacer eso. Y cuando hablamos de programación orientada a objetos, generalmente cuando estás usando palabras clave estáticas que están fuera del contexto del objeto, eso no es realmente objeto durante la programación. No es que no se puede es algo que no se puede hacer que ciertamente se puede. Pero si vas a una especie de ir el objeto articulado ruta y romper las cosas en objetos y encapsular Ah y polimorfismo y todas las palabras de fantasía por ahí que la gente usa. Si vas a ir por esa ruta, realmente no necesitas o quieres estar haciendo esto. No necesariamente hay un uso de métodos o propiedades estáticas dentro de ese objeto verdadero o en contexto. Ahora probablemente haya algunas adversidades a eso, pero yo diría que probablemente haya menos de lo que se podría pensar. Y suele ser una situación en la que, si vas a hacer eso, o en realidad hay una mejor manera de hacerlo. Eso está orientado a objetos mawr o es un justo como un ejemplo extremo de tu problema podría encontrarse con eso una vez en tu carrera. Um, personalmente aún no he encontrado una situación en la que absolutamente tuve que usar una función estática, variable, er estática para algo. Por lo general podía pensar en ello de una manera diferente y en realidad encontrar una mejor manera de lograr lo que quería. Entonces lo cubrimos porque eso es parte de lo que puedes hacer aquí y demás. Pero es otra vez. Es algo que no lo llamaría desuso ID. Pero es algo que definitivamente no se usa cerca tanto, sobre todo con la introducción de espacios de nombres en las versiones más recientes de PHP. Dicho eso, eso es estático, la palabra clave estática que las propiedades estáticas y el método estático. Entonces ojalá saquen algo de eso. Gracias por ver. Hablaremos con el siguiente. 7. Espacios de nombres: Hola, John Morris. Aquí, John Morris, en línea dot com. Esta lección. Nos vamos a poner en nombre Espacios, así que tipo de referencia eso un poco en el video anterior. Entonces quiero como que me vaya todo en eso aquí tan rápido. Te quiero dar por qué tal vez quieras usar un espacio de nombres. Entonces toda la idea es que parece venir aquí. Puede que esté trabajando con cuando está montando algo, puede que esté trabajando con múltiples paquetes. Entonces digamos, por ejemplo, estás trabajando con ah, Facebook sdk y un STK de YouTube. Y así vas a traer ambos a tu solicitud. Los vas a incluir en tus archivos y tu empieza a usarlos. Bueno, digamos que por alguna razón, ambos tenían una clase de base de datos. Bueno, si no tuviéramos espacios de nombres y solo y esos paquetes tuviéramos esa clase llamada solo base de datos como esta, si ambos tuvieran eso, te encontrarías con un problema donde tienes dos clases tratando de declarar lo mismo nombre y eso lanzaría al aire, por lo que obviamente sería un problema y así la forma en que la gente solía lidiar con eso en el pasado es que usarían nombre de clase realmente descriptivo, por lo que podrían usar algo como base de datos SDK de YouTube como esto, y eso está bien. Y funciona, pero eso puede empezar a ponerse un poco engorroso. Si comienzas a obtener nombres de clase más largos. Creo que el motor Zen tipo del chico del cartel para ese tipo de cosas. Si miras los nombres de las clases y y tal, empiezan a ponerse bastante largos y enrevesados. Y así una de las cosas que se creó para ayudar a lidiar con esto fue un espacio de nombres . Entonces en lugar de tener que prefijar así, lo primero, lo que podrías hacer y esto va a lanzar al aire porque necesitas declarar espacio de nombres en la parte superior del archivo. Pero solo, por ejemplo, sake fingiremos que este es el principio de archivo. Pero harías algo como YouTube y luego s d k como esto. Y lo que eso hará es que creará un espacio de nombres que ahora puedes poner todas tus, uh, tus clases dentro y no chocarán con otras clases que pasan a estar en un nombre diferente. Espacio. Esto crea un nuevo nombre completamente nuevo, espacio. Cualquier cosa por debajo de este nombre, Declaración Espacial. Entonces si hacemos base de datos así, todo en Lee existe dentro de este espacio de nombres y ya no está en el espacio de nombres global . Entonces si Facebook vino y dijera espacio de nombres uh, Facebook flash sdk E hicieron base de datos de clase estas dos declaraciones de la base de datos de clase , pesar de que su mismo no chocaría porque éste está dentro de este espacio de nombres, y éste está dentro de este espacio de nombres. Entonces esa es toda la idea. Es z especie de prefijación, pero haciéndolo de una manera más o menos complicada. De acuerdo, así que hablemos. Entonces pasemos un poco por el matiz de cómo funciona todo esto. Entonces, primer lugar, sí pre escribí algo de este código sólo porque hay un hay una cierta cantidad de él y así me mandó mirándome teclear todo lo que fuera sería innecesario innecesariamente largo. Por lo que creé dos archivos. Uno es lib un punto PHP, y otro es lib to dot PHP. Se ve en la parte superior de ambos y otra vez. El espacio de nombres debe declararse en la parte superior del archivo. Tenemos app y luego tenemos slash lib uno y tenemos app y luego slash slash Lib a lo que eso hace es poner cada uno de estos archivos en su propio espacio de nombres. Entonces ahora mi clase y yo en realidad podemos ya sabes, tú puedes Ah! Ah, podrías tener estos tengan el mismo nombre de clase. Estos podrían ser los dos mi nombre de clase, pero yo sólo quisiera mostrarles, um, algunas de las diferencias aquí. Entonces, de todos modos, les di diferentes nombres de clase y estas clases son con las que hemos estado trabajando. Aquí no hay nada extra nada. Entonces todo lo que hicimos fue agregar este espacio de nombres a la parte superior. Por lo que ahora esto pone estos en su propia aplicación de espacios de nombre separados, slash live. Quieres una aplicación slash lib también. Ahora, si venimos aquí, entonces lo primero que hago es requerir esos dos archivos. Y ahora usamos esta palabra clave uso con el fin ah, referencia son Lib uno y mi clase se viven dos y tu clase y puedes ver aquí. Estoy usando heno y aquí estoy usando alto y podemos ver Por aquí me pongo heno alto como mi salida . Entonces esto es esencialmente cómo puedes empezar a encapsular toda tu aplicación en espacios de nombres. Y luego Así que está separado de cualquier otra aplicación, y luego no tienes que crear nombres de clase realmente complicados. Entonces lo primero que haces es poner lo que en la parte superior de tus archivos de clase reales, vas a poner un espacio de nombres y definir un espacio de nombres. Y luego cuando quieres usar esas clases, usaste la palabra clave use y te refieres app live on y tu clase apple vivió dos y tu clase. Ahora hay otra forma en que puedes hacer esto si ah, vamos adelante y comentamos aquellos fuera cuando estás instancia comiendo una nueva instancia de la clase, también puedes referirla específicamente para que puedas hacer app y luego podrías hacer vivir uno vivir Juan, y luego podrías hacer hap slash lib liken tipo lib, también. Al igual que esto para que puedas ser acceso. Había referencias haciéndolo específicamente cuando instancia comemos una instancia de esa clase. Por lo que nos referimos a esto. Se puede ver que eso funciona. Y para mostrarte qué pasa si no hacemos eso, adelante y deshazte de esos y no será raro ent esos Vas a conseguir fatal clase aérea , mi clase no encontrada. Y es un aire no encontrado porque es que cuando creamos el espacio de nombres, lo sacamos del espacio de nombres global. Por lo que la declaración de clase literalmente ya no existe en el espacio de nombres globales. Y por eso se obtiene este aire no encontrado. De acuerdo, Entonces otra vez, así es como crear espacios de nombres y usar espacios de nombres y luego usarlos dedo del pie otra vez. Encapsula ahora tu APS, otra cosa que podrías hacer que quiero mostrarte que algo útil se debilita. También podemos usar esto como palabra clave para que podamos usar Apple Iban mi clase como digamos sólo J y ah, vamos a usar esto como m Vale, Así que si venimos aquí ahora, estos aires llaman alias. Entonces ahora hemos cambiado cómo podemos hacer referencia a estas cosas. Entonces si recargamos esto, se puede ver que estoy recibiendo mi salida esperada y estoy llamando nueva J. Nunca declaré una clase llamada J. Nunca declaré una clase llamada em. Pero lo que hice es decir, usar esta clase ya que Jay usó esta clase a través de todos los espacios de nombres como M. Así que creé un alias cuatro mis clases. Y ahora puedo llamar puedo instancia ocho nueva J nueva M y eso funciona. De acuerdo, entonces esos son alias que puedes usar también. Entonces eso es otra cosa que tal vez veas Ver allá afuera y quizá te encuentres a mano también. Entonces otra vez, cuando se trata de ah, cómo realmente ir alrededor, ah, organizar tus aplicaciones y así sucesivamente, ya sabes, muchas veces consigo gente que es como, sólo dime cómo organizarlo, y la realidad es que ahí es donde estás ya sabes, ahí es donde eres una especie de creatividad como entra un tipo de desarrollador. Ahora voy a hacer una imprimación M M V c al final de este curso, y voy a asar parte de eso. Vamos a echar un vistazo a algunos paquetes existentes que están por ahí. Para que puedas tener alguna idea de cómo están organizados, pero hay todo tipo de patrones de diseño que hay por ahí. NBC no es la única, y al final del día, es tu aplicación, por lo que puedes organizarla como, cómo quieres otra vez. Hay un tipo de mejores prácticas y convenciones y sólo un tipo de formas en que la gente lo ha hecho en el pasado. Pero parte de lo que haces es que los desarrolladores sean creativos, resuelvan problemas de maneras únicas, inventen tu propio tipo de ideas y así sucesivamente. Y así no tengas miedo de experimentar con esto. Obviamente, echa un vistazo a otros paquetes si quieres alguna orientación. Pero esperemos que ahora, sabiendo esto, sabrás lo que estás mirando. Y creo que eso es lo más grande. Cuando te metes en estos otros paquetes y ves algunas de estas cosas y no sabes qué es, puede llegar a ser realmente confuso muy rápido. Pero esperemos que ahora, sabiendo cómo funcionan los espacios de nombres y demás, puedes entrar en ello e ir, Oh, yo sé lo que es eso, y puedes empezar a armar cómo están poniendo las cosas. Cómo su ah, organizando y demás, y eso te puede dar ideas. Entonces ese es mi objetivo. 40 de todos modos. Entonces otra vez, ese es el nombre Espacios. Esperemos. Ah, sacaste algo de eso. Gracias por ver. Hablaremos en el próximo. 8. Autoload: Hola ahí. John Morrissey, John Morris online dot com. Esta lección. Nos vamos a meter en auto cargando ahora. La carga automática no es necesariamente tipo de objeto estrictamente durante una programación. Pero a medida que empezamos a entrar a hablar de construir clases y empezamos a meternos en usar espacios de nombres y así sucesivamente Ah, creo que se vuelve importante hablar de auto load. Y la razón por la que estamos enfocados en estas dos líneas aquí arriba. Y puede que haya trabajado con aplicaciones lo suficiente para el código suficiente para saber que después de un tiempo empiezas a lidiar con muchas de estas. Y ya sabes, hago tutoriales donde hablo de ah, usando ah, usando ah, load file y ese tipo de una forma de lidiar con esto y eso funciona bien, cuando estás trabajando con algo que es más especie de, uh, en un algunas personas van a gritar Blast para mí aquí. Pero cuando estás trabajando con algo que es más frontal y pesado Así que donde ah mucho de tu código si fuéramos a hablar de esto como, digamos, M v c sabio es mucho de tus codas vista pesado, y no es necesariamente tanto cosas en la parte trasera. tanto que, ah, lo que vamos a hablar con auto load tiende a funcionar mucho mejor cuando tienes mucho de vuelta adentro como si tuvieras un montón de clases diferentes que estás necesitando para cargar un montón de espacios de nombres diferentes y tienes una tonelada de esas cosas pasando. Y así la idea de auto load es para ayudarnos tipo de deshacernos de tener que usar estos requiere y tener, como, 15 de ellos. Si tenemos esas muchas clases de nuevo, esto realmente empieza a convertirse, ah, un problema cuando tienes cuando estás rompiendo objetos individuales. Ah, código de manejo de objetos en clases. Y luego si otra vez, empezamos a hablar de NBC. Empiezas a hablar de múltiples clases para un objeto porque tienes, ya sabes, vistas y tienes el modelo y tienes el controlador y todo ese tipo de cosas. Por lo que empiezas a obtener muchas clases y muchos archivos que necesitas cargar. Por lo que tener que caer constantemente en todos esos requieren declaraciones puede ser engorroso. Entonces, ¿eso es lo que vamos a mostrar cómo lidiar aquí? Ah, creé un nuevo archivo. Se acaba de copiar todo este código se dejará caer esto en. Y por supuesto, como como esperarías si me deshiciera de esos requiere vamos a conseguir estos aires. Ahora, quiero que le presten atención a este aire porque ah, lo que PHP trata de hacer es ah, cuando vamos cuando vamos a hacer las cosas de autocarga se basa en esto es el nombre de la clase . De acuerdo, eso es algo. Quiero que realmente le presten atención a su aplicación slash lib one slash mi clase. Ese es el nombre real de la clase. Entonces cuando nos metamos puede haber visto ah función llamada SPL auto load register bajará aquí para registrarse. Por lo que SPL Lotto auto load registrado toma una función de devolución de llamada. Entonces solo diremos por nuestro bien aquí iremos. Carga automática. Está bien para mantenerlo sencillo. Um, ahora esta función va a ser una especie de en este Ah ah. A veces en este espacio de nombres globales como este. Entonces ah, uh, usar auto load como esta es, um tal vez no lo mejor que hacer. Es posible que quieras pensar en un nombre diferente aquí, pero para nuestros propósitos, solo puedo mostrarte este año. Um y lo que estaba haciendo ahí es que sólo estoy en este hábito de hacer esto. Esto no es un quiste en una nueva función que estamos creando. Lo que estamos haciendo es que esta es una función PHP estaban llamando, y estamos pasando en un nombre de una función que queremos usar es una devolución de llamada. Por lo que el registro de carga automática SPL solo va a llamar a esta función de devolución de llamada. Entonces vamos a crear una función llamada Auto Load y muchos frameworks. Ya verás que ponen esto en, es una especie de archivo separado propio y así sucesivamente. Ah, y ya sabes, la forma en que lo estoy haciendo aquí sólo la parte superior de un archivo como este no es necesariamente no es la forma que harías esto. Normalmente pondrías esto en especie de archivo propio y luego incluirías en especie de tus archivos base para empezar con o ah, alguna manera incluida en tu aplicación. Entonces ah, pero de nuevo, solo te lo estoy mostrando de una manera sencilla aquí. Por lo que de nuevo, SPL lote de registro de carga automática va a ejecutar la carga automática de devolución de llamada. Y en lo que pasa es el nombre de la clase. Entonces es por eso que esto es importante porque va a pasar en el aula. Recuerda que el nombre de la clase es este nombre completo aquí mismo. Y tiene las barras traseras así las no las barras delanteras. Entonces si intentamos qué? Lo que probablemente intentarías hacer de la derecha del bate es simplemente hacer algo así como requerir una vez . Y luego, um clase, nombre Dios, PHP. Algo así. Eso es algo bastante estándar que creo que mucha gente simplemente diría, Hey, ya sabes, vamos a poner y luego crearías archivos como esta app lib Juan vivió como lo he hecho aquí. Entonces tenemos app liberal en los dos, y tú dirías, OK, estoy bien para irme, pero o tal vez ni siquiera pensarás en crear estos archivos así, ¿ verdad? A lo mejor esa es, ya sabes, tal vez esa es la cosa. Entonces lo que notarás es que dice que no lo abrirá, y la razón por la que no se abrirá es por estos. Slash está justo aquí. Entonces necesitamos asegurarnos de que vamos a hacer reemplazo de cadenas, y necesitamos cambiar. Necesitamos que Teoh cambie esos en el tipo correcto de barras. Entonces esencialmente vamos a hacer lo que vamos a buscar es que vamos a buscar estas barras delanteras. Ahora, lo que pasa con esto es que si solo haces esto, notarás que hace que nuestro código sea todo incómodo. Y eso se debe a que una barra contraria también está en escapar de personaje. Por lo que en realidad se está escapando de esta última cita aquí mismo. Eso necesitamos que en realidad ponga dos ahí así que se asegure de que no tengamos el problema de escape, y luego lo vamos a reemplazar por una barra directa real, que es lo que necesitamos. De acuerdo, entonces si recargamos eso ahora que obtenemos se espera salida, ¿de acuerdo? Y entonces lo que está pasando aquí es cuando decimos, Hey, queremos usar la manzana liberal en mi clase. ¿ Qué hace PHP? ¿ Es así? Busca esos. Se busca esa designación en los archivos que tiene a su disposición que se han cargado. Bueno, obviamente, si no requerimos esos en que no los va a encontrar porque no hemos requerido esos archivos en. Entonces lo que hace, hace un último intento, esencialmente para encontrar esos archivos, y va a intentar cargarlos automáticamente. Y así es aquí donde podemos agregar en esta auto carga SPL auto, registró esta función de devolución de llamada para decirle que le dé ayuda y le diga dónde buscar. Y así lo estamos diciendo esencialmente, porque el nombre de las clases ab slash liberal y slash mi clase lo que estamos haciendo con esto. Pero esta función aquí, decían los autocargadores, fueron los primeros apagados por cambiar las barras de atrás en barras delanteras. Y ahora lo estamos diciendo, Hey, busca esta clase en app slash lib one slash mi clase dot PHP y búscalo en lib. Ah, ap vivió a ah, tu clase dot PHP Ahí es donde queremos que busques esto. Entonces le estamos diciendo dónde buscar con esto ahora, eso es importante, porque está bien, tal vez no quieras. No quieres usar app y vivir una así. A lo mejor quieres hacer algo como vamos. Ah, vamos a explotar partes iguales y vamos a hacer nuestras salpicaduras de nuevo porque necesitamos explotar por esas barras, y vamos a usar el nombre de clase. Y sabemos como resultado de esto que el último elemento sabemos lo que estamos buscando. Ahora bien, esto es un poco complicado porque estás asumiendo que todos tienen la misma estructura. Y puede que tengas designaciones como esta que son como, um ningún otro dicho, no sé qué podría ser esto. Podrían tener cuatro así. Vale, así que tienes que ser un poco cuidadoso, pero puedes usar ah, algo así como, ah, Ray Pop. Creo que es que va a estallar el último elemento de una matriz. Entonces ah, y va a devolver que el último valor de la matriz como es parámetro devuelto para que podamos hacer ah nombrado el nombre directo real es igual a, Ah, array, top y partes. Muy bien, vamos a, ah, ah, eco de eso y asegurarnos de que estamos consiguiendo lo que estamos buscando. Está bien, Así que sigamos adelante y hagamos eso. Entonces ahora estamos consiguiendo mi clase. Entonces esa es una de las que estaban tras así otra vez por cada una de estas que intenta cargar. Se va a ejecutar esto porque no lo está encontrando. Entonces lo va a ejecutar para éste y luego lo va a ejecutar para éste. Entonces ahora tenemos mi clase encapsulada. Y aunque nos hiciéramos otro aquí así, todavía vamos a conseguir mi clase porque estamos usando un ray pop. Entonces ahora que tenemos el nombre directo de la clase, podríamos crear una carpeta como esta Eso es, Ah, carpeta nueva y podríamos hacer clases. Y podríamos poner todas nuestras clases aquí, y luego podríamos construir esto para que lo busque dentro de eso para que pudiéramos hacer, um vamos a enigma esto y tal vez podríamos hacer algo como, um, hagamos un sprint f que sea un poco más fácil aquí. Esos hacen sprint f. Y el formato va a ser Ah, lo vamos a buscar en clases y luego slash y luego percentage s y luego dot PHP. De acuerdo, eso debería funcionar. Y así haremos nombre pondrá nombre en su. Entonces, ¿qué media sprint? Es si fuera este porcentaje s Va a tomar el valor del nombre y dejarlo caer en su Ok , Así que es sólo una forma un poco más limpia de hacer esto. Puede que tenga que agregar algunas barras y cosas aquí, pero vamos a ver qué obtenemos. Um, no, tengo mi eco y salgo por aquí todavía. decir, Esdecir,puede que tenga que agregar algunas barras, pero vamos a ir a ver. Sí, así que vamos ah, bueno, y en realidad, no tenemos mi clase por ahí, así que hagamos esto. Hagamos Ah, copia. Y luego peguemos esto aquí y luego hagamos tu clase. Copiemos eso y peguemos y llegaré al grano todo esto aquí en tan solo un segundo. Está bien, así que ahí, Ahora vamos. Lo tenemos bien. Entonces lo hemos hecho. Acabamos de hacer dos formas diferentes de autocarga. Lo hemos hecho donde creamos app y vivimos una como esta, que podrías ver a algunas personas hacer, o lo hemos hecho donde hemos puesto todas nuestras clases en una sola carpeta y no importa donde sepas dónde van a ser llamados de, No importa que sepas cuántos niveles diferentes tenemos aquí. En última instancia, esta función de carga automática va a buscar nuestras clases dentro de esta clase es carpeta, y si hay una, la va a cargar. De acuerdo, Entonces te muestro todo eso para señalar que cuando salgas por ahí y mires diferentes aplicaciones, vas a ver diferentes formas en que la gente podría auto cargar cosas. Y podrías empezar a pensar que esa es la única forma en que puedes hacerlo o lo que sea. Pero esta auto carga Ah, función. Este registro te permite llamar a una función de devolución de llamada, te da el nombre de la clase, y luego puedes analizarlo y manejarlo como quieras. Y así eso te permite construir tu estructura de una manera específica. Eso tiene sentido para ti. Por lo que puedes tipo de organizar a tu padre tu solicitud como quieras. Y lo bonito es, es que podríamos tener, ya sabes, 17 de estos usos. Ah, estos usan designaciones aquí, y podríamos tener 17 clases diferentes. Y mientras tu manera escribas auto load, asegúrate de organizar tus archivos de esa manera en particular para que funcione, entonces vas a estar bien. Y de nuevo, eso va a ser un poco cuando nos metamos en Ah, cuando nos metamos en empezar a mirar a NBC y vamos a ver algunas de estas cosas, verás algunas funciones de autocarga que tienen mucho de Tienen algunos si bloques son mucho más complicados que esto. Y eso está bien. Y eso en realidad funciona bastante bien en esos escenarios y así sucesivamente. Pero quiero mostrarte esto para que tengas una comprensión básica de lo que realmente está pasando ahí y para hacerte saber que puedes escribir tu auto load como quieras . Y es una herramienta realmente útil para cuando tienes muchas clases que necesitas cargar en lugar de poner 17 requieren bloques en la parte superior, puedes usar una carga automática como esta, y puedes usar sentencias if aquí y así sucesivamente. Y así tal vez lo harías. El modo en que lo organizas es que realmente lo verificarías. Te estás haciendo haciendo explotar. Pero le quitarías el primer elemento, ¿verdad? Te agarrarías esta parte de la app, y dirías, OK, si su app voy a buscar quiero que la busques en esta carpeta, y podrías tener una sentencia if que maneja si el If el primer elemento de este designación es app y digamos, tal vez sea yo no sé, tal vez tienes, ah, YouTube, STK o algo así y quieres usar YouTube o tienes un rapero de YouTube. Y así si es YouTube, voy a buscar en otro lugar. O si lo es, hay todo tipo de formas diferentes en las que podrías organizar esto. Pero de nuevo, quiero que sepas que puedes escribir esta función como quieras para que puedas organizar tu aplicación, cómo quieres y aún así poder aprovecharla. Entonces eso es auto load. Ojalá saquen algo de eso. Gracias por ver. Hablaremos contigo la próxima vez. 9. Interfaces: Hey ahi, John Morris Aquí, Joe Morris online dot com. Esta lección. Vamos a hablar de interfaces, así que las interfaces son una forma en que lo que hacen es que te permiten especificar tipo del marco que una clase debe implementar en particular, lo que hace es te dice los métodos que tiene una clase toe tener si se va a implementar. Ah, tu interfaz. Y esto es útil para una serie de situaciones. Por ejemplo, digamos que solo quieres ser tú como codificador individual escribiendo cosas. Se quiere ser más organizado y tipo de mantenerse en el camino y así sucesivamente. Y entonces lo que puedes hacer es cuando lo estás, estás construyendo una especie de la idea de lo que quieres que sea tu aplicación y conseguir una especie de base tipo de ideas y conceptos abajo y funcionalidad abajo. Puedes crear diferentes interfaces que digan Vale, sé que esta interfaz necesita al que thes Siris de clases van a necesitar hacer algún tipo de manipulación de datos, por lo que van a estar almacenando cosas en la base de datos trabajando con la base de datos, así que sé que voy a necesitar tener un crear un leer y actualizar y eliminar para que pudieras escribir una interfaz que diga, Ok, necesito hacerlo. Por cada una de las clases que implementa esta interfaz, necesitan asegurarse de que como mínimo, tengan un Cree lee y actualice y elimine. Y entonces cuando escribas la clase e implementas la interfaz, si no tienes esos métodos ahí dentro, entonces va a lanzar un aire y vas a estar como, Oh, sí, necesito hacer eso Así que esa es una instancia probablemente una instancia más popular o realista es Digamos que usted es el desarrollador senior en algún tipo de organización y usted tiene la tarea usted y sus desarrolladores junior. A lo mejor tienes el último cinco o 10 de ellos. Se te encomienda crear algún tipo de aplicación nueva. Y así, como desarrollador senior, quieres proporcionar una especie de rieles guía para tus desarrolladores y asegurarte de que su ah, están escribiendo las cosas necesarias que necesitas para la aplicación para que puedas sentarte y escribir una serie de interfaces y diseñar el marco básico de lo que el código necesita hacer sin tener que rellenar y escribir el código. Y luego tus desarrolladores junior necesitan hacerlo. Cuando escriben un tipo particular de clase, necesitan asegurarse de que implementen cierto tipo de interfaz Ah, para que funcione. Y así eso te da un escenario donde, como desarrollador senior del gerente del proyecto, puedes especie de guiar el desarrollo y configurar un marco para el desarrollo, pero en realidad no tienes que escribir el código individual para cada clase. Y así es lo que hace una interfaz. Entonces, para crear una interfaz, acabas de usar la interfaz de palabras clave en lugar de la clase de palabra clave. Y luego le das un nombre a tu interfaz. Tienes tus corchetes rizados de los que está dentro y luego dentro de él. Todo lo que haces es especificar los métodos que debe contener esta interfaz, para que podamos ver que hacemos función pública, y luego tenemos un nombre hacer cosa, y tenemos función pública y uno llamado hacer otra cosa. No pones ningún dato dentro del método. No te permitirá conseguirás los suyos si intentas poner datos dentro de estos métodos todo el año, especificando es los nombres de los métodos que tienen que existir en cualquier clase los implementos, esta interfaz y así puedes ver aquí abajo que nosotros Cuando queremos implementar la interfaz , decimos clase mi clase en lugar de extiende. Cuando estábamos usando clases de padres e hijos, hacemos implementos. Y luego decimos mi interfaz cuando hacemos eso, lo que dice entonces es ahora tenemos que asegurarnos de que en esta clase tenemos un método llamado hacer cosa y llamado Do Other thing. Y así si actualizamos esto, ya ves que no estamos recibiendo salida por aquí causa mi salida, cualquier cosa. Pero si entro aquí y vamos a seguir adelante y comentar estos dos últimos métodos, Así que ahora tengo hacer cosas, pero no tengo hacer otras cosas, y así si volvemos aquí, obtengo una clase aérea fatal. Mi clase contiene un método abstracto y por lo tanto debe declararse abstracto o implementar los métodos restantes, y luego le dice el método que necesita implementar. Entonces de nuevo, si estás si estás en una organización y eres el desarrollador senior y tienes un montón de desarrolladores trabajando para ti y dices que vas a ellos y dices: OK, OK, he implementado todas las interfaces. Aquí están las interfaces que necesitas usar para esto y esto. Y dicen y ahí van a su código. El tipo tipo implementa mi interfaz y luego escriben, tratan de cargar la página, ya verás. Ah, necesitas implementar éste necesitas implementar éste necesitas implementar éste como tienen ah, riel guía de Estas son las cosas que necesito completar. Y así entonces pueden pasar y completarlos. Y cuando van a mostrarte su código como desarrollador senior, si no han instruido, ah creó uno de los métodos requeridos. Lo vas a ver justo encendido. Ya lo vas a ver. Puedes intentar cargarlo, y va a decir, Oye, Oye, este método no existe así de nuevo y te da algún control y alguna orientación en cuanto al marco general de lo que estás construyendo. Ahora si bajamos aquí, claro que Willen comenta este y ya puedes ver ahora no obtenemos salida porque tenemos ambos métodos definidos. El otro es que, no son solo esos dos métodos que tienes que implementar, o tienes que crear el a todos los métodos que se especifican en el en tu cara, sino que puedes agregarle tus propios métodos. Entonces ahora tenemos 1/3 método aquí que no se delineó en la interfaz. Pero puedes ver que aún no obtenemos ningún error o simplemente bien con ese tipo de cosas. Entonces de nuevo, esto es Esto está creando una interfaz que te permite obtener algún control sobre alguna estructura sobre las clases que estás creando. Um, y eso se puede usar de varias maneras diferentes, ya sea usted personalmente o trabajando en equipo y así sucesivamente. Entonces eso es lo que son las interfaces. Eso es lo que Por lo tanto Ah, eso lo hará para esta lección. Gracias por ver. Nos llevaremos la próxima vez 10. Primer de MVC: Hola ahí. John Morrissey, John Morris online dot com. Esta lección Esto va a ser una imprimación en M V. C. Ahora quiero asegurarme de que soy ah, claro en lo que quiero decir con imprimación y de lo que vamos a estar hablando aquí. Por lo que la imprimación está diseñada para ser una especie de visión de nivel superior de los conceptos. Entonces no vamos a meternos en escribir ningún tipo de código con esto. No Ah, ya sabes, entrar en nuestro editor y poner todo esto Esto va a ser una visión general de conceptos. Y he incluido esto a pesar de que realmente no es necesario. En realidad no es programación 100% orientada a objetos. Creo, ah, ah, que mucha gente, cuando piensan en la programación orientada a objetos, última instancia están empujando hacia una especie de patrón de diseño porque en última instancia objeto o cualquier programación es sobre la construcción de aplicaciones. Y así NBC es un patrón de diseño realmente popular, pero no es el único patrón de diseño. Ah, eso está ahí fuera. Y realmente, si quieres aprender NBC en profundidad como eso, ese es tu patrón de diseño de lo que te gustaría considerar tomar un curso específico de M V C porque es lo suficientemente grande de un tema que amerita su propio tipo. Por supuesto. Entonces quiero darte una imprimación en una visión general de los conceptos de alto nivel para que entiendas M. V c y entiendas que es uno entre los muchos de los patrones de diseño que hay por ahí. Pero también es muy popular, y así podemos hablar de algunas de las cosas que está pasando con ella. El otro tipo de tumba o especie de adversidades. Uno. Voy a estar haciendo referencia a este artículo aquí sobre punto del sitio y quería hacer realmente venir aquí y mostrarte esto porque A y yo vamos a enlazar a, ah, este artículo, uh, uh, donde sea que pueda en términos de donde sucede que estás viendo este curso. Pero voy a enlazar a este artículo para que lo puedas ver. Pero hay una especie de dos cosas sobre este artículo una que realmente quería usar. Ah, me gusta mucho esta foto de aquí, y no quería simplemente deslizar la foto, así que quería mostrarte dónde la conseguí en realidad. de. Vamos a hablar de esto a medida que pasemos por esto. La otra cosa es esto. Este artículo hace un argumento con el que resulta que estoy de acuerdo cuando se trata de NBC. Y el argumento es que muchos de los frameworks que vas a ver hoy si sales y miras, ah, ah, los diferentes frameworks o personas que están usando el patrón NBC hoy, mucho de lo que vas a encontrar es una especie de un uso alterno de lo que realmente es NBC . Y como este artículo como hace el punto hacia, no es realmente cierto. M. V C. Y hablaremos específicamente de por qué esa ISS y así y eso no lo hace mal. Ah, lo que tipo de pasó es que la gente ha desarrollado su propio tipo de patrón de diseño. Pero es importante entender que lo que se ve por ahí desde muchos frameworks, realmente es un patrón de diseño diferente que implementa ideas similares pero de una manera diferente. Y así si realmente queremos hablar de pura especie de verdadero M v C, quiero asegurarme de que entiendas lo que es eso. Eso no es decir que no se puede hacer lo que hacen estos otros marcos aire, y luego hay que hacerlo de esta manera o uno mejor. Esto en el otro. Yo sólo quiero señalar que hay una distinción entre los dos, para que sepan qué es eso? Está bien. Entonces, ¿qué? Dicho esto, vamos a entrar en qué es esto un poco. Por lo que NBC significa controlador de vista de modelo. Toda la idea es separar la lógica empresarial y una especie de gestión de datos y, igual que el tipo de cosas de back end con especie de front y display tipo de cosas. Y si alguna vez has construido algún tipo de aplicación, sabes que la hay. Puede haber este tipo de enloquecer entre los dos, y sólo hay tiene un punto en la aplicación. Si no estás haciendo este tipo de framework NBC o algún tipo de diseño más gordo y diseñado para manejar esto siempre un punto en la aplicación donde sientes que parte de él es un poco sucio. Y es como si esto fuera una especie de Ah, hackear y no se siente súper limpio. Y entonces lo que hace NBC es que ayudó a tratar de abordar ese tipo de cosas por darte una especie de principios y reglas que puedes seguir para ayudar a mantener tus aplicaciones realmente limpias, realmente modulares y así sucesivamente. Entonces, ¿qué otra vez, qué? NBC es sinónimo de su controlador de vista modelo. Entonces estos airean los tres componentes y verás como nosotros, uh, en nuestra imagen de aquí. Todo esto está relacionado con esta idea implícita del usuario. Por lo que a veces hablo de este usuario implícito. Ah, esto es Siempre se asume que hay un tipo de usuario en segundo plano usando nuestra aplicación. Y así el controlador, en última instancia Ah, en realidad, probablemente sea mejor si empezamos a hablar primero del modelo. Entonces el modelo es lo que utilizamos para nuestro tipo de almacenamiento a largo plazo de datos. Por lo que este el modelo es en última instancia ciego. No tiene conexión o tiene alguna idea de lo que está pasando con la vista o el controlador aparte de lo que se solicita de la misma? Y lo que quiero decir con lo que se solicita de ella es que el controlador, Como ves aquí, el controlador interactuará con el modelo y actualizará los datos que hay en el modelo, y la vista interactuará con el modelo con el fin de amparar de hacerle preguntas con el fin obtener los datos que necesita con el fin de mostrar lo que necesita para mostrar al usuario la interfaz que necesita mostrar para el usuario. Pero el modelo realmente no tiene idea de nada de eso. No sabe por qué se utilizan las necesidades de datos. No sabe por qué necesita actualizarse. Todo lo que sabe es que me han dicho que actualice estos datos o me han dicho que recupere estos datos y los devuelva. Y así simplemente está respondiendo a las peticiones del controlador y de la vista. Y eso es importante entender en cuanto a separar lo que está pasando entre el controlador y la vista y de todo lo demás que está sucediendo con el modelo. El modelo en última instancia va a girar en torno a tu tipo de función de base de datos, por lo que va a ser lo que va. Va a ser que tu multitud va a estar insertando datos en ah tabla particular. Si se le dice, va a estar actualizando esos datos. Si se le dice va a estar recuperándolo y regresándolo a ah view si se le dice , va a ser, ser, ah otra vez borrando esos datos. Si se le dice que lo haga. Por lo que solo está reaccionando a lo que se le dice que haga, y es completamente ciego y se enfoca únicamente en el almacenamiento a largo plazo de datos. OK, entonces cosa cuando piensas modelo, no es 100%. Pero solo piensa en la base de datos. Cuando estás pensando en eso, entonces es cuando entramos en esta distinción entre la vista y el controlador. Ahora te darás cuenta aquí no hay flechas que van entre la vista y el controlador, y aquí es donde nos metemos en esta distinción entre lo que verás desde los marcos que hay por ahí y especie de verdadero M v C. En verdadero M V C. No hay interacción entre la interacción directa entre el controlador y la vista. El único modo en que interactúan indirectamente entre sí es a través del modelo. Y lo que quiero decir con eso es que si el controlador actualiza algunos datos en el modelo, por supuesto eso en última instancia va a afectar la vista. Pero el controlador no le dice nada a la vista directamente, y la vista no le dice nada directamente al controlador ahí completamente separado. Ahora que lo que Por qué eso es diferente de los marcos modernos es mucho de los marcos modernos . Lo que verás es que el controlador en realidad se sienta en la parte superior de la vista y del modelo. Por lo que muchas veces lo que sucederá es que el controlador controlará qué vistas se están mostrando. Y es simplemente tirar de plantillas de la vista con el fin de tener la pantalla adecuada. Y eso no es realmente cierto. M v c. En la verdadera NBC, las vistas son más que simples plantillas. En realidad los puntos de vista están interactuando y hablando con los datos, y controlan eso, toda esa parte de la misma. Entonces para ponerte realmente específico sobre cómo funciona esto, digamos que vas a una especie de página Web, y cuando vas a tu digamos indexado, podría ser cualquier dominio Lissy Index, parar PHP Cuando esa página se carga, hay una serie de cosas que deben suceder en cualquier tipo de aplicación. En primer lugar, la aplicación necesita saber en qué página estás. ¿ Estás en index dot PHP? Ya sabes, si estás en un CMS, podrías ser un punto de índice PHP. Pero entonces un parámetro de consulta de P equivale a nueve. Bueno, eso significa que estamos solicitando el puesto que está tiene idea del número nueve. Eso es diferente a estar en la página principal real. Por lo que necesitas saber dónde está el contexto de dónde te encuentras como resultado de dónde estás ,necesitas saber. , A lo mejor necesito revisar ah, ver si hay alguna variable de sesión para ver si esta persona ha ingresado. O tal vez necesito tengo sí tengo ah, parámetro de consulta que especificó que me requiere consultar, consultar cierta información y mostrar las cosas de manera diferente. Entonces si estás en index dot PHP sabría parámetro de consulta, podría tirar de la plantilla home dot PHP Y podría decirle a los datos o decirle al modelo Hey, necesito todas las publicaciones. De acuerdo, necesito o necesito el último 10 post porque soy un display 10 en su momento. Entonces consultará el modelo y dirá, necesito los últimos 10 posts. Se va a agarrar. De acuerdo, necesito la vista de la página principal, y tomará los datos y lo pondrá en la vista. Y eso es lo que en última instancia lleva a la visualización de la página. De acuerdo, eso es todo el trabajo de vistas. Se supone que la vista maneja todo eso. Averiguar el contexto. Averigua qué papá, necesito para poder averiguar qué vista necesito. Entonces sé lo que necesito para mostrar al usuario que todo es el lado de vista de las cosas. El lado del controlador de las cosas se hace cargo cuando algún tipo de hay algún tipo de interacción entre el usuario y nuestra aplicación. Entonces digamos que estás de nuevo. Estás en una página de correos de bloques individuales y en una página de publicación de blawg individual, podría haber un cuadro de comentarios, así que hay un pequeño área de texto con el botón de enviar. Tan pronto como se presente, se hace clic en botón y vamos sólo por un segundo olvidarnos de Olvídate de Ajax y JavaScript todo eso por un segundo. Imaginemos periodo PHP y nada más Tan pronto como se haga clic en ese botón. Ahora hemos tenido una interacción entre el usuario y nuestra aplicación, y necesitamos manejarlo. Y así necesitamos alguna manera de saber. Bueno, ¿qué datos se presentaron, cuál era el contexto y qué era? Algunos lo. decir, Esdecir,podría haber sido un comentario, pero también podría haber sido el administrador en la parte de atrás y crear una nueva publicación como cuál es el contexto de estos datos para que pueda averiguar qué necesito hacer con él. Eso es lo que hace la contraloría. El controlador descifró, descifró. De acuerdo, Este dato fue enviado desde una página de correos de pantano individual. Fue un comentario y fue un comentario en este post en particular. Esto fue un comentario de esta persona. Esto es lo que fue el comentario. Esta es la fecha que usted conoce, se descifra todo el contexto de donde vino esa interacción del usuario. Y se necesita esa interacción y la procesa. Y luego se actualiza. Demotte le dice al modelo ¿Qué actualización del dedo del pie? En consecuencia. Entonces le dice a la modelo, Básicamente, Hey, acabamos de recibir un comentario que necesito. Y fue en este post. Necesito que agregues un nuevo registro a tu base de datos a tu tabla de comentarios. Y este es el dato Ford. Este es el post que era de Este es quien es de etcétera. El modelo va bien. ¿ Quién terminó fechas? Eso es todo. Simplemente hace lo que se le dice que haga. Entonces ahora eso puede ser un poco fangoso porque puedes empezar a pensar Ok, la vista y el controlador conectados porque si estás en la página y hay un botón de formulario ahí. Esa es una especie de vista, pero también son datos enviados por el usuario, pero entonces es una especie de controlador, por lo que son un poco mixtos. Pero la forma de hacer la clara distinción al respecto es ésta. A la vista se le encarga mostrar el botón y mostrar el formulario y el parámetro de acción en el formulario para decir dónde está esto. Se supone que estos datos se procesan en la vista es responsable de mostrarlos. Una vez que se pulsa el botón, sin embargo, la vista no tiene nada que ver con cómo se procesan los datos en sí. Eso es todo eso es todo el controlador. De acuerdo, entonces el controlador se hace cargo en esa parte, y luego actualizará el modelo. Y luego, por supuesto, como resultado de eso, entonces se cambiará la vista debido a que se han cambiado los datos. Entonces otra vez, Teoh tipo de pasar por el proceso. Cuando una página se carga, digamos, una página de publicación de bloque individual. Es la responsabilidad de los puntos de vista mirar a la U. R L y decir: Ooh, tenemos P igual a nueve. Vale, Eso significa que esto es post I decano, este es un post su i. D nueve. Y así necesito agarrar los datos para ese post de la base de datos. Necesito mi única vista de post porque esta es una sola página de post, y voy a insertar o inyectar estos datos en esta plantilla y boom. Eso es lo que voy a mostrar que incluye un formulario de comentarios. Entonces esa es toda la vista y en ese proceso, la vista podría ir de ida y vuelta con el look modelo y decir: Hey, Hey, me dieron un post con la idea de nueve. ¿ Eso existe? Y el modelo puede decir Nope, eso no existe. Y puedes ir La esperanza no existe. Eso significa que necesito mi plantilla para mi 404 Boom. Yo exhibo eso o puede decir, Hey, ¿existe esta idea post de nueve y modelo dice, Sí, eso existe. Y luego te puedes ir. De acuerdo, mándame los datos para eso. Y ahora la vista puede ir. De acuerdo, obtuve datos para esto y cómo necesito mi plantilla única. Ah, expediente. Aquí tienes. Aquí está Aquí está lo que necesitas. Esa es la interacción entre vista y modelo. De acuerdo, Ahora, una vez que se muestre esa página e incluye el formulario que el ex controlador enviado se hace cargo. Contralor, ya sabes, dice a la base de datos, Hey, tengo un comentario para Post I D nueve. Este post yo d nueve existe. Modelo dice Sí, eso existe, dice. OK, agrega este comentario al anuncio. Estos datos a la están en un nuevo registro a la tabla de comentarios referenciando y hace referencia. Ah, post I D número nueve base de datos va bien. En ese punto, la base de datos le dirá al controlador si eso fue exitoso o no. Dirá que dirá de nuevo al controlador. Oye, que eso te comente sobre mí e inserte, Está bien ir. Todo insertado y controlador Will buscará eso ahora si el si el modelo dice de nuevo al controlador. Oye, traté de insertar esos datos, pero algo salió mal. Aquí salió mal. ¿ Qué salió mal? El controlador. Go Hope algo salió mal, y ella y luego manejará eso en consecuencia en términos de lo que usted ha configurado. Si quisieras ir a una página diferente o lo que sea, hará una especie de aire redirigido en base a eso. Está bien. Y así ahí al final de lo que sea que vuelva a hacer la contraloría. Nos olvidamos de Ajax y JavaScript por un segundo. Sea cual sea el acto de edad, sea cual sea el final de la contraloría, siempre va a haber algún tipo de carga o redirección de páginas. Por lo que puede que te dirijan a una página aérea o tal vez leas si, si tiene éxito, el controlador puede decir, OK, fue exitoso. Podemos redirigir a aquí. Entonces al final de lo que haga la contraloría, siempre va a haber Page. Siempre va a haber una especie de actualización de la vista cuando eso y puede ser un redireccionamiento a una página diferente, etcétera. Pero siempre hay una especie de recarga una actualización. De acuerdo, cuando eso sucede y que esas nuevas páginas ahora entrando en línea, ahora estamos de vuelta a la vista está en control. De acuerdo, entonces realmente, la única interacción entre el controlador y la vista es que el controlador activará este tipo de actualizaciones y digamos, necesitamos volver a cargar la página porque nuestros datos han sido actualizados. Entonces eso es y luego cuando eso sucede esa recarga, entonces estás de vuelta a la vista es lo que está tratando de averiguar qué está pasando. De acuerdo, Estamos en poste me d nueve otra vez. Tenemos que conseguir el contenido para eso. Agarramos todos los comentarios. Ah, hay un nuevo comentario Boom. Nosotros poblamos la página con el nuevo cometa, ¿de acuerdo? Y así de nuevo, sólo para volver a una especie de verdadera NBC, es el usuario el que probablemente el controlador que procesa la entrada del usuario y se comunica directamente con el modelo y en última instancia actualiza y manipula el modelo. Es la visión que interactúa con el modelo y en última instancia muestra lo correcto. El correcto ah, uh, interfaz de usuario para el usuario basado en el contexto que el que esto es todo en términos de, qué, qué, buscapersonas en cualquier tipo de no, cualquier tipo de otro sesión muy visible podría comprobar. Y luego, por supuesto, los datos que realmente solicita del modelo. Entonces, de nuevo, quiero darles ese marco de panorama grande para lo que realmente es NBC y cómo interactúan esas cosas . Entonces ojalá ese tipo de te ponga en el camino correcto, y luego solo quiero mirar algunos algunos algunos algunos AP diferentes aquí. Entonces uno es de su llamado este mini. Entonces esto es sólo una hermana zit. Se trata de una aplicación PHP extremadamente simple y desnuda. De verdad se conoce para crear prototipos. Si quieres familiarizarte con cómo se construyen los marcos y quieres empezar de pie, interactuar con y así sucesivamente, entonces esto es algo que puedes usar. También hay diferentes tenedores de la misma. Entonces tienes diminuta um, tienes muchos tienen, ah, ese tipo de cosas. Entonces ah, nuevo, es una, um es una cosa muy sencilla que puedes mirar. Es un poco más fácil mirar algo como esto que simplemente ir de inmediato a mirar algo como Laura Bell y ser como, Whoa, ¿qué está pasando? Entonces ah, otra vez, uno que se puede ver. Es un poco mayor, pero estas cosas no tienden a cambiar una tonelada entera porque son realmente básicas, huesos desnudos. Entonces si hacemos click en aplicación, se puede ver que tenemos carpetas para la vista para el modelo para el controlador, y así si hacemos click aquí, entonces tenemos estas las diferentes vistas que tenemos casa y cuando tenemos diferente tipo de archivos que están ahí para la página principal. Tenemos problemas Así que tenemos ah Index para eso tenemos canciones en Tenemos ah display de canciones Probablemente una edición de canciones y así sucesivamente Así que estas son todas vistas diferentes Si miramos la modelo, ve a modelar ese PHP y nos fijamos aquí te te darás cuenta de que esto está todo OK tiene que ver con la base de datos Ah conectando vía PDO consiguiendo todas las canciones Así que lee, consigue y lee lo mismo Así que consigue todas las canciones Ah, aquí abajo tenemos conseguir canción Así que consigue una canción Esos aire Ambos métodos leen tenemos agregar canción Así eso es insertar Tenemos actualizaciones Canción Así que eso es actualización y no tenemos un delete Pero tenemos ¿Tenemos el plomo aquí arriba? Ah sí, Sí tenemos borrar canción Y luego tenemos conseguir cantidad de canciones Así que tenemos tres métodos de lectura. Tenemos una actualización. Tenemos un delete Ah, y tenemos un inserto o crear Así que de nuevo, vuelta a mi punto que el modelo se trata principalmente de las interacciones de base de datos Es realmente viene abajo del dedo del pie asqueroso y luego cualquier clase de auxiliar alrededor de eso diferentes tipos de multitudes. Por lo que tienes tres métodos de lectura y así sucesivamente que tal vez tengas que hacer. Pero la base de datos o el modelo se centra únicamente en los datos, el almacenamiento de datos, la actualización de datos, la recuperación de datos, ese tipo de cosas. Ahora de nuevo, ya sabes, el tipo de si miramos los puntos de vista es de lo que hemos hablado. Si miramos a casa y miramos el índice de punto PHP, realmente es sólo una especie de plantilla. Y luego si entramos en, ah, controlador encendido, vamos sólo con casa, se puede ver que el controlador está cargando diferentes vistas. Entonces de esto es de lo que estoy hablando cuando miras algunos de estos más, uh, uh, estos frameworks que están por ahí es Ponen el controlador en la parte superior de la vista, y en realidad tienen el controlador cargando vistas y averiguando qué vistas carga del dedo del pie. Y eso no es realmente el camino, como se diseña una especie de NBC pura Ahora de nuevo, no digo que eso sea malo. No digo que uno sea mejor que el otro. Simplemente digo que la forma en que muchos de estos marcos han ido es una especie de alteración de la NBC. Entonces ese es el tipo de cosas que vas a ver. Pero aún así lo haces. Ya ves, aquí tenemos modelo. Te tenemos a ti. Contamos con controlador. Aquí te dejamos un ejemplo de otro. Por lo que tenemos este poco más básico. Tenemos vistas en aquí páginas, post usuarios. Entonces todos los diferentes tipos de puntos de vista que podríamos tener. Um, si entramos en páginas, vemos las diferentes páginas que tenemos. Um, vamos a las modelos. ¿ Qué va a usuario? Entonces esta es una clase fría dedicada a trabajar con el usuario, como como he mencionado antes. Esta es toda una clase, ah, destinada a lidiar con el manejo de puestos. Si entramos en bibliotecas aquí, tenemos controlador toda clase para el controlador. Uh, tenemos núcleo. Tenemos toda una clase para el núcleo. Aquí tenemos base de datos. Entonces toda una clase por interactuar con la base de datos. Y así de nuevo, tenemos modelos, vistas, controladores. Tenemos esta zona de ayudantes aquí. Y luego si nos fijamos en bootstrapped out PHP, Aquí es donde se puede ver nuestro SPL auto load register nombre de clase y él va con requerir quiere stock de biblioteca. Nombre de la clase. Entonces esto es para tratar con las clases ah que hay en la biblioteca. Eso es lo que este autocargador ayuda a dio. Ahora esto no parece estar funcionando con el nombre Espacios en absoluto, así que eso es algo a lo que poner atención. Pero de nuevo, sólo un par de ejemplos de diferentes tipos de, ah, aplicaciones con las que podrías ver tu trabajo por ahí y cómo tratan de implementar M. V. C. Al final de la día, sabes que es tu aplicación, y sabes la forma en que quieres implementarla es como quieres implementarla. Yo solo quiero darte una especie de imprimación para ayudar a entender los conceptos principales, y lo que hay que entender es, y algunas personas podrían estar en desacuerdo con esto y decir No, se ha resuelto, pero de nuevo, yendo con lo que hemos hablado de la distinción de, ya sabes, tipo de verdadera NBC y lo que vemos ahí afuera y marcos, no creo que eso sea para debate. Pero ah, mucha gente sigue tratando de resolver este tipo de cosas, ¿ verdad? Es No es como si hubiera esta manera dura, rápida. Así es como lo haces. Está bien, hay todavía algunos, sobre todo a medida que tu aplicación se vuelve más compleja y ha pedido manejar más cosas. Puede empezar a ser un poco mawr más difícil mantener ese tipo de separaciones y así sucesivamente. Pero si consigues los conceptos básicos en la idea base y entiendes, sabes que ese controlador se ha reunido por lidiar con la entrada del usuario y actualizar el modelo, oh están interactuando y manipulando modelo. La vista está destinada a, uh, mostrar la interfaz de usuario y las necesidades de datos y averiguar qué plantilla necesita mostrar y todo ese tipo de cosas en esa interacción. Y el modelo es completamente ciego. Todo lo que hace es reaccionar a lo que se le pide. Entonces ese tipo de empieza el dedo del pie. Podrías empezar a averiguar cómo separar tu aplicación de cualquier manera. Ese tipo de tiene sentido, así que espero que eso te dé un poco de comprensión de la NBC en algunas de las cosas de nivel superior . Como dije, esto es una imprimación. Si realmente quieres cavar en NBC específicamente como un patrón de diseño, uno entre los muchos. Se trata de uno popular. Es una buena. Pero es uno entre muchos. Yo recomendaría no encontrar un curso completo en NBC y una especie de buceo en eso y teniendo en cuenta algunas de las cosas de las que hemos hablado lo harán, la forma en que te pueden enseñar. Ah, NBC. Puede que no sea la verdadera clase de NBC de la que estamos hablando, y eso está completamente bien. Si estás bien con la forma en que se te ha enseñado, entonces por todos los medios ve esa ruta. Entonces está bien, eso lo hará para esta lección. Esperemos que sacaras algo de eso. Gracias por ver. Hablaremos contigo la próxima vez. 11. Cómo construir aplicaciones profesionales con OOP: Hola, John Morris. Aquí, John Morris, online dot com. Esta lección. Quiero tratar de realmente darte la ayuda o la dirección, la perspicacia para poder empezar a construir tu propia aplicación profesional basada en todo lo que has aprendido hasta este punto. Entonces hay un par de advertencias entrando en esto. En primer lugar, creo que el más grande es lo que les voy a mostrar aquí no es alguno. Esto es algo que vi una especie de versión de una vez, y como que le he añadido mi propio sabor. Pero lo que te estoy mostrando aquí no es necesariamente una especie de la forma en que todo lo hace. Todo el mundo lo está haciendo ahora o yo no. Ni siquiera diría ir tan lejos como decir esto es necesario la mejor manera de hacerlo. lo que realmente estoy tratando de llegar mostrándote esto es tratar de estirar tu mente y hacer que pienses en todo lo que hemos aprendido de diferentes maneras y para ayudar a que tipo de chispa tu creatividad. Y hay una especie de razón importante detrás de por qué quiero hacer eso, porque no hago una de las cosas en las que creo que mucha gente se queda atrapada, y es realmente, realmente buenos programadores son estos que hay estos duros, formas rápidas de eso. Tenemos que hacer cosas. Probablemente has visto esto por todo el lugar donde sabes que sale NBC y todo el mundo te dice que tienes que hacer NBC y te miras sabes lo que está pasando en nuestro espacio ahora mismo en adelante querida empieza a ser una especie de esta estandarización de la forma en que todo está hecho, y parte de eso es bueno. Desarrollas mejores prácticas y quieres saber construir la mejor aplicación. Confías en las mejores aplicaciones y así sucesivamente. Pero uno de los problemas que creo que eso lleva a es que la gente mira una mejor práctica a la que empiezan a mirar. Es como si fuera la única manera. Y si no lo haces de esta manera, mientras eres solo un idiota y realmente me esfuerzo por empujar hacia atrás en contra de eso porque al final no quiero crear estudiantes que sepan hacerlo, que solo sepan hacer lo que todo el mundo está haciendo. Yo te quiero dar lo que es. ¿ Por qué la imprimación NBC. Pero quiero estudiantes que no sean seguidores, sino líderes que sean las personas creativas que constantemente estén mirando las cosas y diciendo: ¿Cómo podemos hacer esto diferente? ¿ Cómo podemos romper esto? ¿ Cómo podemos hacer esto mejor? ¿ Y son los que airean creando las nuevas formas que se convierten en las mejores prácticas? Eso es lo que realmente quiero intentar y darte. Y creo que la forma de hacerlo es estirar tu mente, darte diferentes perspectivas y mostrarte diferentes formas de hacerlo. Incluso si pudieras mirar hacia atrás, ya sabes, todos podríamos mirar hacia atrás en estos cinco años a partir de ahora y ser como, Oh, eso fue realmente tonto. Tienes que estar dispuesto a arriesgar eso. Tienes que estar dispuesto a arriesgarte a caer sobre tu cara para poder hacer algo grande. Y sé que me estoy volviendo un poco personal aquí, pero de verdad, verdad creo eso. Es por eso que incluso estoy haciendo este video en primer lugar es para inspirarte y conseguir que pienses en esto y un poco diferente a tal vez lo que todo el mundo está haciendo así lo diría que quiero hablar de esta idea de construir verdaderamente tipo profesional de aplicaciones y la forma en que todo funciona. ¿ Es a mí que siempre empieza con la base de datos? Entonces para hablar de eso, esperaré Abrir esta instalación encontrada No te preocupes. Llegaremos a algo de lo que estás viendo aquí con este índice y así sucesivamente. Todo de lo que vamos a hablar en última instancia conduce a esto. El storylines justo aquí y la sencillez de ello es realmente lo que buscamos. Entonces Pero de nuevo, todo comienza con la base de datos porque ahí es donde se almacenaron los datos. Eso es realmente en la mayoría de las aplicaciones. En última instancia, la parte más importante de tus datos se fastidia. Entonces vas a tener todo tipo de problemas. Y esos problemas son mucho más difíciles de corregir porque entonces no sabes qué datos son, ¿ verdad? Si se trata de un aire de código, puedes usar los datos para ayudarte a resolverlo. Si es un aire de datos, se pone realmente difícil saber qué es qué. Por lo que he hablado de esto en algunos otros cursos que han hecho, pero quiero cubrir aquí otra vez porque de nuevo. Creo que esta es la base para una aplicación profesional. Entonces cuando estás creando una aplicación, hay otra vez. En términos generales, podría haber adversidades a este tipo de cosas. Pero la mayoría de las aplicaciones que vas a construir hay tres tipos primarios de tablas que vas a querer crear. Y así quiero platicar a través de cada uno de esos y cómo todo tipo de trabajo juntos. Entonces el primer tipo de tabla que vas a construir es lo que se llama en lo que yo llamo una tabla de objetos. Y aquí es donde vas a almacenar tus objetos en los datos sobre ellos. Entonces en nuestras tablas array justo aquí. Y acabo de usar estos como ejemplos para una especie de punto de partida para que pienses en cómo construir tu base de datos, dependiendo de tu aplicación. Esto, por supuesto, cambiará. Y una de las cosas que no quiero hacer en este video es darte todas las respuestas. Esto es más un reto. Video este video aire. Esta lección está destinada a no darte todas las respuestas, no darte todo el código y desafiarte a escribir estas cosas y resolver estas cosas tú mismo. Así es como realmente te mueves a ser un desarrollador profesional. Pero en nuestra matriz de tablas aquí, esto es Básicamente somos que lo que estoy diciendo aquí es estos aire, las diferentes tablas que podríamos tener en esta aplicación en particular en que la publicación y las tablas de categoría serían nuestras tablas de objetos. Entonces si venimos aquí abajo a ejemplo para la tabla de correos, lo que vamos a almacenar en esas tablas son los datos, y quiero ser específico y usé la palabra data y hablaremos de la diferencia. ¿ Qué? Eso Por qué eso necesita ser específico. Y segundo. Pero son los datos los que en última instancia forma el objeto. Entonces un post no es un post realmente? Correcto. Si no tiene título, si no tiene algún contenido, ya sabes, si no tiene babosa. Por lo que el y y y todos estos podrían debatirse, por supuesto. Pero lo que estamos diciendo cuando creamos nuestra aplicación es que una publicación no es realmente una publicación completa a menos que tenga thes cosas. Entonces la tabla de objetos va a almacenar esos datos y lo que otra vez? ¿ Cuáles son las dos cosas que creo que son únicas sobre una mesa de objetos? ¿ Es eso o un objeto? ¿ Se requiere tanto el dato que es que estamos almacenando y pondrá un Asterix por, requerido en el sentido de que puedes salirte con la tuya sin tener algo de este derecho? Se puede crear una publicación sin contenido o publicación sin título. No es que no puedas hacer eso, pero no es realmente un post. Entonces para que sea lo que se supone que sea, se requieren estos datos, y son, ah, ah, datos los que en última instancia ayudan a formar el objeto. Entonces si estamos pensando en nuestras analogías, es como las ruedas, ¿ verdad? No se puede tener un auto sin las ruedas. Técnicamente, podrías tener un auto y estaría ahí sentado. Pero no haría lo que se supone que haga si no tuviera las ruedas. Por lo que los datos son como todos esos componentes que tiene que tener. De acuerdo, entonces y tienes que ser realmente despiadado con esto porque puedes pensar que algo ah objeto tiene que tener algo cuando realmente no lo hace. Entonces otra vez, contenido del título , ya sabes, tal vez una imagen destacada sería una que dices que se requiere. Una babosa tú eres el desarrollador. Llega a decidir esto. De acuerdo, entonces eso es lo que es una mesa de objetos. Son los datos los que realmente forman el objeto en sí. Y se puede ver aquí abajo bajo categoría. Tenemos tipos similares de tenemos I. D. Lo llamamos nombre y descripción, pero eso es realmente similar a título sobre contenido y luego a babosa también. Por lo que nuestra publicación y nuestras tablas de categoría son tablas de objetos. Estas son tablas primarias, estas con unas de Neil que estamos almacenando todos nuestros diferentes objetos que creamos en siguiente tenemos mesas metta. Por lo que las metatablas son hablamos de la tabla de objetos almacenar los datos, las metatablas almacenarán los metadatos. Y así de nuevo, los metadatos tienen especie de dos características distintas que son una especie de, en contraste, de las dos características que tienen los objetos y que son los metadatos datos serían cosas que consideramos opcionales s, por lo que realmente no necesariamente siempre tiene que establecerse para cada objeto. Y los metadatos suelen ser cosas que describen el objeto que describe el objeto o los datos que componen el objeto. No son los datos de las cosas los que realmente construye el objeto en sí. De acuerdo, así que para tratar de dar un ejemplo de eso en WordPress, hay un enchufe en el que usó el frío CEO de Yost s. Y una de las cosas que hace el CEO de Yost s es cuando creas una publicación, que es un objeto en WordPress, agrega una pequeña caja para que introduzcas una palabra clave de enfoque. Y cuando ingresas el foco, palabra clave, Lo que hace es analiza que tu título, tu contenido, tus etiquetas, toda esta información sobre el objeto y te da una puntuación y luego te da sobre cosas que podrías hacer para lograrlo. Morrell seo amigable. Entonces esa palabra clave de enfoque, creo, encaja claramente en el ah, el escenario de los metadatos, ¿no? La palabra clave focus no es No necesitamos eso para crear el objeto. No es parte del objeto en sí. Lo que está haciendo es que está describiendo más el objeto. Entonces lo está analizando y dándonos una especie de puntaje. Y así es que está describiendo, o sus datos sobre los datos, cuál es qué? El tipo de la definición de metadatos y entonces tampoco es necesario. Si no ponemos en la palabra clave focus, todavía tenemos Ah, el objeto objeto todavía puede hacer lo que queremos que haga. Um, simplemente no sabremos cuál es el CEO que tipo de puntuación por ello es así que esa es la diferencia entre los dos y tú tipo de. No es necesariamente una línea brillante usar una frase común en estos días. Ah, es algo que tienes que ir y venir y tratar de averiguar ahora con eso dicho, cuando queremos almacenar este tipo de datos, en realidad puede ser un poco difícil si estamos tratando de poner esos datos en la misma tabla que nuestro objeto, correcto, Porque tal vez nosotros, sabes, si si si vamos a tener, ah, cierto particular una cierta pieza de metadatos que vamos a agregar a la a la tabla de objetos real, bueno, tendríamos que tener una columna para eso. Y entonces podríamos tener 99 posts que tienen no tienen que metadatos y uno que sí. Entonces, qué tipo de empieza a ser un poco de pérdida de tiempo. Además, cuando comienzas a considerar lo que podríamos tener 10 piezas de metadatos. Y así ahora tendrías que sumar. Si lo vas a almacenar en los objetos capaces, tendrías que agregar 10 columnas, y luego tendrías que almacenar los datos sobre eso, o tendrías que crear una especie de metacolumna. Y luego tienes que intentar mantener los pares de valores clave de inserción, lo que significa que estarías trabajando con los Rayos, lo que significa que tienes que serializar eso, lo que significa que entonces no pudiste buscarlo. Y así empieza a ponerse un poco complicado tratar de hacerlo de esa manera. Entonces la forma en que hacemos eso de la forma en que manejamos los metadatos y los hacemos modulares y escalables y flexibles es que usamos una metamesa, y así una metamesa tiene tres primarias. No digo que estas sean las únicas cosas que puedes tener, pero estas son las cosas primarias que necesitas para que esto funcione. Por lo que este post meta designación aquí tiene tres columnas principales. Va a tener el objeto I D. Así que en este caso, tenemos post. Entonces es el Post I d aquí abajo en categoría Meta tenemos categoría i d Así tiene el objeto. D tiene una e médica en el metavalor. Entonces lo que esencialmente estamos diciendo aquí, cuando creamos un registro en esta tabla, es que estamos diciendo para este post con el yo d de digamos uno, queremos adjuntarle estos metadatos. Y la clave, el nombre de los metadatos es utilizar nuestro ejemplo focus, palabra clave. Y entonces el valor de eso es, digamos PHP. Y así lo que eso nos dice es que este post i d la palabra clave de foco para ello es p PHP. Y ahora podemos sumar todo tipo de registros a esto. Por lo que llegamos a otro récord aquí dentro. Podríamos usar la misma idea post de uno. Pero ahora tenemos una clave diferente, y podríamos decir que esto es S e o score, y entonces nosotros el valor de eso es 90. Entonces ahora tenemos el mismo post, tiene dos piezas diferentes de metadatos, y podríamos almacenar 15 piezas de metadatos sobre esa publicación en particular, y no está haciendo que nuestra base de datos sea más engorrosa ni nada por el estilo. Es muy modular, y podríamos almacenar no. Ah, la S e o.. puntuación en el foco, palabra clave para número de puesto con idea dos y tres y cuatro y etcétera. De acuerdo, entonces y luego cuando necesitamos agarrar esos datos, lo que podemos hacer es si estamos en un antes, hay un par de maneras en que puedes manejarlo cuando agarras cuando estás agarrando, digamos que alguien visita un bloque individual página de publicación, y quieres agarrar los datos de la publicación para mostrarla. Cuando agarras esos datos, puedes agarrar automáticamente todo el post meta si quieres. Y así la forma en que harías eso es que irías. Consultarías la metatabla post y tendrías una cláusula where y esa cláusula donde estaría donde Post I d igual y la idea del post que vas a mostrar lo que eso agarraría de las bases de datos. Todos los registros en este post conocieron una mesa que tienen un post i d. de uno o lo que sea el post ideas. Y ahora tendrías todos esos metadatos que eso cuestionó con los que luego podrías trabajar y mostrar cómo quieres en tu página. Puedes hacerlo de esa manera O tal vez un poco más eficiente. Forma es cualquier lugar que quieras volver a verte Estás cargando una página que muestra una publicación de bloque cualquier lugar que quieras dedo del pie mostrar una determinada pieza de metadatos puedes justo lo que sean los metadatos que quieras mostrar Puedes consultar la metatabla por ello para que puedas consultar la metamesa y decir, Ok, me dieron post I d uno y medic e ya sabes Ah ah, Enfoque, palabra clave. Y así ahora solo estás consultando estás renunciando por su el Post I d y el Medic E y solo estás consiguiendo ese solo disco. Y así ahora sacas ese solo registro y lo exhibes donde quieras. En lugar de tirar de todos los datos, independientemente de que lo vayas a usar o no, solo tienes que tirar de la única cosa que necesitas. Ella puede manejarlo tipo de cualquier manera ahí, pero hace que sea realmente modular para que puedas tirar de estos datos en pantalla y así sucesivamente para que estés hecha una mesa Así que no tienes mesa de objetos. Tienes una metamesa. El último tipo de tabla que tienes es una tabla de relaciones y lo que hace la tabla de relaciones . ¿ Esencialmente se vincula a objetos juntos? Por lo que el contexto de esto se basa en la aplicación. Entonces, por ejemplo, en un CMS podrías poner una publicación en una categoría. Eso es algo bastante común que la gente quiere hacer. Bueno, la forma en que haces eso es a través de las relaciones. Tabla Ah, en, digamos, una red social. Es posible que desee volver a hacer de un usuario un amigo con otro usuario. Lo haces exactamente igual con una tabla de relaciones o cualquier comercio electrónico. Ah, aplicación. Es posible que quieras decir, Este usuario vuelve a tener acceso a este producto. La forma en que haces eso es exactamente la misma. Es una tabla de relaciones. Entonces de nuevo, el contexto, la relación, la forma en que se almacena en el se almacena en la base de datos. esto lo llamo una relación tonta ah, tonta. La base de datos no sabe lo que significa la relación, y podría agregar algunos datos a esta tabla a tal vez, si es necesario. Teoh ayuda a proporcionar más contexto. Pero en términos generales, la base de datos no lo sabe. Simplemente sabe que estas dos cosas tienen algún tipo de relación. Y así creamos una tabla llamada Post Category y en eso vamos a tener esto. Lo que se llama post categoría i D. Así que ese no es el Post I. D. No es la categoría d En realidad es lo que es, es la relación i d. Y eso solo es útil para si necesitas eliminar relaciones y demás. Es un poco más fácil consultar de esa manera, pero en realidad no se requiere, ah, 100% para tener esto, pero es algo bueno tener. Pero las dos cosas principales que tienes aquí es que tienes una. Tienes los básicamente los dos objetos que quieres conectar. Tienes el puesto I D. Y la categoría i D. Qué hace referencia este i d. esto d lo llamo desde nuestro puesto y desde nuestra categoría. Entonces si queremos poner ah post con el i d de uno en una categoría con la idea de uno nuestra tabla de relaciones con literalmente en estas dos columnas, tendrías post I D. Y sería el valor sería uno y Categoría D. El valor sería uno que crea una relación entre ambos. Si querías poner un post con idea cuatro en una categoría con la idea cinco. Tu tabla de relaciones en el Post I D tendría cuatro como el valor y en la categoría. D tendría cinco como valor, y eso crea de nuevo una relación entre los dos. Puedes crearlos. Podrás actualizarlos. Realmente los puedes leer. Puedes eliminarlos igual que cualquier otra tabla. Y así es como realmente pones ah post en una categoría o etiquetas un post con cierta etiqueta . O agregar un usuario a un producto o hacer una amistad entre dos personas en una red social. Es atar a objetos juntos, y lo haces a través de la tabla de relaciones. De acuerdo, así que eso es Ah, eso es mucho. Pero las bases de datos son súper importantes, y es importante entender cómo construirnos de una manera modular como esta. Entonces para cualquier objeto que quieras crear, estás hablando en términos generales, vas a tener un post y una metamesa post. No necesariamente tienes que tenerlos en una mesa si no vas a almacenar ningún tipo de metadatos. Yo diría que la mayoría de las aplicaciones a medida que crecen, eventualmente tendrás esto, pero no necesariamente tienes que tenerlo. Y así pero de nuevo, por cada objeto de un post se encontró con una mesa, en términos generales, y luego por cada tipo de cada dos objetos que quieras Ah, quieres empatar juntos, vas a tener un relación estable. Entonces poniendo publicaciones de categorías en una categoría, tendrías otra tabla de barcos de Pascua, Um, haciendo de un usuario en particular el autor de un post que ese en realidad es un poco. Ahí hay un poco de espacio de dulce porque, como, si trabajas, mira WordPress. El autor está en realidad en la tabla de objetos, y así entonces solo especifican la idea del autor y la tabla de objetos. Podrías hacer eso. Estamos en una instancia en la que no vas a, um, ya sabes, en ese sentido, tiene sentido porque un autor es realmente, realmente importante. Y estás, ya sabes, en WordPress no tienes múltiples autores para un objeto en particular. Entonces no estás atando. No estás teniendo que atar Ah un objeto a otros múltiples objetos como lo harías cuando tienes un post y quieres ponerlo en múltiples categorías, ahí es donde empieza a ponerse complicado. Entonces en ese sentido, como que tiene sentido. Y por eso digo que tienes que montar esta fina línea, Um, en todas estas cosas. Pero en términos generales, cada vez que quieras atar dos objetos juntos, vas a tener una relación estable para ello. De acuerdo, así que esa es la parte de la base de datos. Ahora el otro lado de esto es que ahora tenemos el lado de código del mismo. ¿ Cómo apoyamos todo esto y tipo de hacer que todo esto funcione en conjunto y lo hacemos manera orientada a objetos? Entonces he creado por aquí. Ya verás cómo esta carpeta se llama Nano. Vas a conseguir esto en la descarga para el código fuente. Una otra vez. Adversalía. entrar en esto esto específicamente escribí esto para no darte todas las respuestas. Quiero volver a enfatizar que esto no es algo que puedas simplemente caer y empezar a usar. va a requerir que lo entiendas, que pases y escribas todas las cosas. Entonces de nuevo, este es un video de desafío. Teoh te desafía a salir por ahí y en realidad escribir este código no solo usa una especie de lo que te estoy dando. Entonces, um, esto va a ser simplemente no va a Lo único que va a hacer es lo que ves aquí mismo. Y así tú lo que quieras que haga, si quieres usarlo, tienes que incorporarlo al sistema. De acuerdo, entonces hablamos de objetos. Hablamos de almacenar objetos en nuestras tablas de objetos de base de datos. Hablamos de encapsular en lecciones anteriores sobre hacer un objeto naranja en forma de programación. Entonces ahora ¿qué es eso ahora que tenemos configurada nuestra base de datos? Entonces quiero empezar aquí, y lo primero que quiero mostrarles es que para nuestros dos objetos que estaban trabajando principalmente con su post y categoría, tenemos dos carpetas en nuestra biblioteca o categoría de carpeta lib y post dentro de esta. Después tenemos estos diferentes archivos y así podrás ver cada uno. Contamos con post view y post service categoría, vista de categoría y servicio de categoría. Entonces, nuevo, no estoy construyendo esto de una especie de verdadera manera NBC. Yo quiero mostrarte algo diferente. Y esto es algo que yo había visto antes y especie de desarrollar lo mío propio a partir de él . Y en realidad quiero decir, si soy honesto, en realidad me gusta esto un poco, un poco mejor. Tiene más sentido para mí en la cabeza que, ah, verdadera cosa de la NBC, pero eso es para cada desarrollador para sitio por su cuenta. Pero déjame seguir adelante y deshacerme de esto. El modo en que funciona esto es que tenemos cada uno de estos archivos es una clase, ¿de acuerdo? Y si lo relacionáramos con NBC, esencialmente, esencialmente, tenemos nuestra vista de post que va a manejar nuestros puntos de vista. Eso es bastante parecido casi a lo que tendrías con una nueva instalación de NBC. Tenemos servicio de correos, que se parecería mucho al modelo. Entonces esto va a manejar todo nuestro tipo de cosas de base de datos que necesitamos hacer. No es consultar la base de datos directamente, pero es todo lo que se sienta en la parte superior de nuestra clase de base de datos para hacer todo el aclaramiento. Entonces consiguiendo todos los posts, actualizando posts. Ah, los puestos principales, creación de postes, todo ese tipo de cosas. Todo lo que va a ser en esta clase de post service y luego nuestra clase PHP post dot es una especie de nuestro controlador. De acuerdo, entonces va a ser la cosa que tipo de direcciona el tráfico y nos aseguramos de que estamos consultando las cosas correctas y así sucesivamente en base a los datos que obtenga. Entonces, en cierto modo, es como que es similar a una montada de NBC. Es solo que la forma en que se presenta esto es un poco diferente. Y probablemente lo más grande es que si abro todos estos archivos lo que hemos hecho es así que hemos heredado. Entonces si miro, si miro post dot clase PHP post extiende post view si miro en vista de post, post view extiende post service, ok, y luego post services es por su cuenta. Entonces ahora la forma en que se implementa esto y la forma en que se piensa al respecto o en realidad revés, al revés, así que no quiero que eso sea demasiado confuso, pero creo que aquí tendrá sentido. Por lo que recuerdas de nuestras lecciones de herencia que cualquier clase que extienda otra clase la que hace la extensión es el hijo de la que se está extendiendo. Por lo que Post View es en realidad un hijo del servicio de correos, y Post es en realidad un hijo de post view. Entonces si lo miras los servicios de publicación, realidad, la vista de publicación de padres es el siguiente hijo, y Post es una especie de hijo último. No obstante, la forma en que usamos este post termina porque está extendiendo la vista y vistas extendiendo servicio. Termina heredando todos los métodos de presume, servicio y vista. Entonces esta publicación, este último niño puede llamar a cualquier método, y la razón por la que hacemos eso es solo para hacerlo un poco más fácil. Si venimos aquí a nuestro Nano, puedes ver que estamos creando dos nuevas instancias de estas clases infantiles definitivas tanto para post como para categoría. Ahora podemos correr una vez que tengamos este post en postura. Ated en esta clase nano, podemos ejecutar cualquier método que esté disponible para nosotros en post o en categoría, lugar de tener que instancia e ocho vista y luego instancia e servicio. Al extenderlas, sólo tenemos acceso a todos los métodos. Ahora me imagino que alguien que usa mucho NBC y es un gran proponente de la NBC como, simplemente se cayó de su silla y tuvo un infarto porque eso es bonito, uh, es bastante blasfemo. Por lo que me doy cuenta de la gente de la NBC que eso no es algo que tú quieras hacer. De verdad quieres tenerlos separados. Personalmente lo prefiero así y en la forma en que hago las cosas, pero puede llevar a. Si no tienes cuidado, puede llevar a que las cosas estén un poco fangosas y pongas cosa porque sabes que todo está en última instancia, ya sabes,en sabes, última instancia disponible a través de esta clase única, tal vez no seas tan grande de un stickler sobre lo que pones en verso de servicio lo que pones a la vista. Por lo que tienes que asegurarte de mantenerte organizado y comprensivo en ese sentido. Pero solo me gusta poder tener acceso a todo el conjunto de métodos que necesito, Um, cuando quiero trabajar con él. Por lo que hacemos esto tanto por otra vez, Post y categoría. Por lo que categorías La misma categoría extiende vista por categoría vista de categoría extiende servicio de categoría y servicio de categoría es una especie de por sí misma, y así de nuevo , en servicio, pondrías todo tu tipo de lógica de negocio interactuando con su clase de base de datos y así sucesivamente consiguiendo todo eso en. Ah, y esto de nuevo se parece mucho al modelo a la vista. Ya sabes, aquí es donde estarías entregando todas tus vistas y tu visualización y demás, creando tus formularios de formulario y mostrando tus formularios. Y entonces la categoría era una especie de su controlador. Es en última instancia vamos a tener las funciones de que cuando se presente cualquier tipo de datos de formulario , va a tener todos los manejadores. Y se va a interactuar con el servicio con el fin de actualizar los datos en la base de datos y así sucesivamente. De acuerdo, así es como todo esto se descompone. Lo último que notarás es que esto implementa el servicio, y si miramos la vista por categorías, se extiende e implementa la vista. Y si miramos post view implementa, ver y Post Service implementa servicio. Por lo que ambos de estos tanto las clases de servicio en post y categoría implementan esta interfaz de servicio , y tanto las clases de vista en post y categoría implementan esta interfaz de vista donde aquellos en eso es lo que esto es justo aquí. Por lo que tenemos servicio y aquí está nuestra interfaz y vista. Aquí está nuestra interfaz ahora, acabo de hacer eso para algo así para mostrarte cómo podrías hacer este tipo de cosas y usar la interfaz. Tal vez no Ah, ya sabes, no es necesariamente necesario que hagas esto, pero de nuevo, esta es una de las formas en que la gente usaría interfaces porque ahora, si miramos el servicio, por ejemplo, crear, leer, actualizar, eliminar. Si no tienes estos cuatro métodos en tus clases de implementar esta interfaz, te vas a poner al aire. Por lo que tipo de te da una línea de chico en y marco para el que puedes construir desde. De acuerdo, así que ese es nuestro ese tipo de nuestras clases aquí. La otra cosa es, ahora, ya sabes, estamos empezando a poner en práctica todo este tipo de cosas. Es como, Bien, ahora tenemos que empezar a lidiar con cómo vamos a incluir y requerir y todo ese tipo de cosas. Entonces otra cosa si venimos aquí a Nano Nano es como nuestra clase magistral, ¿ verdad? Se va a tirar de todas las otras clases de nuestra biblioteca, y en realidad, una cosa que quiero mostrarles a ustedes dos es si venimos a post service y post view. Ya ves, tengo nombre, espacio, app, biblioteca slash Y aquí tengo nombre, espacio slash Ah, nombre estados ab slash biblioteca. Es el espacio del mismo nombre. Podrías hacer eso. Se puede hacer el mismo espacio de nombre en múltiples archivos. Y cuestión de hecho, si entramos en la vista por categorías, es el espacio del mismo nombre. De acuerdo, así que hemos llamado Spaced todas estas clases. Y la razón por la cual es porque estaban usando nombres genérico de Jim bonitos para estas categorías de servicio. Entonces si hay otras aplicaciones, tenemos todo esto correctamente el nombre espaciado, y solo ayuda. Tipo de ayuda nos ayuda mentalmente a organizar todo. Y así todas estas clases categoría Servir Categoría servicio. Ah categoría ver categoría post vista Post Service Todos esos aire en el mismo ah tipo de espacio nombre. Entonces, una vez que vengamos aquí a nuestra clase Nana Nano, este es una especie de nuestro corto de masterclass. Ese tipo de reúne todo. Entonces he hecho un par de cosas aquí para que tú mires aquí y te hagas una idea de diferentes maneras. Puedes usar algunas de las cosas que aprendiste en el curso. Por lo que estoy requiriendo nuestro archivo de conflicto de manera muy rápida. Si entras en esta carpeta Conflicto y abres nuestro archivo de conflicto, son solo los detalles de nuestra base de datos. Añadí en este reporte de aire para mostrar todas las áreas Usted, por supuesto, querría quitar esto para la producción. Pero esto es un estándar. Ah, los archivos de conflicto estaban incluyendo que también estaban incluyendo nuestra clase de base de datos aquí. Y si los cerramos un poco si nos fijamos, tenemos un punto de base de datos PHP aquí. Ahora, nuevo, esto es sólo una especie de clase de contenedor en blanco. Pero aquí es donde pones todas tus cosas de tu base de datos, y así que tengo un poco configurado este poco, pero esto sacará de nuestro archivo de conflicto para que no coincida con lo que hay en nuestro archivo de conflicto. Se lo pasará al constructor. Y, como yo, ya sabes, lo he hecho no sé cuántos tutoriales diferentes y demás en clases de base de datos, pero de nuevo, no tienes que usar crear los tutoriales propios. Puedes usar algo que esté ahí fuera que quieras implementar aquí. Pero el punto aquí es que es completamente autónomo. Entonces es cosa suya. No está integrado en ninguna de las otras, um, ninguna de las otras clases. Y así las otras clases pueden usarlo en un sentido modular, y eso se vuelve importante. Y así algunas de las cosas que vamos a llegar a escuchar un segundo pero otra vez aquí en Nano solo estaban requiriendo en ese archivo de base de datos, y luego estamos haciendo nuestro registro de carga automática SPL. Por lo que esto nos facilita cargar todos los diferentes objetos y cosas que tenemos en nuestra biblioteca. Este autocargador es más o menos sólo para las cosas de la biblioteca, y la razón que es porque tenemos categoría y publicaciones. Pero en una verdadera aplicación, probablemente sería un usuario de etiqueta de categoría post. Cualquier otra cosa que esté ahí fuera que podrías agregar en esto, podrías tener 45 objetos diferentes, y por cada uno que vas a tener Pope, vas a tener, ya sabes, la variación de post. Tienes vista, vas a tener un servicio. Entonces si tienes cinco objetos diferentes y tienes tres clases diferentes, terminas con 15 clases. Por lo que un autocargador para ese tipo de tiene sentido. Y así estábamos haciendo este registro de autocarga aquí. Y lo que estamos llamando, sin embargo, no es una función. En realidad es un método estático. Entonces este es un uso de un método estático. Recuerda, como los métodos estáticos son una especie de ah, con las cosas nuevas que tenemos con interfaces con, ah, con interfaces y nombres, cara y así sucesivamente. Las funciones y métodos estáticos de clase estática tal vez no tengan tanto uso. Pero aquí hay un escenario donde dio y es que podemos usarlo para un método de autocarga. Entonces en lugar de poner esta función fuera de nuestra clase, debilitar cayó justo en nuestra clase. No necesita nada de nuestra clase. De acuerdo, así que no hay nada que obtenga todo lo que necesita se le pasa de S p o SPL auto load register para que podamos hacer de ella una función estática debilite la referencia así en nuestra designación al registro de carga automática SPL. Y ahora es que va a llamar a este método estático. Se va a pasar en el nombre de la clase, igual que antes te mostré en la lección que hice en auto load y ahora podemos escribir nuestro código para hacer nuestra auto load. Y esencialmente, esto es chequear a las cosas. Entonces tenemos nuestro objeto. Ah, tenemos nuestro objeto. Las clases son carpetas de objetos aquí. Podríamos poner podríamos crear una carpeta de interfaz y luego poner servicio y vista en interfaz . Um, y entonces no necesitaríamos este tipo de declaración más aquí mismo. No necesitaríamos hacer algo de esta comprobación, pero solo quería mostrarte cómo puedes usar tu auto load para, como, cargar de diferentes maneras. Por lo que no tiene que ser así, solo formato estándar. Y luego haces que tu, uh, uh, estructura de carpetas simplemente coincida con ella. Puedes hacerlo al revés. En términos generales, quieres tener algo que sea un poco más simple y hacer que la estructura de tu carpeta coincida con ella. Pero de nuevo, solo quiero mostrarles esto. Entonces básicamente lo que está haciendo este código es que es una especie de lo que hicimos antes. Se está rompiendo. Ah, cuando nosotros cuando estamos en postura ocho. Esta instancia En estos momentos, no hemos incluido ninguno de estos archivos en los que no lo hemos requerido. Entonces se va a revisar. Uh, va a cargar esta autocarga porque no los puede encontrar, y va a pasar en la clase. Nombre lo hará. El nombre de la clase es ap bac slash library Black backslash posts estaban rompiendo esta cadena y estamos encontrando queremos post y eso y eso es lo que recibiendo como el objeto aquí. Y queremos la carpeta. Entonces está en la biblioteca. Y eso es lo que estamos consiguiendo aquí mismo. Y entonces lo que estamos haciendo es revisar para ver si la carpeta. Por lo que esta parte de aquí es biblioteca. Y la razón por la que hice eso es porque sería posible que tal vez hagas otra carpeta Ah, directamente en Nano y lo llames admin y ah, al empezar a agregar cosas ahí dentro, podría haber diferentes formas de que que quieras hacer esto. Entonces yo solo puse esto ahí dentro. En este caso, todo está dentro de nuestro archivo de biblioteca, así que esto es un poco redundante, pero está ahí para que lo veas. Pero estamos revisando para ver si estamos accediendo a algo de la biblioteca para carpeta. Um y luego estamos revisando para ver si hemos creado este array de interfaces. Si el objeto que obtenemos como servicio o vista. Sabemos que es una interfaz porque eso es lo que el es, también. Ah, eso son estas dos interfaces. Sus nombres, servicio y ahí llamado View. Entonces estamos revisando para ver si es, ah, una interfaz. Y si no es una interfaz de la que conocemos, es una de estas carpetas de objetos. Por lo que vamos a requerir final el ya sabes, el archivo estándar de objeto para que esta designación aquí mismo cargara, por ejemplo, post op PHP. Este cargaría post view dot PHP y éste cargaría post service dot PHP y luego lo va porque tenemos instancia, incluso insistimos de categoría. También buscará categoría, y entonces esta declaración else básicamente se cargará son dos interfaces de servicio y ver si no está en la interfaz o si está en la interfaz, Si es un servicio o vista, entonces nosotros sólo van directamente a agarrar el objeto. Entonces esto es un poquito no quiero meterme demasiado en las malas hierbas de esto porque no es tan importante como se podría pensar. Y es ah, no, esto será algo que tal vez cambiarías en base a cómo quieres hacer las cosas, pero el punto importante aquí es que soy capaz de cargar en un formato donde he puesto todas mis clases dentro una sub carpeta y lib y también soy capaz de cargarla donde pongo ah los archivos directamente en la carpeta live como esta. Por lo que con tu autocargador, puedes mezclar y emparejar y poder Thio usar condiciones para descifrar ese tipo de cosas . A lo mejor no quieres hacer eso porque quieres que sea tan duro para ti mismo. Pero ah, es totalmente posible dio Ok, entonces con eso dicho entonces ahora el resto de nuestra nano clase donde realmente estamos en postura, comiendo instancias de post y categoría esto nos da esto aquí mismo nos da acceso a todos de los métodos dentro de nuestro puesto. Al igual que hablamos de cómo su extendido Esto nos da acceso a todos esos métodos dentro de nuestra clase Nano ahora y así ahora tenemos acceso a todos nuestros otros objetos dentro de la clase nano. No necesariamente tienes que instancias octava facilidad en el constructor así, correcto, Porque si lo haces, se va a cargar todas las clases que tienes, y es posible que no las necesites todas para un solicitante particular o carga de página o lo que sea. Es posible que solo los necesite en instancias específicas. Por lo que podrías cargar selectivamente es 12. Próximos pasos: Yo soy honesto ya no hay más. Tan online.com, tan poca limpieza para terminar este curso. Si aún no lo has hecho, asegúrate de dirigirte al área de clases. Hay una sección de clase para algunos, algunos pasos por los que caminar para este curso. Así que asegúrate de dirigirte en que está bajo la discusión en la pestaña Proyectos que verás en el curso. Además, si te diriges a mi perfil, asegúrate de darme un seguimiento de mi perfil aquí para que te notifiquen cuando libere nuevos cursos. Y también tengo una especie de curso semanal estilo podcast en curso llamado Let's Talk freelance. Entonces si te gustaría tener algún tipo de acceso a la formación continua en materia de freelancing y negocios en línea y así sucesivamente. Asegúrese de comprobar eso. Hablemos de curso freelance también. Y por último, sí tengo un boletín diario de tips en mi página web en John Morris online.com. Si te diriges por ahí, puedes apuntarte a esa lista de correo. También te pondrán en la mía propia, en mi propia aplicación móvil, o obtendrás acceso a más de 78 horas de contenido gratuito al momento de esta grabación relacionada con freelance y así sucesivamente. Entonces si te interesa eso, BD seguro revisará eso también. De nuevo, ese es John Morris online.com. Está bien. Gracias por tomar la clase. Si lo disfrutaste, te agradezco por Ti. Déjame una reseña y te veremos en el próximo curso.