Programação orientada a objetos no PHP — o caminho certo | John Morris | Skillshare

Velocidade de reprodução


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

Programação orientada a objetos no PHP — o caminho certo

teacher avatar John Morris, I help freelancers get clients.

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

12 aulas (3 h 4 min)
    • 1. O que é a programação de objeto

      23:45
    • 2. curso, propriedade, objeto, método

      15:30
    • 3. Construtores

      8:45
    • 4. Visibilidade

      8:15
    • 5. Herança

      12:31
    • 6. Métodos e propriedades estáticas

      12:48
    • 7. Espaço de nomes

      9:26
    • 8. Autoload

      15:20
    • 9. Interfaces

      6:30
    • 10. Primário de MVC

      26:10
    • 11. Como criar aplicativos profissionais com o OOP

      43:19
    • 12. Próximos passos

      1:16
  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

1.902

Estudantes

1

Projeto

Sobre este curso

Aplicativos de de objeto são o que os clientes e os os os clientes e os profissionais querem e o que a maioria de os desenvolvedores está em que está em luta para aprender como fazer como fazer o fazer. Mas, e se você pode aprender como criar esses tipos de aplicativos nas algumas horas?

Que o que as de portas se vão se abertas para você?

Problema é ...a maioria do de o treinamento que você vai encontrar na programação de de objeto em PHP é confuso no nosso inferno. Algo sobre de de pessoa do curso com três braços que pode correr e de com a de Deixe mais confuso do que quando começar.

É para o que fiz este curso.

Não sou um programador de talentosos de naturalmente a

Então, não a o que não a " Tenho que lutar, de lutar, de a minha de luta e a de que a de que eu a Então, para aprender qualquer coisa de novo de que eu a de de em que eu possa fazer tudo para a parte em conjunto e fazer que o a sua a

Então, é o que eu fez neste curso.

Eu a guiar em meu processo de aprender do through em menos todos os jargon e de confusão. Eu ensino a você os fundamentos mais essenciais da programação de objeto no PHP e mostrar como reunir para criar aplicativos de a de a de um de que o de a de um objeto de de de objeto para a criação de de aplicativos de a de objeto de a de de parte.

As aulas incluem:

  1. O que é o programa de orientação de objetos?
  2. curso, propriedade, objeto, método
  3. Construtores
  4. Visibilidade
  5. Herança
  6. Métodos e propriedades estáticas
  7. Espaço de nomes
  8. Autoload
  9. Interfaces
  10. Primário de MVC
  11. Projeto de curso: como criar uma aplicação profissional com a programação de objetivos

É muito e, obviously a e em que é necessário para dominar o OOP no PHP. Então, se estiver pronto para lidar com o OOP no PHP, faça o curso e vamos começar.

Conheça seu professor

Teacher Profile Image

John Morris

I help freelancers get clients.

Professor

Click here to start this class

Visualizar o perfil completo

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%
Arquivo de avaliações

Em outubro de 2018, atualizamos nosso sistema de avaliações para melhorar a forma como coletamos feedback. Abaixo estão as avaliações escritas antes dessa atualização.

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui cursos curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. O que é a programação de objeto: Olá, John Morse. Aqui. John Morse ponto com online. Esta lição. Nós vamos dar uma pequena introdução à programação orientada a objetos. Fale sobre o que é programação orientada a objetos, por que você pode querer usá-lo e realmente, espero que apenas tipo de dar-lhe uma base de conceitos e conhecimento e compreensão que podemos então construir sobre como, em seguida, entrar no código. Dito isso, aqui está exatamente o que vamos estar falando. Vamos definir orientada programação orientadaa objetos. Vamos falar sobre algumas das palavras-chave reservadas método de propriedade classe e, em seguida, também falar sobre a diferença entre classes e objetos. Vou dar-te uma analogia. Espero que ele seja um pouco mais informativo do que aqueles com quem lidei quando estava aprendendo tudo isso. Esperamos que nos ajude a deixar isso um pouco mais claro, e então vamos falar sobre por que você gostaria de usar programação orientada a objetos e por que ele se tornou uma espécie de coisa tão grande e geralmente recomendado na maioria das situações. Certo, então isso é uma agenda “D”. Vamos mergulhar nisso então. Então vamos falar sobre a definição, então eu vou meio que passar por isso e apontar coisas que eu acho que são importantes. Então programação orientada a objetos é um modelo de linguagem de programação. Agora eu quero me concentrar neste modelo de palavras. Você também pode usar a palavra que eu acho, estilo ou abordagem ou paradigma, qualquer palavra que funcione lá para você. Mas a coisa a entender sobre objeto durante a programação é que não é como nenhum conjunto diferente de tecnologia ou linguagem diferente ou qualquer coisa assim. É apenas uma abordagem diferente, estilo ou modelo do modo como você faz a programação. E é organizado, como a definição aqui diz em torno de objetos em vez de ações e em torno de dados em vez lógica tão bem, vamos continuar aqui. Historicamente, um programa tem sido visto como um procedimento lógico que leva entrada, dados, processa, processa e produz saída. Então, um bom exemplo disso é se você tomasse, digamos, um tipo regular de forma PHP, que, verdade, em muitos casos é o bloco de construção de qualquer aplicativo se você realmente pensar sobre isso. Mas basta tomar um tipo regular de forma HTML que você iria enviar através do PHP em e armazenar em um banco de dados minha sequela. Geralmente, a maneira que isso foi feito ou a maneira que as pessoas pensariam sobre isso é que você começaria com o tipo de interface de usuário, que é a forma que você tomaria os dados que estão lá e sua linguagem de script real da sua linguagem de programação. PHP pensaria sobre isso em termos do que eu preciso fazer para processá-lo. Ele pensaria nisso mais como uma ação e a lógica necessária para cumprir essa ação. Então é muito auto-contido em um sentido que só está preocupado com essa forma o que precisa ser feito para processá-lo e, finalmente, armazenar isso no banco de dados. E então, claro, se você vai recuperar esses dados, então você tem um outro conjunto de atos, outra ação e a lógica necessária para executar essa ação. Então o código processual é geralmente focado em torno dessa idéia de ações enviar este formulário, armazenar esses dados aqui, recuperar esses dados, exibi-los aqui, etc, e é assim que as coisas tinham sido feito por um longo tempo. O problema com isso é que quando você começa a construir aplicativos mais avançados, se você está apenas focando em ações e você não está realmente se preocupando com o resto do aplicativo. Quando você está construindo outra parte dele, você começa a re usar um monte de código. Você começa a ter coisas que podem entrar em conflito entre si, e você acaba com esse tipo realmente grande de potencialmente desorganizado Ah, apenas uma espécie de biblioteca de código que não necessariamente tem qualquer tipo de organização para ele. E quando você começar a organizá-lo, o que você vai encontrar-se fazendo é organizar de uma maneira que segue, juntamente com os princípios Cooper ou princípios orientados a objetos. E então realmente programação orientada a objetos está tomando essa idéia de Hey, como eu poderia organizar isso um pouco melhor e realmente apenas tipo de extrapolá-lo para fora e PHP agora suportando com algumas das funcionalidades que saiu com e assim por diante onde você pode fazer isso? Assim como a definição continua, o desafio de programação foi visto como como escrever a lógica, não como definir os dados. programação orientada a objetos tem a visão de que realmente nos importamos com o que realmente nos importamos, dos objetos que queremos manipular em vez da lógica necessária para manipulá-los. E esse é um ponto muito importante, porque quando você pensa em um aplicativo, você começa a dividi-lo. Em última análise, o que você se importa são os objetos. Então, por exemplo, se você está trabalhando com a CIA, CMS, você não necessariamente se importa exatamente com a lógica necessária para um usuário criar um post direito, no entanto você tem que fazer isso é um pouco trivial para o fato de que o que importa para o programa é que o usuário um objeto pode criar. Isso é basicamente um método ou uma ação. Outro objeto do post. Ok, então você tem dois objetos, o usuário no post e você tem uma ação que é criar ou editar ou excluir ou categorizar etcetera. E assim, quando você começa a olhar para ele dessa forma, o que você percebe é que um aplicativo é realmente apenas uma coleção de objetos e ações , seus usuários criando usuários postados, excluindo usuários postados, categorizando usuários de postagem , criando categorias , usuários criando tags , etcetera, etcetera, etc. Então, quando você começa a pensar sobre isso dessa maneira, você está realmente pensando sobre isso da maneira que o próprio aplicativo funciona e , finalmente, a maneira como o usuário final vai se relacionar com ele corretamente? Então o usuário não se importa como a publicação é criada no back-end. Tudo o que eles se importam é que o Post seja criado. E assim nos permite escrevê-lo de uma forma que faz mais é mais em linha com a forma como o programa realmente funciona e como resultado, também ser muito mais organizado, não repetir, um monte de código e todos os tipos de diferentes vantagens que vamos entrar, certo? Então, espero que isso lhe dê alguma compreensão um pouco mais clara de você sabe, o que programação orientada a objetos é em alguns dos motivos por que, inicialmente, por que nós gostaríamos de usá-lo. Então, em seguida, vamos falar sobre alguns conceitos básicos de programação orientada a objetos, e eu estou tipo de confinando isso principalmente ao PHP apenas porque é isso que este curso é. Então, uh, a primeira coisa é o que nós chamaríamos de classe. Agora, muitas pessoas pensam que as classes, na verdade a coisa que você está criando e como o codificador que é realmente essa é a parte que você está escrevendo. Mas não é a coisa em si não vai falar sobre isso. O que isso significa aqui em um segundo. Mas a maneira de pensar sobre as classes é na verdade o esquema para criar o projeto. Então, quando você está escrevendo uma classe você não está criando um objeto. Você está criando o blueprint bruto para um objeto a ser criado em um ponto posterior. Certo, então lembre-se, a aula é realmente a planta. E então dentro de uma aula, você vai ter as duas coisas principais. Vais ter as nossas propriedades e métodos. Portanto, as propriedades são variáveis que pertencem a um objeto. O que isso realmente significa geralmente é que é algo que descreve o objeto. Então, por exemplo, se você tomar um post, seria o título do Post. São os dados sobre o projeto em particular. O objeto específico, um método é ações que o objeto pode tomar ou que podem ser tomadas no objeto. Então, por exemplo, você tem um usuário enquanto um usuário pode criar uma postagem. Então, é o usuário que está realizando uma ação na criação de uma postagem. Mas também é o post como um objeto que está sendo criado, então é um objeto tomando uma ação. É também outro objeto de opção tendo uma ação tomada sobre ele. Certo, mas a coisa a ter em mente é que propriedades são mais como características. Seus dados que descrevem os métodos de objeto são coisas relacionadas à ação que podem fazer ou podem ser feitas para ele direito. O objeto, então, é a coisa real. Voltaremos a isso em um segundo e então em Stan Shih ação ou dois em Stan ela comeu é a ação de criar um objeto de uma classe. Então, novamente, a classe é a planta. O objeto é a coisa real que você cria a partir da classe. Ok, então agora vamos pular em algumas analogias porque eu sei que quando você inicialmente aqui isso pode ser um pouco confuso. Mas vamos em frente e olhar para alguma analogia. Assim, a primeira analogia é a analogia da casa. E assim, a maneira de pensar sobre isso é a própria casa. Quando todas as casas construíram a coisa rial que existe que foi construído com madeira e telhas e citando tudo isso, a ação para você apenas estar no mundo real, esqueça o revestimento por um segundo. Se você está no mundo real, olhando para a casa. Aquela casa é o objeto em si. Ok, então quando estamos fazendo objeto durante a programação O quê? Estamos criando nossas coisas de Rial. O objeto real. Ok, agora, as plantas da casa são a classe. Então, quando você está escrevendo a aula, você só está escrevendo plantas. Ok, agora, dentro dessas plantas, você faria você e aqui é onde ele pode ficar um pouco complicado, mas é abstraído camada de distância. Então você falaria sobre coisas nas plantas, como cor, como cor, talvez moldar o número de janelas, todos esses tipos de coisas. Todas as propriedades, características do ar da casa que tornam aquela casa única de outras casas lá fora . Mas você não diria necessariamente que cor ou forma ou que número de janelas, pelo menos quando pensamos sobre isso. Em termos de programação orientada a objetos, tudo o que você está dizendo é que ele pode ter uma cor. Pode ser qualquer cor, mas pode ter uma cor ou uma forma ou um certo número de janelas novamente. Você não é surdo necessariamente definindo como esses detalhes específicos realmente são. Os métodos, então, são as ações que a casa pode tomar ou pode ser tomada na casa. Então construindo a casa, aquecendo a casa, vendendo a casa, levando uma marreta para o lado da casa, qualquer tipo de ação relacionada a esse objeto em particular ou aos métodos, e então a construção real é a instância que ela ação. Então, em Stan Shih ating ah, classe e criação de um objeto é a construção real do objeto a partir dos projetos. Então você está construindo a casa a partir das plantas que você criou na classe e na classe. Você tem propriedades e métodos diferentes que essa casa pode ter. E é em Stan Shih ation onde você diria, ou você designaria qual é a cor, qual é a forma, qual é o número de janelas. Não, é um pouco confuso, porque você não precisa sempre declarar todas essas coisas e dizer um método construtor. Quando você cria a classe, você pode definir essas propriedades explicitamente de antemão. Você pode fazer isso, mas entenda. Você pode ter aqueles que são definidos explicitamente de antemão, ou você pode ter aqueles que você define quando você e Stan ela comeram, mas cores um bom exemplo, certo se você tivesse um conjunto de plantas para criar uma casa, Essas plantas não necessariamente diziam de que cor será o avistamento da casa. Eles só diriam que vai ter citação. E você iria até o dono da casa. Você diria, “ Ei, que cor citando você quer ou que tipo de bancadas você não quer concedidas? Você quer tribunais ou quer outra coisa, certo? O proprietário seria capaz de escolher todas essas coisas, e isso realmente não afetaria sua construção. Então você não tem que definir essas coisas especificamente, uh, nas plantas. Mas o que você está definindo é que há citações, e que haverá algum tipo de mesa. Então, quando você realmente constrói, é quando você determina que essas coisas são a mesma idéia aqui há certas propriedades que você não precisa definir, você sabe, a cor da casa que você pode em a classe real. Você pode definir isso quando você e Stan ela comeram. Ok, então, novamente, a casa é o objeto. Os blueprints são a classe que você em posição oito que classe para criar o objeto e claro , esse objeto terá certas propriedades e métodos associados a ele. Certo, vamos dar outra olhada na analogia do carro. Então, novamente, se estamos falando de um carro, o carro em si é o objeto é o real vai re uma coisa do mundo. O modelo três d do carro que pode estar em um computador que está sendo construído a partir disso seria a classe contra o modelo ou o modelo. Você sabe, a cor do carro não necessariamente a cor específica, mas que ele tem uma cor. O tamanho do motor, as rodas, exceto para essas, são todas propriedades. Seus dados sobre os métodos do carro são coisas que o carro pode fazer ou pode ser feito para o carro. Então ligue o carro, dirija o carro, gire o carro e a fabricação ou construção real do carro é a posição. Ver ação. Ok, então novamente, eu só quero realmente tentar fazer a diferença é clara. O objeto é a coisa real que é criado. A classe é os blueprints para criá-lo, e a maneira que você criá-lo é por instância ating. Uma instância desse objeto da classe do blueprint que é o que instância asiática é e novamente com a coisa boa sobre o objeto. Programação Dorian é porque você não está dizendo especificamente que cor algo tem que ser . Como exemplo, você poderia criar um carro azul ou um carro vermelho ou um carro verde, ou você poderia, em uma instância, quando você instância, comer a classe. Pode-se dizer que este exemplo em particular das classes vai ser deste objeto ou o que quer que seja que vai ser azul. Aqui, vai ser verde. Aqui, ele vai ser lido, etcetera, etcetera, então você pode ter várias instâncias da mesma classe que têm propriedades diferentes associadas. Hum, de fato, se você der uma olhada novamente em um CMS todos os posts individuais que você tem em um blawg, por exemplo, esses são objetos diferentes, esses ar, instâncias diferentes da classe. A classe não informa qual é o título da postagem ou qual o conteúdo da postagem . Ele só diz que há um título, que há uma descrição. Há conteúdo. Há uma categoria de tag, etcetera, então cada linha em seu banco de dados de seu para post é realmente e diferente instância dessa classe particular. Ou é um objeto diferente que você armazenou em seu banco de dados. , Novamente, sei que alguns de vocês só fazem sentido. Alguns de vocês seriam como, OK, você sabe, eu ainda estou um pouco confuso. Ou talvez eu esteja mais confuso agora. A coisa sobre isso é que essas coisas estão no seu cérebro agora. Então, quando entrarmos em código real e começarmos a usá-lo, algumas dessas coisas esperamos começar a clicar para você um pouco mais. E se não, volte e veja isso e apenas tipo de saltar um pouco entre os dois se você precisar. Ah, a fim de realmente esclarecer isso para você, porque realmente, nós estamos apenas tentando estabelecer uma base aqui. Não é necessariamente necessário, ou mesmo necessariamente verdade que você vai entender completamente tudo aqui. Você realmente tem que começar a trabalhar com ele para que isso aconteça. Certo, então vamos falar sobre algumas das razões pelas quais você gostaria de usar programação orientada a objetos . Nós provavelmente o maior, mais importante ou o que é falado muito é o que é chamado de encapsulamento. E o que isso significa é que o agrupamento de dados com os métodos que operam nesses dados. Então, parecemos literalmente apenas coberto exatamente o que é isso. As propriedades ar, verdade, os dados e os métodos são os métodos que operam nesses dados. Então o que está acontecendo é que você está colocando essas duas coisas juntas em uma única classe, e o que permite que você faça é construir classes individuais que fazem coisas específicas muito individuais para que você possa criar, digamos, um post classe. E essa classe terá todos os dados necessários para você construir um objeto e armazenar todos os dados necessários para isso no banco de dados. Ele terá todas essas propriedades definidas, juntamente com os métodos que estão indo para permitir que você interaja com esse post de qualquer forma ar necessário para criá-lo, adicioná-lo para excluir etcetera. Então será uma aula. Então você pode ter outro. Essa é uma categoria que tem todos os dados e métodos. Para isso eu tenho outro que está marcado para todos os métodos e dados. Para isso, você pode ter outro. Esse usuário para todos os métodos e dados para isso. Então você está pensando sobre o aplicativo em termos de objetos reais e coisas que estão dentro das postagens do aplicativo, categorias , tags, etc, e você está organizando-os por aqueles coisas e mantê-los muito encapsulados para que Ah, você não é. Você não está misturando e combinando casaco por todo o lado. E isso faz com que as idades sejam muito mais organizadas e mais fáceis de trabalhar, por isso facilita a escala. Ah, tipo de princípio seco, que é anotado aqui sob o poço inerente da SA. Mas também acontece aqui que você não vai necessariamente reutilizar um monte de código e assim por diante. Então, o encapsulamento é a grande coisa que leva a apenas um tipo mais limpo, mais organizado , mais eficiente e mais escalável. Aplicação. Herança é outra, então a herança é essencialmente, é o É um processo que permite que objetos adquiram as propriedades de objetos de outra classe, então essencialmente você pode estender sobre objeto, e quando você estende, você pode estender uma classe. Quando você estender essa aula. Basicamente, a nova classe que você está criando inerentes a todas as propriedades da classe que está estendendo e pode ter acesso a esses métodos e assim por diante. E assim ele impede que você tenha que fazer isso se você quiser adicionar ou trabalhar com ou você quiser usar uma classe específica, mas você quer adicionar coisas a ela, você não precisa reescrevê-la completamente. Você pode simplesmente estendê-lo e, em seguida, adicionar a ele o que você deseja adicionar a ele. Impede que você volte a ter que reescrever um monte de código, não se repita e melhora a usabilidade e todo esse tipo de coisa. Então a herança é outra razão pela qual a última é chamada de polimorfismo. Assim, instâncias diferentes podem assumir formas diferentes. Isso é basicamente sobre o que já falamos, que é um exemplo, você sabe, você sabe, o carro pode ser lido outro azul completo, outro pode ser verde e nada muda sobre a classe. Você não muda a aula. Tudo o que você faz é alterar as informações ou os dados que você passa para a classe quando você sentado instância, ou quando você está trabalhando com os métodos ou com base em determinadas condições e assim por diante, você pode alterar o objeto obtido a partir do sem ter que alterar o próprio blueprint. Então, novamente, ele cria uma flexibilidade de nível para o seu aplicativo. Também faz de novo. Então você não está repetindo seu código. Então você está mais reutilizável novamente, mais escalável, todo esse tipo de coisas. E então é por isso que você vê programação orientada a objetos se tornando este tópico realmente quente realmente altamente recomendado e na maioria dos casos é algo que você gostaria de usar. Agora há alguns casos, e isso é realmente provavelmente é controvérsia, eu poderia dizer que é altamente controverso. Mas eu diria que há alguns casos em que o programa orientado a objetos não é necessariamente a melhor maneira de fazer as coisas certas. Então, o bom exemplo que eu gosto de usar seus temas WordPress agora partes de temas WordPress absolutamente deve ser classes. Há coisas individuais que você gostaria de fazer em um tema. Por exemplo, a nação de paginação pode estar em um bom exemplo onde há uma série de coisas que você precisa fazer para página em oito corretamente, e todas essas coisas estão relacionadas entre si para que você possa agrupar todas essas coisas juntos, e você pode usar essa classe para essencialmente lidar com essa parte de Of of things right. Então você teria que você ainda teria aulas dentro de seu tema WordPress. Mas o real quando você criou o tema WordPress, você cria um arquivo de funções, certo? O ato que a vontade real funciona arquivo onde o que é essencialmente tipo de torna-se o seu controlador. Se você está pensando sobre isso em termos de ah M V C shopping de você pode tipo controlador configurar que funções pensamento tipo de se torna seu controlador um pouco. É discutível se construir uma classe no controlador real e usá-la lá. Eu acho que é discutível se isso realmente ajuda você ou por apenas cria sobrecarga desnecessária . E assim, de novo, há. Ou talvez você esteja construindo, você sabe, um simples você literalmente ou construindo um formulário em seu site, certo? E não vai se tornar. Não é essa enorme aplicação que você vai construir. Ou se acontecesse, então você entenderia. Ok, agora eu provavelmente deveria mudar e começar ah, usando ah, tomando a abordagem orientada a objetos e esse tipo de coisa. Mas é literalmente uma forma que você vai processar bem, é realmente necessário construir uma classe inteira para essa coisa toda? Você certamente poderia E se você é como um defensor para esse tipo de coisa, então por todos os meios. Mas não é realmente necessário, necessariamente qualquer vantagem em fazê-lo dessa maneira. Ok, então há casos em que a programação orientada a objetos não é necessariamente qualquer tipo de vantagem e talvez até adicione alguns s sobrecarga necessária. Mas se você está construindo um aplicativo, se você está sentado, eu vou construir um CMS. Vou construir uma rede social. Eu vou construir um comércio qualquer tipo de aplicação onde você vai ter um número de diferentes partes móveis. Você vai ter um número de objetos diferentes e que estão interagindo uns com os outros e assim por diante. Programa orientado a objetos é absolutamente o caminho a seguir. Vai tornar a tua vida muito mais fácil. Vai tornar as coisas mais organizadas, mais escaláveis, mais reutilizáveis, todo esse tipo de coisa. Vai tornar as coisas mais organizadas, mais escaláveis, mais reutilizáveis, Então você absolutamente deve usá-lo nessas instâncias específicas. Tudo bem, então, como eu disse, não, isso é meio que para esta lição. Mas como eu disse, não é realmente necessário que tudo isso fizesse 100% sentido. Agora está na sua cabeça. Você já ouviu isso. E à medida que entramos no código, então você deve começar a Seymour exemplos claros das coisas que falamos, e espero que ele comece a se juntar para você. Então, de novo, vou fazê-lo por esta lição. Obrigado por assistir. Falamos com a próxima vez. 2. curso, propriedade, objeto, método: qualquer um. John Morse. Aqui, John Morse ponto com online. Esta lição. Vamos passar pela sintaxe básica da classe. Então eu vou mostrar a vocês como criar uma classe como criar uma propriedade dentro da classe, como criar um método. Tinha duas instâncias Ian uma instância dessa classe e, em seguida, como chamar um método de nossos objetos recém-criados . Então isso vai lhe dar toda a gama de conceitos sobre os quais falamos e mostrar como realmente usá-los aqui no PHP. Então você pode começar a construir sobre este tipo de estrutura. Então esta é uma estrutura que nós vamos e construir em todo o resto da classe, então criar uma classe é realmente muito simples. Você só precisa da palavra-chave da classe. Então isso é classe. E então você precisa nomear sua classe. Então vamos fazer algo como a minha aula. Agora você pode nomear sua classe qualquer coisa. Mas o tipo de padrão para o nome é usar estojo de camelo. Então, maiúsculo M capital C. Isso não é necessário. Ele não vai lançar algum tipo de ar ou algo assim que apenas é tende a ser a convenção entre desenvolvedores PHP, é claro. Faça o que quiser, sempre. Mas, uh, se você está procurando o tipo de padrão é o que é. Então, uma vez que temos a palavra-chave classe que temos o nome da nossa classe e tudo o que precisamos é abrir colchete encaracolado e, em seguida, uma roupa, claro, um colchete de fechamento. E essa é essencialmente a nossa classe. Tudo o resto que vamos fazer fora de posição, comer e vai acontecer dentro daqui. Então, quando falamos sobre a criação de um blueprint, este é o lugar onde você está criando seu blueprint dentro de fora, e vai ser o que ele vai ser é uma coleção de propriedades e métodos. Então a maneira de relacionar isso com o código processual está em código processual. Muitas vezes você pode criar um arquivo de conflito, e nesse arquivo de conflito, você tem Constance e, em seguida, durante todo o resto do seu código, sua função ou você pode criar variáveis globais. Você pode criar variáveis no espaço global, uh, nome, ou seja, fora de uma designação de função, e, em seguida, dentro de funções que você pode globalizar, usar a palavra-chave global e, em seguida, usar essas que foram criadas fora da função dentro da função. Bem, esta é uma idéia tipo semelhante no sentido de que propriedades ar tipo, ah, há um tipo de como Constance para sua classe. Você cria uma propriedade na parte superior fora de suas funções, ou elas são como se fossem mais como variáveis globais. Você cria, Ah, variável fora de suas chamadas de função no topo de sua classe, e então você pode usar essas variáveis dentro de suas funções sem ter que globalizá-las . Então, de certa forma, uma classe é realmente apenas uma espécie de espaço de nomes. É uma maneira de algo que você pode envolver todas as suas funções em suas propriedades dentro de, e eles realmente só tipo de trabalho dentro desse espaço de nome específico, e você poderia usá-lo. Você poderia usar o mesmo nome de variável fora da classe, e os dois não entrariam em conflito. Agora há algumas advertências e exceções para essas coisas, e vamos passar por isso. Mas apenas em um sentido geral, isso é o que isso é agora novamente, falamos sobre nós vamos programação orientada a objetos na verdade está na idéia por trás disso, e o fato de que você poderia escrever e colocar todas as suas coisas dentro da classe e ainda estar realmente fazendo objeto durante uma programação será novamente. Vamos mergulhar nisso um pouco mais à medida que avançamos. Mas quero dar-vos esta base, estes conceitos baseados e sintaxe. Então, uma vez que criamos nossa classe, agora podemos criar nossas variáveis e nossos métodos. Então, criar uma variável é bastante simples. Você apenas faz. Usa o ah, usa isto. Identifique-a aqui. Agora vamos falar daqui a pouco. Estes eram públicos, privados, protegidos. Vamos falar sobre isso e como isso afeta escopo e uso e assim por diante. Mas, por enquanto, vamos ficar com público, e então você usa essa sintaxe de r igual a que eu gosto. É como criar uma variável, em certo sentido, por isso é bastante simples e que é uma propriedade de classe. Então, novamente, nada de muito louco sobre isso agora, para criar um método novamente, usamos a palavra chave pública aqui, e então você cria sua função. E então, claro, você vai fazer o nome da sua função então nós vamos apenas fazer a minha função e nós vamos fazer nossos colchetes de abertura . Então, novamente, isso é apenas como uma designação de função regular que você faria direito. Nós apenas adicionamos essa palavra-chave pública ao início dela. E não se preocupe muito com isso, porque vou explicar o que significa. Mas não é tão complicado ou grande coisa. Ok, há algumas apenas algumas diferenças em áreas onde você pode usar um ou outro, mas não é nada que seja excessivamente complexo e que seria difícil de entender. Tão grande o nome da nossa função. E então dentro disso, nós vamos fazer algo então aqui vai apenas fazer eco e vai usar esta palavra-chave e então nós vamos, uh, eco var. Está bem , deixa-me explicar isto. Sempre que você estiver dentro de sua classe assim, você pode usar esta palavra-chave aqui. Ou você tem que usar esta variável que quando você cria uma classe, isso basicamente se torna disponível e você pode usá-lo para chamar qualquer propriedades dentro sua classe ou funções para que pudéssemos fazê-lo não faria sentido dentro daqui, Mas podemos fazer a minha função assim para chamar a nossa função. Ok, então a maneira como você faz referência a propriedades e métodos dentro de uma classe está usando esta variável e, em seguida, ah, este ponteiro e, em seguida, o nome da variável ou a propriedade ou a função ou o método assim e apenas no caso não é claro. Dentro de uma classe, variáveis ou propriedades frias e, uh, funções eram chamadas de métodos. Então, se eu trocar aqueles dois, me perdoe um pouco por isso. Mas essa é a ideia básica. Então, novamente você pode referenciar aqueles que usam este ah, variável aqui. E então isso é e isso é o que fazemos aqui, a fim de referenciar, são variáveis aparecem agora. A única advertência para isso é que vamos falar sobre a classe Constance e assim por diante e funções estáticas e assim por diante aqui em um pouco e poucas lições à frente. Mas isso só funciona quando isso obtém instância, sentado como uma instância de um objeto. Agora, na maioria dos casos, isso não vai importar, porque é isso que você vai fazer de qualquer maneira. Mas se você estiver criando uma função estática, você não pode usar o isso dentro dela porque nenhum objeto foi assentado quando você usa uma função estática ah novamente vamos entrar em que mais em um pouco. Mas isso só vai começar. Está pensando um pouco nisso agora. Então, de novo, estamos destruídos. Então, o que essa função deve realmente fazer? Se chamarmos essa função, ela deve ecoar. Eu gosto do Coop. Isso é o que isso deve fazer. Então, agora, duas instâncias comem uma nova instância disso. O que vamos fazer é fazer a minha turma é igual a nova minha classe. Então isso está em posição, comendo uma instância da nossa classe. Lembrem-se das aulas, da planta. Esta é a coisa real que estamos criando. Este é o objeto. Então minha classe, essa variável é um objeto. esta é Seesta éa planta da casa, esta é a casa. Então agora temos nossa casa dentro de nossa variável minha classe, e podemos chamar, enfraquecer, enfraquecer, referenciar qualquer uma das propriedades, qualquer um dos métodos, e construir o que estiver disponível dentro de nosso projeto. A nossa turma. Podemos construir isso usando este novo objeto. Ok, então agora o que podemos fazer é fazer eco. Bem, na verdade, nem faça isso. Podemos fazer minha aula e minha função e simplesmente chamar isso assim. E quando chegamos à nossa página aqui, você pode ver que eu gosto do Coop. Ok, então essa é a idéia aqui. E o que isso de novo, O que isso nos permite fazer? Apenas criar uma classe não é eu quero dizer, tecnicamente é, mas não é realmente no espírito de necessariamente no espírito de objeto durante uma programação. OK, mas o que ele faz é nos dar a base sobre a qual podemos agora começar a envolver em programação orientada a objetos. E nós podemos criar ah individuais, classes individuais para ah, lidar com funcionalidade individual. E esse é realmente o objetivo disso. É que para qualquer tipo de coisa que você quer fazer em seu aplicativo, seja, você sabe, mais do que apenas uma função, você quer começar a pensar em colocá-lo dentro de uma classe e ter essa classe lidar com tudo. Então, por exemplo, se você olhar para o CMS CIA, você terá em um CMS, você precisará criar editar atualização, excluir postagens, certo, bem, que você deve ter uma classe que essencialmente lida com tudo isso. É seu tipo post de classe e ele faz tudo o que precisa ser feito para esse objeto em particular. Então, ele vai permitir que você criá-lo. Ele vai fazer toda a interação com o banco de dados que precisa acontecer com sua classe de banco de dados. Isso precisa acontecer para inseri-lo no banco de dados. Vai fazer toda a interação que você precisa para extrair coisas do banco de dados no norte do estado, atualizar coisas no banco de dados, excluir coisas no banco de dados e qualquer outra coisa que você possa querer fazer que você acha pertence a isso. Então agora você tem que tudo auto-contido em uma classe e tudo que você tem que fazer em vez de reescrever esse código toda vez, cada vez que você quer obter um post do banco de dados, em vez de ter que reescrever todo o banco de dados vestido que é necessário para fazer isso, você criou uma função ou um método dentro de sua classe que faz tudo isso, e talvez tudo o que você precisa fazer em ordem. Vamos apenas dizer esta palavra que você passa no post I d. E então vamos dizer que isso é, ah, obter função. É uma função de leitura. Você passa no post I d. e faz toda a conexão conectando-se ao banco de dados, obtendo que eu d. do banco de dados. Nada de puxar esses dados, colocá-los em algo com que você possa trabalhar, seja um objeto ou um PHP iraniano e, em seguida, devolvê-lo para você. Então agora aqui você poderia ser como post é igual a minha função. E agora, no post, você teria acesso a, digamos, nenhum título de eco post echo post post post conteúdo, etc. Você teria acesso a todos os dados dentro disso. E então talvez haja funções auxiliares que você tem dentro dessa classe que permitem , eu não sei. Talvez você queira ecoar post, e você vai fazer formatação e, ah, postar data ou algo assim. Ok, então e talvez você só, você sabe, você sabe, talvez você tivesse que usar quando ligar para o Post Date. Já está formatado. Você, é claro, poderia fazer isso. Mas a idéia é que você pode criar métodos que são ajudantes ou que permitem que você faça algo relacionado a esse objeto que você pode querer fazer. Então, a idéia toda novamente é, não é apenas saber como criar uma classe, mas como levá-la. E então para os objetos que você tem em seu aplicativo e as coisas que você quer, esses objetos ser capaz de fazer você gênero. A regra geral é que você vai criar uma classe para cada um deles que vai lidar com todas as coisas que você precisa fazer agora. Isso de novo e eu quero não quero ficar muito confuso aqui. Mas isso é uma camada secundária que essas classes se sentariam em cima de, ah, ah, camada mais fundamental, que seria sua classe de banco de dados. Você viu alguma coisa que eu fiz com as aulas de banco de dados? Você sabe que essas aulas têm função. Eles têm função básica de interação de banco de dados interativo, então você não precisa escrever todas as consultas. Você pode simplesmente chamar métodos de dentro da classe de banco de dados para que sua classe post não estaria consultando o banco de dados diretamente. Seria chamar métodos de sua classe de banco de dados, e assim é como você que é como você camada um aplicativo. Se você olhar para digamos, por exemplo, WordPress, eles têm uma classe de banco de dados WordPress. A única coisa que classe de banco de dados faz é interagir com o banco de dados. Então, há alguns métodos, como obter resultados Obter linha Queary Update. Excluir etcetera que são métodos que você chama e você não executar as consultas. Você só passa os dados. Você passa uma informação que em que os métodos exigem os parâmetros, e ele faz todas as coisas de banco de dados para você se conectar, executar as consultas, retornar os resultados lida com tudo isso. Então essa é uma classe de nível básico. Mas, além disso, eles têm uma classe de consulta em que classes de consulta como eles consultam para postagens e páginas e categorias e assim por diante. Então a classe de banco de dados é uma classe fundamental que é uma classe de nível base que interage com o banco de dados diretamente. Queary é uma classe que nunca interage com o banco de dados. Tudo o que interage é com a teoria. Classe de banco de dados WordPress Então, de novo, é assim que você cria camadas. É assim que você usa classes para camada de um aplicativo. E essa é a coisa que eu quero que você comece a pensar é como eu posso começar a pegar todo esse código que eu tenho que talvez todo tipo de entrelaçamento entre as consultas e as vistas front-end que eu estou exibindo no banco de dados é todo tipo de mistura juntos. Como posso começar a separá-lo para criar classes individuais que fazem coisas individuais têm uma classe que interage com o banco de dados. Todas as outras classes ficam em cima disso. Qualquer classe que queira interagir com meu banco de dados tem que passar pela minha classe de banco de dados. E então eu tenho, você sabe, talvez uma classe de consulta ou uma classe de postagem e então, você sabe, talvez você tenha uma classe de views que fica em cima disso, uma exceção. Poderíamos falar mais sobre isso, mas eu só queria que sua mente pensasse nessa direção. Então, novamente, ser capaz de fazer o que fizemos aqui é a base de tudo isso. Então essa é uma maneira muito, muito simples e simples de como criar classe, como criar uma propriedade, como criar um método em posição, datando uma instância da classe e, em seguida, chamando um método dessa classe. Então, espero que tenha tirado algo disso. Obviamente, continuaremos a construir sobre isso à medida que avançarmos. Ah, o resto dessas lições eu vou ver nos próximos vídeos 3. Construtores: Olá, John Morrissey, John Morse online ponto com esta lição. Vamos falar sobre construtores. E então o que os construtores permitem que você faça é ter algo executado automaticamente quando você e Stan assentam uma instância de um objeto. Então, para mostrar isso, vamos em frente e copiar todo esse código aqui e vamos abrir nosso novo arquivo. E assim vamos criar uma nova função chamada Função Pública e sob sublinhado construct. Então esse é o nome. É assim que se dá o nome ao construtor. Se você estiver olhando para tutoriais realmente antigos, você pode ver tutoriais onde há um método lá que tem o mesmo nome que a classe. Então, pode ter sido algo como, hum, função da minha classe. Era assim que os construtores eram feitos no passado. Mas agora há um método construtor real que você deseja usar. Acho que, neste momento, vai mesmo. Se você usar o nome da classe por um tempo, eles são ambos iria trabalhar este método construtor e a função com o mesmo nome é a classe. Eu não acho que a função com o mesmo nome da classe ainda funciona, e independentemente de você querer usar isso. Você deseja usar este método de construção aqui. Então o que isso faz é qualquer coisa que você coloca dentro deste método. Quando você e Stan declararam uma incidência da classe, ele vai executar este método automaticamente. Você não tem que chamá-lo ou algo assim. E isso é bom para qualquer coisa que você precisa fazer para configurar seu banco de dados. - Eu? Eu não sei. Talvez haja talvez você queira colocar se você está escrevendo uma aula de banco de dados, você quer colocar seus detalhes de conexão de sequela lá? Ou talvez haja algo que você precisa fazer com o Post em nosso Há muitas coisas que você gostaria de fazer dentro de um construtor. Mas o principal é que ele é executado quando este cliente é classes e Stan sentado. Então só te mostrar isso. O que vamos fazer é pegar este var, e vamos mudá-lo para homem. Coop, estou bem? Eso o que foi o que nós essencialmente fizemos aqui é que temos esta variável que nós configuramos aqui, mas agora em nosso construtor foram redefinindo para algo diferente. E assim, quando nós instância oito uma instância desta classe. O que deve acontecer é que isto vai funcionar. E isso vai sobrescrever o que definimos aqui. Na verdade, muito rápido. Eu preciso remover essa idéia post porque nós realmente não temos um. E agora, quando viemos aqui para ecoar isso, deve ecoar o que colocamos em nosso construtor aqui. Então vamos em frente e carregar esta página e você pode ver que ficamos bravos. Hoopers, I Então isso é o que os construtores nos permitem fazer. E agora não precisa ser apenas sobrescrevendo variáveis que poderiam ser literalmente qualquer coisa que você queira fazer aqui que você precisa configurar. Isso precisa ser executado quando esta não é uma posição saciada de que o resto da turma vai ser praticamente dependente agora. Outra coisa que você pode fazer com construtores e importante saber é que você pode colocar em variáveis, então vamos em frente e apenas mudar uma variável aqui chamada texto. Agora, em vez de codificar isso aqui, podemos nos livrar disso. Poderíamos definir isso igual ao texto. Então agora o que vai acontecer é que podemos passar o texto para a nossa turma quando a comermos e eu mostro-te que fazes isso num segundo. Podemos passar isso e agora são variáveis. Ah, disto. Esta variável aqui será definida para o que passarmos. E então o que você tem é um tipo bastante padrão de coisa que você verá nas classes em que na decoração variável aparecer, você terá algum tipo de padrão. Isso agora é basicamente servindo como um padrão. E aqui Não, você terá algo que você pode substituí-lo com em seu construtor aqui. Ok, então se nós viermos aqui agora, a fim de usar este texto agora nós temos que adicionar em nossos parênteses e então nós podemos passar em nosso texto aqui. Então, se guardarmos isso e atualizarmos que ainda teremos May Lupas I e então podemos mudar isso para qualquer coisa. Queremos apenas dizer oi e você pode ver agora que está passando. Agora, se você começar a pensar um pouco sobre isso, você pode começar a ver o poder de um pouco disso porque agora você pode. Seja qual for esse texto, você pode passar e talvez queira formar esse texto. Talvez você queira o dedo do pé. Eu não sei. Há também talvez em uma, uh, mudança o que o texto é baseado em certas condições ou há todos os tipos de rotinas diferentes . Você poderia executar este texto que foi passado através, mas você poderia literalmente passar em qualquer texto. E então esta é toda a idéia do que uma classe realmente é quando falamos sobre Oh, em termos conceituais, que a classe é um plano e o objeto é a coisa real. E são os dados que você tem quando você instância comer uma instância de uma classe que altera o que o que você obtém do blueprint. Então, quer dizer , você sabe, um projeto de uma casa não diz a cor da casa. Então, quando você realmente vai e cria a casa, é quando você decide a cor. Esta é a mesma ideia. Isso não diz qual é o texto, certo? Ele não diz, Ok, nós podemos ter um tipo de padrão, mas ele realmente não diz qual é o texto. Você pode passar qualquer texto. Então, agora este objeto. Ok, se fizermos isso de novo, vamos. Basta ir nova classe e vai fazer referência a nova classe aqui. Podemos nos livrar desse post igual coisa. Não precisamos disso aqui. Ok, então eu quero te mostrar isso. Então, temos duas instâncias diferentes da nossa classe. A planta é a mesma. Mas tudo o que fizemos foi criar duas instâncias diferentes e passamos em dados diferentes. Então temos a minha aula, e depois executamos a minha função. Temos uma nova turma que passa. Ei, então se nós atualizarmos isso você vê, nós temos alto e nós temos Hey, esses ar literalmente dois objetos diferentes. Aqueles ar, duas casas diferentes. E a maneira como as mudamos é baseada nos dados que passamos para nossa classe aqui. Então esse é o poder disso. Nós mudamos. Nada parecia conseguir essas duas instâncias. Agora, é claro, como você tem aplicativos mais complexos, você vai ter aulas complexas Mawr. Eles vão condenar ou coisas complexas. E então as diferenças aqui, e talvez os dados que você vai passar aqui ou os dados que você é gráfico de um banco de dados ou qualquer outra coisa . O que quer que esteja fazendo, vai tornar esses dois objetos muito, muito diferentes. Se você pensar sobre isso, basta tomar WordPress. Se você pensar em dois posts WordPress diferentes, eles terão um título completamente diferente? Tem conteúdo completamente diferente? Eles vão ter data de imagem em destaque completamente diferente que eles foram criados, talvez autor. Há realmente dois completamente diferentes para postar em um blogueiro, dois completamente diferentes, mas a classe toe blueprint para levá-los ao ponto eles são exibidos na página e armazenar no banco de dados e tudo o que precisa acontecer. A classe é a mesma, então você pode criar dois objetos muito diferentes do mesmo blueprint. E isso é realmente o que a programação orientada a objetos é e novamente voltar para objetos individuais tipo de ter classes individuais que lidar e lidar com lidar com lidar lá. Eles são funcionalmente, não é uma gordura dura, e eu não quero enganar e depois dizer que é uma regra difícil e rápida. Você absolutamente tem que fazer isso, mas esse é o tipo geral de maneira que você meio que olha para ele. Ah, pelo menos em uma linha de base como você olha para o objeto durante na programação então novamente que está lidando com construtores. Isso é o que eles permitem que você adicione às suas aulas que as tornam que podem começar a torná-las realmente, muito poderosas. Espero que tenha tirado um pouco disso. Obrigado por assistir. Conversaremos no próximo. 4. Visibilidade: Olá, John Morris. Aqui, John Morris, ponto com online. Esta lição vamos entrar em visibilidade e visibilidade lida especificamente com facilidade, designadores essas palavras-chave bem aqui. Nenhuma rua que você possa ter. Há público, há protegido e há privado. Então, vou copiar este código aqui. Vamos entrar em nosso novo arquivo, e eu vou criar algo bem rápido que vai ajudar, eu acho, eu acho, deixar isso um pouco mais claro. Então, vou criar aula. nova turma estende a minha aula. Tudo bem, então o que isso está fazendo é criar uma classe infantil. Então esta classe aqui, a que faz a extensão é considerada a criança, e a que está sendo estendida é considerada o pai. E a razão disso é porque quando você faz isso, o que acontece é que você tem acesso dentro da nova classe. Você tem acesso a todas as propriedades e métodos que estão disponíveis dentro da classe pai original se eles não são privados, e assim que lida com são são uma espécie de designadores ah aqui. Então eu quero mostrar a vocês esse tipo de de cima para baixo. Então, quando chegamos aqui e temos posição de uma nova instância de uma classe e chamamos nossa função ou são método minha função A razão pela qual somos capazes de fazer isso E se recarregarmos esta página, você pode ver que ficamos altos. A razão pela qual fazemos isso é porque este método é definido como público. Se eu entrar aqui e definir isso para algo que não seja público, então vamos definir como privado para começar. Se eu dissesse isso ao privado, apanho um ar. Se eu dissesse para proteger e depois recarregarmos, eu entro no ar. Então este é o primeiro tipo de designação e a maneira de explicar isso. Eu acho que visualmente isso ajudará. Mas métodos privados e propriedades estão disponíveis em Lee aqui, Onley dentro do funk ou da classe e que os criou tão privados. São Onley disponíveis aqui protegido vai estar disponível dentro da classe que os criou e quaisquer classes filho ok e, em seguida, público vai estar disponível na classe que lhe criou qualquer classe filho e fora da classe. Então, a fim de acessar e usar um método ou propriedade aqui, ele tem que ser definido como público. Certo, então vamos passar por alguns exemplos. Então vamos em frente e colocar isso de volta ao público. E vamos em frente e definir isso para privado. Agora seu instinto pode ser Oh, não, estamos usando privado aqui e estamos chamando isso aqui. Então estamos chamando isso aqui, então isso não vai funcionar. E eles são, na verdade, que funciona. E a razão é porque o que estamos chamando aqui é sobre Lee o método da minha função . É o método da minha função que agora está fazendo referência a esta variável. E essas duas coisas estão dentro da mesma classe, então minha função pode usar essa variável privada. Ok, então é por isso que isso funciona. Nós não seria capaz se tentássemos vir aqui e ir var assim, nós não seríamos capazes de acessar a banha diretamente por causa de nossa propriedade é privada. Então diz que não podemos acessar propriedade privada. Tudo bem, então isso é uma coisa boa para ter em mente. E, em seguida, outro exemplo de lidar com as classes filho. Se viermos até aqui e criarmos uma nova função pública funcional vai chamá-la de exibição e dentro dela. Vamos simplesmente ecoar Ah, isso e var. Ok, então vamos ecoar este var. Lembre-se, este é o nosso privado. Esta é uma propriedade privada, por isso não deve estar disponível aqui em baixo. Então, se mudarmos isso para nova classe e mudamos isso para ah, exibir e vamos apenas nos livrar disso relaxar, ele vai deixar isso por um segundo. Então agora o que estamos tentando fazer está dentro da exibição. Estamos a tentar fazer eco desta propriedade privada. Se tentarmos fazer isso, está em branco, não teremos nada. E isso é porque não temos acesso a isso. Agora, se eu subir aqui e mudar isso para protegido então agora lembre-se, Protected está disponível para a classe original e qualquer classe infantil, e eu repito isso. Agora tenho acesso a ele. Está bem. Então, novamente, essa é a diferença entre privado protegido e público. Agora, as instâncias em que você pode querer fazer isso muitas vezes, você pode ter um método que você usa dentro de uma classe que você Onley pretende ser usado dentro dessa classe. Bom exemplo. Eu posso pensar é, digamos que você está criando uma classe post e digamos que quando você puxa os dados do post do banco de dados antes de exibi-lo, você quer toe formatado de alguma forma. Então WordPress, por exemplo, isso tem, ah, esta função ah ou este método chamado WP auto Top nosso auto WP auto P ou algo assim? Basicamente, o que ele faz é pegar o que ele recebe do editor de rich text, que acontece para adicionar quebras de linha em vez de tags de parágrafo. Então, quando você está escrevendo no WordPress e você cria um novo parágrafo quando isso é salvo no banco de dados, ele não é salvo em tags de parágrafo que é salvo com tags de quebra. Então, o que WP Auto P faz é quando ele pega isso do banco de dados e muda aqueles em? É uma espécie de método de formatação complicado, mas muda essas tags de quebra e descobre o que os parágrafos devem estar na verdade usam tags de parágrafo. Então é apenas uma coisa de formatação. Bem, esse método de formatação pode não ser algo que você quer disponível para todo o resto e apenas para colocar um bom ponto sobre ele. Se você tem um método de formatação para, digamos, por exemplo, sua classe de post, você realmente não quer ter isso do que também disponível para, digamos, sua classe de categoria. Ok, então que realmente você gostaria que fosse um método privado porque você não quer ser tipo de usar ter uma classe de categoria que está usando um método de seu post clássico dois objetos completamente diferentes. Isso não é realmente uma coisa boa para fazer isso em uma prática recomendada. Se você queria criar um método de formatação que você usou em, digamos, categoria e postar no DSO quarto. Onde você faria é tirar esse método de formatação de metanfetamina da classe post e você criaria uma classe de formato, e então você faria sempre que quisesse formatar algo, você chamaria essa classe de formato, e você poderia chamá-lo de categoria. Ou pode ligar do correio. Você poderia chamá-lo de qualquer lugar, mas você faria. Você iria encapsulá-lo em sua própria coisa se você quisesse usá-lo em várias classes, você não quer estar usando um método de, você sabe uma classe em outra classe. De um modo geral, você quer mantê-los encapsulados para serem suas próprias coisas. E então uma das maneiras que você pode fazer isso é tornando-os métodos privados. Se for um método privado ou uma propriedade privada, outras classes podem acessar. Ou se for protegido. Outras classes podem acessá-lo, a menos que se estendam. Ah, o que Ah, eles estendem a classe original. Então, de novo, essa é a diferença entre público. Peyron protegeu que algumas das informações de fundo no contexto sobre quando você gostaria de usar esses Ah, e assim por diante. Então, espero que tenha achado isso útil. Obrigado por assistir, vamos ficar no próximo. 5. Herança: Ei aí. John Morrissey, John Morse ponto online com Esta lição. Vamos falar sobre herança, já que começamos um pouco. A última lição iria em frente e meio que iria tudo nessa lição. Então vamos em frente e copiar. Este código que tivemos de menos de quatro virá aqui para esta lição. E assim isso estender uma classe é realmente muito simples. E o que ele permite que você faça é herdar toda a funcionalidade que não é privada da classe original. Então, quando falamos sobre isso e nós temos nova classe estendendo minha classe novas classes, o que nós chamaríamos de classe filho e minhas classes o que nós chamaríamos de classe pai desde nova classe estende minha classe, minha classe é o pai e novo classes. A criança herda novas classes, herdando da minha classe. Ok, então, novamente, o que isso nos permite fazer é qualquer coisa que seja protegida ou pública do que podemos usar nesta nova classe. Agora, a maneira que podemos ver isso é se formos para e mudarmos isso para nova classe Agora tenha em mente, nós não temos nenhuma funcionalidade dentro de uma nova classe bem aqui. Tudo o que estamos fazendo é estender minha aula. Mas ainda estamos chamando isso de meu método de função aqui. Então vamos em frente e carregar isso. E você vê, nós temos esta alta bem aqui. Então, mesmo que não tenhamos adicionado nada dentro da nova classe, herdamos toda a funcionalidade da nossa classe pai original. Agora, só para mostrar, se mudarmos isso para protegido e recarregarmos isso, então você pode ver que nós obtemos essa chamada para este método protegido. Ok, então nós estamos chamando isso fora da classe aqui, e esta função está protegida. Então é por isso que não temos acesso a isso. E então, se fizermos, você sabe, privados como este , é claro, nós vamos conseguir isso também. Agora, algo que poderíamos fazer é mudar isso de volta para protegido. E digamos que adicionamos um novo método dentro daqui. Então fazer função pública, e vamos fazer exibição e exibição interna. Tudo o que fazemos é chamar isto e chamamos a minha função e depois aqui vamos colocar o nosso ponto e vírgula . Oh, aqui uma nova classe que chamamos de exibir o novo método que criamos nossa nova classe. Então vamos em frente e executar isso, você vê, nós ficamos chapados novamente. Agora a razão pela qual ficamos chapados é porque somos de nós estamos chamando minha função agora de dentro de uma classe que a estende. Então, mesmo que esteja protegido, ainda estamos chamando de dentro de uma classe que a estende. Então isso é permitido. E agora estamos chamando a exibição de função pública. É o que estamos chamando aqui. Então o que teríamos que fazer é, se definirmos isso como privado, definimos isso como Privado. Agora vamos receber a chamada aérea fatal para o Método Privado. Ok, então não somos capazes de fazer isso. Então é assim que a herança funciona em tudo isso. Agora, novamente, você sabe como você quer Teoh, use estes exemplos de como você pode usar isso. Quero dizer, digamos que sim. Um exemplo que eu posso pensar é, digamos que você obtém ah, no SDK de algum site, como talvez o YouTube para interagir com It's a P I, e você quer construir um wrapper em torno disso Bem, uma das maneiras que você poderia fazer isso seria simplesmente estender qualquer classe ou classes que estão normalmente nesses casos SD, haverá, tipo, tipo, um tipo padrão de classe baseada que você pode estender essa classe. Hum, a fim de usar sua funcionalidade, trazer toda a sua funcionalidade disponível para sua nova classe que você vai certo, que é um rapper, que porque você vai usá-lo para ter sido de alguma forma específica para que você poderia pegar algo que está lá fora, que alguém está escrito lá que está existindo. Ou talvez você tenha escrito e você poderia estender e, em seguida, adicionar em sua própria funcionalidade muito específica ou você tem, digamos, digamos, uma classe de banco de dados. E digamos que falamos sobre uma classe de consulta na classe de banco de dados. Talvez a maneira que você deseja usar sua classe de banco de dados é simplesmente estender com sua classe de consulta. Agora você quer ter um pouco de cuidado com isso por causa da forma como a herança múltipla funciona. E isso pode ficar um pouco complicado quando você sabe, se você quiser usar sua classe de banco de dados e em consulta e talvez em outra classe em outra classe em outra classe, tudo isso pode ficar um pouco complicado. Mas ah, você sabe, se essas são as consultas, a única classe vai estar interagindo diretamente com a classe de banco de dados, então talvez isso seria uma opção para você poderia fazer isso. Essa não é a única maneira de interagir com a classe de banco de dados, mas novamente, é uma opção. Essa não é a única maneira de interagir com a classe de banco de dados, mas novamente, Ou talvez você crie uma classe de objeto que é uma espécie de estrutura base. E, em seguida, a partir de que você cria uma classe post muito específica que acrescenta ao que você tem um objeto para que você possa, ah, ter coisas muito específicas para postar. Então, novamente, eu só estou jogando alguns exemplos de diferentes maneiras que você pode ser capaz de usar isso. Mas novamente, a grande coisa é que esta nova classe vai tomar todas as a grande coisa é que esta nova classe vai tomar todas as propriedades e todos os métodos de sua classe pai. Desde que sejam públicas ou protegidas. Agora há algumas coisas a ter em mente aqui. Primeiro, quando se trata de construtores, a classe filho não chamará automaticamente o construtor da classe pai, então você tem que usar algum tipo de sintaxe específica. Então, vamos a público e vamos funcionar. E vamos criar o nosso próprio construtor dentro do nosso ah, dentro da nossa classe infantil. Agora, se deixarmos isso assim, você pode ver que voltamos a fazer eu gostar do Coop. Agora, por quê? Por que voltámos a isso? Porque anulámos antes de não termos um construtor na nossa turma infantil. Então só usamos a classe dos pais. Agora nós realmente criamos construtor insider classe filho. Ele sobrescreve o pai. Então este pai não vai ser executado. É por isso que voltamos para trás. Eu gosto do Coop porque precisamos desse construtor pai para sobrescrever o que estava em nossa variável aqui. Então é por isso que isso acontece agora. Talvez seja o caso em que você quer que este construtor funcione ainda. Então o que você faz é usar cólon pai e, em seguida, construir então você está essencialmente chamando esse método pai. Então agora isso vai fazer com que o construtor pai para executar. Então, se reexecutarmos isso Ah Oh, na verdade, precisamos passar em nossas variáveis, então vamos texto e precisamos de texto. Tudo bem, então temos variável. Então precisamos ter certeza que colocamos isso lá. Então, agora, se refizermos isso, voltamos a ficar chapados. Então isso é algo a ter em mente quando você está trabalhando com isso. Isso também abre algo. Ah, que nós podemos não que isso pode não ser imediatamente óbvio, mas isso mostra como você pode fazer isso porque nós temos essa classe construtor aqui e nós temos um método construtor aqui. Você pode pensar. Bem, temos dois com o mesmo nome. É assim que você substitui métodos da classe pai em sua classe filho. Assim, por exemplo, poderíamos criar um método chamado public e poderíamos fazer minha função novamente. Este é o mesmo nome é o que temos aqui agora em vez de apenas fazer Ah, deixe-me ir em frente e minha função. Palavra chave. Sou horrível sobre isso. Na verdade, você pode notar que eu faço isso mesmo quando eu apenas me casaco sozinho. Então minha função agora o que podemos fazer é talvez queiramos mudar isso. Talvez nós queiramos tomar eco este var, e então nós vamos adicionar algo a ele. Isso é como, um oi. Bem, está fora do período desde que fizemos no original. Meu nome é John. Ok, então vamos em frente e atualizar isso. Você pode ver que agora temos Hi, meu nome é John. Então nós temos dois métodos com o mesmo nome, mas não há erro porque o que o PHP faz é quando você estende assim, esta classe irá sobrescrever a classe no pai. Ok, então é assim que você pode estender uma classe e ter acesso aos dados que estão disponíveis no pai ou as funcionalidades disponíveis na classe pai. E, em seguida, se houver certos métodos dentro dessa classe que você deseja sobrescrever, você pode fazer isso também. E obviamente, se você quiser entrar aqui você pode sobrescrever propriedades. Quero dizer, tão bem que você poderia, você sabe, este var é igual a ok, então vamos ver o que isso nos dá. Então agora temos algo diferente. Meu nome é John. Por que temos isso? Porque lembre-se, nós passamos no alto é tudo o que passamos para que isso vá para esta classe alta. Mas depois passaremos isso pelos nossos pais. Nosso pai vem aqui e diz, OK, que este var é agora igual ao teste. Então nós logo depois disso mudou este var para algo diferente. Então isso basicamente recebe um, uh, sobre escrito por isso aqui. E agora é isso que vamos usar aqui em baixo quando fizermos isso parou longe do nosso período. Meu nome é John. Ok, então isso pode ser um pouco confuso. Mas o que estou tentando mostrar é que você pode substituir praticamente tudo dentro da classe dos pais. Os métodos, as propriedades, todo esse tipo de coisa. Então você pode pegar a funcionalidade que deseja, e então, se quiser, há você deseja adicionar ao que está lá, você pode adicionar a ele criando novo. Você pode criar novos métodos dentro daqui como fizemos com a exibição. Você também pode substituir métodos existentes e propriedades existentes dentro dele. Agora, a última advertência para isso. Digamos que eu coloquei esta palavra-chave final aqui na minha função. Vá em frente e recarregue que você vê, dizemos que não pode substituir método minha classe, minha função. Então, quando você está criando sua classe pai, se você quiser criar um método que não pode ser substituído por classes filho, você precisa usar esta palavra-chave final aqui, e isso impedirá que alguém seja capaz de fazer isso. Ok, então isso é realmente um mergulho profundo na herança. Espero que esteja bem claro para você. Se não, eu diria apenas tipo de volta através dele e então realmente entrar lá e começar a mexer. E ela está mudando as palavras-chave de privado para protegido, estendendo uma nova classe sobre isso. Apenas entre lá e mexa com isso. Ouvi uma ótima citação outro dia. Essa clareza vem da ação, não do pensamento, então eu acho que isso é muito, muito verdade. E isso vai ser muito, muito verdade neste caso. Quanto mais a mensagem que quanto mais você a usa, mais ela vai fazer sentido e se tornar clara para nós. Então entre lá e comece a mexer com essas coisas, tudo bem, isso vai fazer isso por essa lição. Obrigado por assistir. Falamos com você na próxima. 6. Métodos e propriedades estáticas: Olá, John Morris aqui, Joe Morris, ponto com online. Esta lição. Vamos entrar em propriedades estáticas e métodos e realmente falar sobre a palavra-chave estática porque isso é o que você adiciona a ambos. Isso os torna estáticos. Então vamos em frente e copiar este código aqui e ir para o nosso novo cabelo de arquivo. E vamos citar, espécie de simplificação por um segundo para que eu possa mostrar-lhe isto. Vou me livrar do construtor por um segundo. Eu vou mudar isso de volta para público, e nós vamos mudar esse dedo público e vamos chamá-lo vai adicionar esta palavra estática a ele. Ok. E então vamos descer aqui e vamos criar uma nova instância da nossa classe. Então nós vamos. Minha classe é igual a nova minha classe. Você não tem um construtor agora, então não precisamos nos preocupar com isso. E vamos ver o que acontece se formos à minha aula. Conheces a minha função. Então estamos basicamente fazendo o que fizemos antes, certo? Temos um método. Minha função, estamos referindo nossa propriedade aparecer e nós estamos aqui fora e nós queremos apenas ecoar isso e , na verdade, mais uma coisa que eu preciso fazer antes de fazer isso, você pode ou não precisar fazer isso. Acontece que o meu sistema suprime os ares. Então eu preciso ligar o relatório aéreo e então e tudo novamente, você pode ou não ter que fazer isso porque alguns dos erros estavam indo para chegar aqui não são reais ares fatais. Eles vão ser avisos. E então eu só quero que você seja capaz de vê-los. E se eu não fizer isso, você não vai ser capaz de destruir ver aquele alguém para exibir ar, e nós vamos definir isso Teoh verdade. Tudo bem, então isso deve ser o que precisamos aqui. Então vamos recarregar isso e ver o que acontece. Então diz padrões rígidos acessando propriedade estática. Minha classe do nosso como não estático em bolha online nove. Então aqui estamos referenciando são variáveis como fizemos antes. Mas agora está nos dando esse ar que estamos referindo-o como não estático. Então este é o primeiro tipo de introdução para o que isso realmente significa Quando criamos A quando criamos uma variável estática ou um método estático como este O que ele faz é fazê-lo de modo que esta variável, por exemplo, basicamente existe fora do eu diria, o escopo do objeto desta classe significa que se eu tentasse usar isso Se eu tentar usá-lo em qualquer lugar da minha classe e usou esta variável aqui, não vai funcionar porque eu mudei para uma variável estática. E não é para ser usado no escopo do objeto, ok? E é a mesma coisa se eu tentar vir aqui e vamos apenas tentar acessar a propriedade diretamente. Então, se eu tentar acessar isso diretamente, vá em frente e recarregar e novamente acessando propriedade estática minha classe como não estático. Então, quando você o torna estático, ele faz com que você não possa acessá-lo através deste objeto. Desde a sintaxe, ele não é mais uma parte desse contexto de objeto. Então, agora o que você precisa fazer para acessá-lo é que você precisa usar o que você precisa para acessar e o que é realmente diretamente. Então agora vamos fazer minha aula, e você pode ter visto isso antes, e então vamos fazer minha função assim, ok, ok e na verdade, precisamos do Teoh. Na verdade, é ir longe e eu acho que é assim. Então, se quisermos acesso ao dedo do pé, a chave era assim. Temos que ter certeza ou a propriedade. Temos que nos certificar de que colocamos nossa, hum, torná-la em uma variável real aqui. Então vamos em frente e recarregar isso e vamos em frente, ecoar. Então agora temos eu gosto de aro. Então agora temos acesso a ele. Então, o que eu fiz como eu era capaz de acessar uma propriedade de classe sem instância comer uma instância da classe. Isso é o que as palavras-chave estáticas permitem que você dialogue. E podemos fazer a mesma coisa com o nosso método aqui. Então vamos mudar isso para Estática. Vamos mudar isso de volta ao normal, já que vamos fazer isso. Então vamos em frente e fazer a minha aula. Minha função assim, quero te mostrar isso. Agora você pode ver o ar fatal usando isso quando não um contexto de objeto. Então, novamente, estamos acessando. Esta é uma função estática, então não estamos no contexto do objeto. Então isso não funciona nisso. Lee é criado quando você instância e oito Uma instância da classe. É quando isso fica disponível. Já que não fizemos isso, não está disponível. Então vamos em frente e fazer isso. Uh huh. Agora, não, não, nós não fizemos esta estática aqui, então vamos em frente e atualizar esse acesso à propriedade estática não declarada. Então agora voltamos aqui e mudamos isso para Estática, e recarregamos. E agora temos o que queremos. Então eu não quero mostrar a vocês é que quando você começa a usar a palavra-chave estática, ele meio que começa a assumir tudo o que você dilatar. Então você quer ser um pouco cuidadoso sobre como você está usando isso? Agora, a realidade disso é que você pode estar perguntando, bem, por que isso seria usado principalmente, isso foi usado. Ah, isso foi usado antes de termos espaços de nome e foi usado no contexto de você não estava criando um Isso foi basicamente pegar código processual e colocá-lo dentro de uma classe, e você estava essencialmente usando a classe como um espaço de nome . E isso é o que eu chamaria de pseudo. Isso foi usado para pseudo objeto ou programação odiada no sentido de que você sabe, você não estava necessariamente criando um post muito post classe em uma categoria de plástico, você estava basicamente levando Você não estava quebrando tudo e na verdade vivendo de acordo com o espírito de que objeto durante a programação é. E não estou dizendo que não sou como esfarrapar essas pessoas. Eu não sou. Não estou a dizer que isto seja uma coisa horrível ou algo assim. Só estou dizendo que não era assim que esse tipo de coisa era usado. Isso foi usado em um contexto onde você só tinha mais de uma coleção de métodos dentro de sua classe e você tinha uma coleção de propriedades e você estava apenas colocando-os dentro da classe, a fim de impedi-los de estar no espaço de nomes global e enlameando esse espaço global de nomes e tendo colisões com outras variáveis e de outros aplicativos e assim por diante. Então a idéia era colocá-lo dentro de uma classe e usar a classe é uma espécie de espaço de nome, mas ainda ser capaz de acessar essas coisas diretamente. E então, se tirarmos isso da aula aqui, e nós só tivemos minha função. Poderíamos chamar a minha função assim, certo? Não teríamos que instância oito. Uma nova instância de uma classe e todo esse tipo de coisa. Assim, palavras-chave estáticas permitem que você faça algo semelhante. Você só tinha que adicionar isso minha designação de classe. E agora você pode acessar suas funções diretamente. Você poderia acessar. Ah, você sabe, você é muito suas propriedades diretamente. E se você queria Teoh referência uma propriedade aparecer exatamente como se estivéssemos fazendo vamos fazer isso, vamos. Meu var. E isso é no espaço global de nomes, certo? Não está dentro de nenhuma classe dentro de qualquer função dentro de qualquer espaço de nome, qualquer interface, coisa que esteja diretamente no PHP. Então este é o espaço global de nomes. Então agora criamos uma função e queremos ecoar, corrigi-la em um segundo, meu var, e vamos chamar isso de meu funk. Tudo bem. Ah, função do meu funk. Tudo bem. Então, se quisermos ir em frente e Echo, eles são realmente isso é chamar meu funk, hein? Ok. Tudo bem. Então, se quisermos fazer isso, vamos ficar indefinidos. Variável, indefinida. Variável meu var aqui. Por que é indefinido? Porque isso está no espaço de nomes global. E isso está no espaço de nomes local. Então o que você teria que fazer aqui e se você tomou meu PHP um em um curso, você vai saber disso, mas ir global my var. Ok, então agora o que isso diz é que eu quero usar a versão global do meu var dentro desta função . Agora, você sabe, nós temos, nós conseguimos o que queremos, nós não temos um ar, e nós podemos definir isso para o meu bar igual a global. E então nós obtemos, realmente obter alguma saída para obter global assim. Ok, então pode ter sido assim que seu código foi escrito antes. E você agora apenas eles são como, OK, eu preciso colocar isso dentro de uma classe porque ter meu var no espaço global nome qualquer coisa poderia ser chamado meu var. Eu poderia ter algum outro pedido e poderia haver colisões, então eu vou pegar isso e colocá-lo dentro de uma aula. Mas eu não estou tentando fazer todo o módulo Allenby separando. Eu só quero pegar esses métodos e colocá-lo dentro de uma aula. Bem, geralmente era assim que a estática era usada. Porque agora você ainda pode fazer isso. É um tipo similar de configuração para isso. Mas agora você só tem que usar em vez de usar global e assim globalizar com global, você só precisa ter certeza de que você referenciá-lo estaticamente, e você usa palavra-chave estática em tudo. Então palavras-chave estáticas, worm ou usado quando você estava tentando fazer isso e realmente uma maneira não orientada a objeto ah , e você só queria pegar um tipo de código processual e colocá-lo em uma classe. Então as aulas estavam mais acostumadas com o espaço de nomes quando as pessoas estavam fazendo esse tipo de coisa é o ponto que eu quero fazer. Eu menciono isso porque agora temos um machado, nome real, palavra-chave espaço para criar um espaço de nome, e então não precisamos mais fazer isso. E quando estamos falando de programação orientada a objetos, geralmente quando você está usando palavras-chave estáticas que estão fora do contexto do objeto, isso não é realmente objeto durante a programação. Não é que você não possa. É algo que você não pode fazer que você certamente pode. Mas se você está indo para tipo de ir a rota conjunta objeto e quebrar as coisas em objetos e encapsular Ah e polimorfismo e todas as palavras extravagantes lá fora que as pessoas usam. Se você vai seguir esse caminho, você realmente não precisa ou quer estar fazendo isso. Não há necessariamente um uso para métodos estáticos ou propriedades dentro desse objeto verdadeiro ou no contexto. Agora há provavelmente algumas advertências para isso, mas eu diria que há provavelmente menos do que você imagina. E geralmente é uma situação em que, se você vai fazer isso, ou há realmente uma maneira melhor de fazê-lo. Isso é mawr objeto orientado ou é apenas como um exemplo extremo em seu problema pode correr para que uma vez em sua carreira. Hum, eu pessoalmente ainda tenho que encontrar uma situação em que eu absolutamente tive que usar uma função estática, variável, variável, er estática para alguma coisa. Normalmente eu poderia pensar sobre isso de uma maneira diferente e realmente encontrar uma maneira melhor de realizar o que eu queria. Então nós o cobrimos porque isso é uma parte do que você pode fazer aqui e assim por diante. Mas é outra vez. É algo que eu não chamaria de “obsoleto ID”. Mas é algo que definitivamente não é usado tanto, especialmente com a introdução de espaços de nomes nas versões mais recentes do PHP. Dito isso, que é estático, a palavra-chave estática que propriedades estáticas e método estático. Então, espero que consiga algo com isso. Obrigado por assistir. Falamos com o próximo. 7. Espaço de nomes: Olá, John Morris. Aqui, John Morris, ponto com online. Esta lição. Nós vamos entrar no nome Espaços, então nós meio que referenciamos isso um pouco no vídeo anterior. Então eu quero entrar em tudo isso aqui tão rápido. Eu quero te dar por que você pode querer usar um espaço de nomes. Então, a ideia é que parece vir até aqui. Você pode estar trabalhando com quando você está montando algo juntos, você pode estar trabalhando com vários pacotes. Então, digamos, por exemplo, que você esteja trabalhando com ah, Facebook sdk e um YouTube STK. E então você vai trazer os dois para a sua candidatura. Você vai incluí-los em seus arquivos e começar a usá-los. , Digamos que,por alguma razão, ambos tiveram uma aula de banco de dados. Bem, se nós não tivéssemos espaços de nomes e nós apenas e esses pacotes tivessem essa classe chamada apenas banco de dados como este, se ambos tivessem isso, você teria um problema onde você tem duas classes tentando declarar o mesmo nome e que iria jogar no ar, modo que obviamente seria um problema e assim a maneira como as pessoas costumavam lidar com isso no passado é que eles usariam um nome de classe realmente descritivo, então eles poderiam usar algo como base de dados do SDK do YouTube como isso, e tudo bem. E funciona, mas isso pode começar a ficar um pouco complicado. Se você começar a obter nomes de classe mais longos. Eu acho que o motor Zen é o garoto do cartaz para esse tipo de coisa. Se você olhar para os nomes das classes e tal, eles começam a ficar bastante longos e complicados. E uma das coisas que foi criada para ajudar a lidar com isso foi um espaço de nomes . Então, em vez de ter que prefixar assim, a primeira coisa, o que você poderia fazer e isso vai jogar no ar porque você precisa declarar espaço de nome na parte superior do arquivo. Mas nós vamos apenas, por exemplo, saquê nós vamos fingir que este é o topo do arquivo. Mas você faria algo como o YouTube e então é assim. E o que isso vai fazer é criar um espaço de nomes que agora você pode colocar todas as suas, uh, suas aulas dentro e eles não colidirão com outras classes que estão em um nome diferente. Espaço. Isso cria um novo nome totalmente novo, espaço. Qualquer coisa abaixo deste nome, Declaração Espacial. Então, se fizermos banco de dados como este, tudo isso em Lee existe dentro deste espaço de nomes e não está mais no espaço de nomes global . Então, se o Facebook apareceu e disse espaço de nomes uh, Facebook flash sdk e eles fizeram banco de dados de classe essas duas declarações do banco de dados de classe , mesmo que o mesmo não colida porque este está dentro deste espaço de nomes, e este está dentro deste espaço de nome. Então essa é a ideia. É z tipo de como pré fixação, mas fazê-lo de uma forma mais ou menos complicada. Certo, então vamos conversar. Vamos então passar pela nuance de como tudo isso funciona. Então, primeiro, eu fiz pré escrever algum desse código só porque há uma certa quantidade dele e então me enviou me observando digitando tudo isso seria desnecessário desnecessariamente longo. Então eu criei dois arquivos. Um é lib um ponto PHP, e um é lib para dot PHP. Você vê no topo de ambos e novamente. O espaço de nome precisa ser declarado na parte superior do arquivo. Temos aplicativo e, em seguida, temos barra lib um e temos aplicativo e, em seguida, barra barra Lib para o que isso faz é colocar cada um desses arquivos em seu próprio espaço de nome. Então, agora a minha aula e eu podemos, você sabe, você pode Ah! Ah, você poderia ter estes com o mesmo nome de classe. Estes podem ser o meu nome de turma, mas eu só queria mostrar-lhe mas eu só queria mostrar-lhe algumas das diferenças aqui. Então, de qualquer forma, eu dei nomes de classes diferentes e essas classes são com as quais temos trabalhado. Não há nada extra aqui. Então tudo o que fizemos foi adicionar este espaço de nome ao topo. Então agora isso coloca estes em seu próprio aplicativo de espaços de nome separado, barra ao vivo. Quer um aplicativo barra lib também. Agora, se viermos aqui, então a primeira coisa que faço é exigir esses dois arquivos. E agora usamos essa palavra-chave usar para ah, referência são Lib um e minha classe são vividas duas e sua classe e você pode ver aqui. Estou usando feno e aqui estou usando alto e podemos ver aqui eu tenho feno alto como minha saída . Então isto é essencialmente como você pode começar a encapsular toda a sua aplicação em espaços de nomes. E então Então ele é separado de todos os outros aplicativos, e então você não precisa criar nomes de classe realmente complicados. Então a primeira coisa que você faz é colocar o que no topo de seus arquivos de classe reais, você vai colocar um espaço de nome e definir um espaço de nome. E então, quando você quiser usar essas classes, você usou a palavra-chave use e você faz referência ao aplicativo ao vivo e sua classe Apple viveu dois e sua classe. Agora há outra maneira que você pode fazer isso se nós ah, ir em frente e comentar aqueles fora quando você está instância comendo uma nova instância da classe, você também pode referenciá-lo especificamente para que você possa fazer o aplicativo e, em seguida, você pode fazer um live viver Juan, e então você poderia fazer hap barra lib lib tipo lib, também. Assim, para que você pudesse ter acesso. Havia referências especificamente quando nós comemos uma instância dessa classe. Então nós referenciamos isso. Você pode ver que isso funciona. E para mostrar o que acontece se não fizermos isso, vá em frente e se livre deles e não será incomum para aqueles Você vai ter uma aula de ar fatal , minha classe não foi encontrada. E é um ar não encontrado porque é que quando criamos o espaço de nomes, nós o tiramos do espaço de nomes global. Assim, a declaração de classe literalmente não existe mais no espaço de nomes global. E é por isso que você começa este ar não encontrado. Ok, então novamente, é assim que criar espaços de nomes e usar espaços de nomes e, em seguida, usá-los dedo do pé novamente. Encapsule seu APS agora, uma outra coisa que você poderia fazer que eu quero mostrar-lhe que um pouco útil é enfraquecer. Nós também podemos usar isso como palavra-chave para que possamos usar Apple Iban minha classe como vamos apenas dizer J e ah, vamos usar isso como m. Ok, Então, se nós viermos aqui agora, esses ar chamados pseudônimos. Então agora mudamos como podemos fazer referência a essas coisas. Então, se recarregarmos isso, você pode ver que estou recebendo minha saída esperada e eu estou chamando o novo J. Eu nunca declarei uma classe chamada J. Eu nunca declarei uma classe chamada em. Mas o que eu fiz foi dizer, usar essa classe como Jay usou essa classe em todos os espaços de nomes como M. Então eu criei um pseudônimo quatro minhas classes. E agora eu posso chamar eu posso instância oito novo J novo M e isso funciona. Ok, então esses são pseudônimos que você pode usar também. Então isso é outra coisa que você pode ver Veja lá fora e você pode achar útil também. Então, novamente, quando se trata de ah, como realmente ir sobre, ah, organizar seus aplicativos e assim por diante, você sabe, muitas vezes eu recebo pessoas que são como, Apenas me diga como organizá-lo, e a realidade é que é onde você está, você sabe, é aí que você é tipo de criatividade como um desenvolvedor meio que entra. Agora vou fazer um primer M V C no final deste curso, e vou provar parte disso. Vamos dar uma olhada em alguns pacotes existentes que estão lá fora. Então você pode ter alguma idéia de como eles são organizados, mas há todos os tipos de padrões de design que estão por aí. A NBC não é a única, e no final do dia, é a sua aplicação, então você pode organizar, como quiser novamente. Há um tipo de práticas recomendadas e convenções e apenas uma espécie de maneiras que as pessoas fizeram isso no passado. Mas parte do que você faz é os desenvolvedores para ser criativo, resolver problemas de maneiras únicas, criar seus próprios tipos de idéias e assim por diante. Então não tenha medo de experimentar isso. Obviamente, dê uma olhada em outros pacotes se você quiser alguma orientação. Mas espero que agora, sabendo disso, saiba o que está olhando. E eu acho que isso é a maior coisa. Quando você entra nesses outros pacotes e você vê algumas dessas coisas e você não sabe o que é, ele pode ficar realmente confuso muito rápido. Mas espero que agora, sabendo como os espaços de nomes funcionam e assim por diante, você pode ir para ele e dizer, Oh, eu sei o que é, e você pode começar a montar como eles estão colocando as coisas. Como o seu ah, organizando e assim por diante, e que pode lhe dar idéias. Então esse é o meu objetivo. 40 de qualquer maneira. Então, de novo, esse é o nome Spaces. Esperemos. Ah, você conseguiu algo com isso. Obrigado por assistir. Falaremos na próxima. 8. Autoload: Ei aí. John Morrissey, John Morris online ponto com. Esta lição. Vamos entrar no carregamento automático agora. Carregamento automático não é necessariamente tipo de objeto estritamente durante uma programação. Mas à medida que começamos a falar sobre a construção de aulas e começamos a usar espaços de nomes e assim por diante Ah, eu acho que se torna importante falar sobre carga automática. E a razão é que estamos focados nessas duas linhas aqui em cima. E você pode ter trabalhado com aplicativos o suficiente para código o suficiente para saber que depois de um tempo você começa a lidar com um monte desses. E eu, você sabe, eu faço tutoriais onde eu falo sobre ah, usando ah, load file e esse tipo de uma maneira de lidar com isso e isso funciona bem, quando você está trabalhando com algo que é mais tipo de, Uh, em um algumas pessoas vão gritar Blast para mim aqui. Mas quando você está trabalhando com algo que é mais frontal e pesado Então onde ah muito do seu código se fôssemos falar sobre isso como, digamos, M v c sábio é um monte de sua visão de codas pesado, e não é necessariamente tanto coisas no back-end. Considerando que, ah, o que vamos falar com carga automática tende a funcionar muito melhor quando você tem um monte de volta como você tem um monte de classes diferentes que você está precisando para carregar um monte de espaços de nomes diferentes e você tem uma tonelada dessas coisas acontecendo. E então a idéia de carga automática é nos ajudar tipo de se livrar de ter que usar esses requisitos e ter, tipo, 15 deles. Se tivermos tantas aulas de novo, isso realmente começa a se tornar, ah, um problema quando você tem quando você está quebrando objetos individuais. de Códigodemanipulação de objetos em classes. E então, se você de novo, começamos a falar sobre a NBC. Você começa a falar sobre várias classes para um objeto porque você tem, você sabe, pontos de vista e você tem o modelo e você tem o controlador e todo esse tipo de coisa. Então você começa a obter um monte de classes e um monte de arquivos que você precisa carregar. Portanto, ter que cair constantemente em todas essas declarações exigem pode ser complicado. Então é com isso que vamos mostrar como lidar aqui? Criei um novo arquivo. Irá apenas copiar todo este código irá soltar isso em. E claro, como seria de esperar se eu me livrasse desses requisitos nós vamos ter esses ares. Agora, eu quero que você preste atenção a este ar porque ah, o que o PHP meio que tenta fazer é ah, quando vamos fazer o material de carregamento automático é baseado fora deste é o nome da classe . Ok, isso é alguma coisa. Eu quero que você realmente prestar atenção ao seu aplicativo barra lib um slash minha classe. Esse é o nome real da turma. Então, quando entramos em você pode ter visto ah função chamada SPL auto load register virá aqui para baixo para registrar. Então SPL Lotto auto load registrado leva uma função de retorno de chamada. Então, vamos dizer pelo nosso bem, aqui vamos nós. Carregamento automático. Tudo bem para ser simples. Hum, agora esta função vai ser uma espécie de neste Ah ah. Muitas vezes neste espaço global de nomes como este. Então, ah, uh, usar carga automática como esta é, hum talvez não a melhor coisa a fazer. Talvez queiras pensar num nome diferente, mas para os nossos propósitos, posso mostrar-te este ano. E o que eu estava fazendo lá é que eu tenho o hábito de fazer isso. Isto não é um cisto numa nova função que estamos a criar. O que estamos fazendo é que esta é uma função PHP estavam chamando, e estamos passando em um nome de uma função que queremos usar é um callback. Então o registro de carga automática SPL só vai chamar essa função de retorno de chamada. Então vamos criar uma função chamada Auto Load e um monte de frameworks. Você verá que eles colocam isso em, é um tipo de arquivo separado e assim por diante. Ah, e você sabe, o jeito que eu estou fazendo aqui apenas o topo de um arquivo como este não é necessariamente o jeito que você faria isso. Você normalmente colocaria isso em espécie de seu próprio arquivo e, em seguida, incluído em tipo de seus arquivos base para começar com ou ah, alguma forma incluído em seu aplicativo. Então, ah, mas novamente, eu só estou meio que mostrando isso de uma maneira simples aqui. Então, novamente, SPL lote de registro de carga automática vai executar a carga automática de retorno de chamada. E o que ele passa é o nome da classe. Então é por isso que isso é importante porque vai passar na sala de aula. Lembre-se que o nome da classe é este nome completo aqui. E tem as barras traseiras como esta, não as barras dianteiras. Então, se tentarmos o quê? O que você provavelmente tentaria fazer imediatamente é apenas fazer algo como exigir uma vez . E então, um classe, nomeie Deus, PHP. Algo como isto. Isso é uma coisa bem padrão que eu acho que muitas pessoas diriam apenas, Ei, você sabe, nós vamos colocar e então você criaria arquivos como este aplicativo lib Juan viveu como eu fiz aqui. Então nós temos aplicativo liberal nos dois, e você diria, OK, eu estou pronto para ir, mas ou talvez você nem pense em criar esses arquivos assim, certo? Talvez essa seja, você sabe, talvez essa seja a coisa. Então o que você vai notar é que diz que ele não vai abrir, e a razão pela qual ele não vai abrir é por causa disso. Slash está bem aqui. Então precisamos ter certeza de que vamos fazer a substituição de cordas, e precisamos mudar. Precisamos que o Teoh os mude para o tipo certo de cortes. Então nós estamos essencialmente indo para fazer o que nós estamos indo para procurar é nós vamos procurar por esses cortes para a frente. Agora, a coisa sobre isso é, se você fizer isso, você vai notar que torna o nosso código todo confuso. E isso é porque uma barra invertida também está em escapar personagem. Então ele está realmente escapando desta última citação bem aqui. Eso precisamos que coloquem dois assim para garantir que não temos o problema de fuga, e então vamos substituí-lo por uma barra real, que é o que precisamos. Ok, então se nós recarregarmos isso agora nós temos a saída esperada, ok? E então o que está acontecendo aqui é quando dizemos: “ Ei, Ei, queremos usar maçã liberal na minha classe. O que o PHP faz? É isso? Ele procura por aqueles. Ele procura essa designação nos arquivos que ele tem disponível para ele que foram carregados. Bem, obviamente, se não precisarmos deles, não vai encontrá-los porque não exigimos esses arquivos. Então o que ele faz, ele faz uma última tentativa, essencialmente para encontrar esses arquivos, e ele vai tentar carregá-los automaticamente. E então este é o lugar onde podemos adicionar neste auto SPL carga, registrado esta função de retorno de chamada para dizer-lhe para dar-lhe ajuda e dizer-lhe onde procurar. E então nós estamos dizendo essencialmente, porque o nome das classes ab cortar liberal e cortar minha classe o que estamos fazendo com isso. Mas esta função aqui, os carregadores automáticos estavam dizendo, foram os primeiros para mudar as barras traseiras em barras dianteiras. E agora nós estamos dizendo, Hey, olhar para esta classe em lib barra app um slash minha classe dot PHP e olhar ou olhar para ele em lib. Ah, ap viveu para ah, seu ponto de classe PHP É onde queremos que você procure por isso. Então estamos dizendo onde olhar com isso agora, isso é importante, porque ok, talvez você não queira. Você não quer usar o aplicativo e viver um como este. Talvez queiras fazer algo como “vamos”. Ah, vamos fazer partes iguais explodir e vamos fazer nossos backsplashes novamente porque precisamos explodir por esses cortes, e vamos usar o nome da classe. E sabemos como resultado disso que o último elemento que sabemos o que estamos procurando. Agora, isso é um pouco complicado porque você está assumindo que todos eles têm a mesma estrutura. E você pode ter designações como esta que são como, hum outro ditado, eu não sei o que isso pode ser. Você pode ter quatro assim. Ok, então você tem que ser um pouco cuidadoso, mas você pode usar ah, algo como, ah, Ray Pop. Eu acredito que é que vai saltar fora do último elemento de uma matriz. Então ah, e ele vai retornar que o último valor da matriz como ele é retornado parâmetro para que possamos fazer ah chamado o nome direto real é igual a, Ah, matriz, topo e partes. Tudo bem, vamos apenas, ah, ah, ecoar isso e ter certeza de que estamos conseguindo o que procuramos. Tudo bem, então vamos em frente e fazer isso. Agora vamos ter a minha aula. Então esse é um dos que estavam atrás disso novamente para cada um destes que ele tenta carregar. Vai correr isto porque não está a encontrá-la. Então ele vai executá-lo para este aqui e depois executá-lo para este. Então agora temos a minha turma encapsulada. E mesmo que tivéssemos outro aqui como este, ainda vamos ter a minha aula porque estamos a usar um Ray Pop. Então, agora que temos o nome direto da classe, poderíamos criar uma pasta como esta, Ah, nova pasta e poderíamos fazer aulas. E poderíamos colocar todas as nossas aulas aqui, e então poderíamos construir isso para que ele procurasse dentro daquilo para que pudéssemos fazer, um enigma isso e talvez pudéssemos fazer algo como, hum, vamos fazer um sprint f torná-lo um pouco mais fácil aqui. Aqueles fazem sprint f. E o formato vai ser Ah, nós vamos procurá-lo em classes e, em seguida, barra e, em seguida, porcentagem s e, em seguida, ponto PHP. Certo, isso deve funcionar. E assim vamos fazer nome vai colocar nome em sua. Então, o que a metade do sprint faz? Se fosse essa porcentagem, pegará o valor do nome e o colocará no “Ok “deles , então é só um pouco mais limpo de fazer isso. Talvez eu precise adicionar alguns cortes e outras coisas aqui, mas vamos ver o que conseguimos. Hum, não, eu tenho o meu eco e sair por aqui ainda. Quero dizer , pode precisar adicionar alguns cortes, mas vamos ver. Sim, então vamos ah, bem, e na verdade, não temos minha aula lá, então vamos fazer isso. Vamos fazer Ah, copiar. E depois vamos colar isto aqui e depois vamos fazer a tua aula. Vamos copiar isso e vamos colar e eu vou chegar ao ponto de tudo isso aqui em apenas um segundo. Tudo bem, então lá, agora vamos. Nós acertamos. Então nós fizemos. Acabamos de fazer duas formas diferentes de carregamento automático. Nós fizemos isso onde criamos um aplicativo e vivemos um como este, que você pode ver algumas pessoas fazer, ou nós fizemos isso onde nós colocamos todas as nossas classes em uma pasta e não importa onde eles sabem onde eles vão ser chamados de, Não importa você sabe quantos níveis diferentes temos aqui. Em última análise, esta função de carregamento automático vai olhar para nossas classes dentro desta classe é pasta, e se houver um, ele vai carregá-lo. Ok, então eu mostro tudo isso para apontar que quando você vai lá fora e olhar para diferentes aplicações, você vai ver diferentes maneiras de as pessoas carregarem coisas automaticamente. E você pode começar a pensar que essa é a única maneira de você fazer isso ou o que quer que seja. Mas esta carga automática Ah, função. Este registro permite que você chame uma função de retorno de chamada, dá-lhe o nome da classe, e então você pode analisá-lo e manipulá-lo como quiser. E isso permite que você construa sua estrutura de uma maneira específica. Isso faz sentido para você. Então você pode tipo de organizar seu pai sua aplicação como você quiser. E a coisa boa é que poderíamos ter, você sabe, 17 desses usos. Ah, essas designações de uso aqui, e nós poderíamos ter 17 classes diferentes. E desde que sua maneira de escrever carregamento automático, certifique-se de organizar seus arquivos dessa maneira específica para que ele funcione, então você vai ficar bem. E novamente, isso vai ser um pouco quando nós, quando entrarmos em Ah, quando começamos a olhar para a NBC e vamos olhar para algumas dessas coisas, você vai ver algumas funções de carga automática que têm um monte de Eles têm alguns blocos if eles são muito mais complicados do que isso. E isso é bom. E isso na verdade funciona muito bem nesses cenários e assim por diante. Mas eu quero mostrar-lhe isso para que você tenha uma compreensão básica do que realmente está acontecendo lá e para que você saiba que você pode tipo de escrever sua carga automática como quiser . E é uma ferramenta muito útil para quando você tem um monte de classes que você precisa carregar em vez de colocar 17 blocos exigem no topo, você pode usar uma carga automática como esta, e você pode usar if instruções aqui e assim por diante. E então talvez você pudesse. A maneira como você organiza é que você realmente verificaria. Você está fazendo você explodir. Mas você iria pegar o primeiro elemento fora dele, certo? Você iria pegar essa parte do aplicativo, e você diria, OK, se o aplicativo que eu vou procurar eu quero que você procure por ele nesta pasta, e você poderia ter uma instrução if que lida com se o primeiro elemento deste designação é aplicativo e vamos dizer, talvez seja eu não sei, talvez você tenha, ah, YouTube, YouTube, STK ou algo assim e você quer usar o YouTube ou você tem um rapper do YouTube. Então, se for YouTube, vou procurar em outro lugar. Ou se for, há vários tipos de maneiras diferentes de organizar isso. Mas, novamente, eu quero que você saiba que você pode escrever esta função como quiser para que você possa organizar seu aplicativo, como quiser e ainda ser capaz de tirar proveito dela. Então isso é carga automática. Espero que consiga algo com isso. Obrigado por assistir. Falamos com você da próxima vez. 9. Interfaces: Olá, John Morris aqui, Joe Morris online ponto com. Esta lição. Nós vamos falar sobre interfaces, então interfaces são uma maneira que eles o que eles fazem é que eles permitem que você especifique tipo de estrutura que uma classe deve implementar em particular, o que ele faz é que ele diz a você os métodos que uma classe tem toe tem se ele está indo para implementar. Ah, sua interface. E isso é útil para uma série de situações. Por exemplo, digamos que você só quer ser você como um codificador individual escrevendo coisas. Você quer ser mais organizado e tipo de manter-se no caminho certo e assim por diante. E então o que você pode fazer é quando você está, você está construindo uma espécie de idéia do que você quer que seu aplicativo seja e obtendo o tipo de base de idéias e conceitos para baixo e funcionalidade para baixo. Você pode criar diferentes interfaces que dizem Ok, eu sei que esta interface precisa para o que thes Siris das classes vão precisar fazer algum tipo de manipulação de dados, então eles vão estar armazenando coisas no banco de dados trabalhando com o banco de dados, então eu sei que eu vou precisar ter um criar uma leitura e atualizar e excluir para que você possa escrever uma interface que diz, Ok, eu preciso. Para cada uma das classes que implementa essa interface, eles precisam ter certeza, no mínimo, eles têm um Cree Cree ler, atualizar e excluir. E então, quando você escreve a classe e implementa a interface, se você não tem esses métodos lá, então ele vai lançar um ar e você vai ser como, Oh , sim, eu preciso fazer isso que é uma instância provavelmente uma instância mais popular ou são realista é Digamos que você é o desenvolvedor sênior em algum tipo de organização e você é encarregado você e seus desenvolvedores júnior. Talvez você tenha cinco ou dez finalistas. Você tem a tarefa de criar algum tipo de novo aplicativo. E assim, como o desenvolvedor sênior, você quer fornecer uma espécie de trilhos de guia para seus desenvolvedores e certifique-se de que a sua ah, eles estão escrevendo as coisas necessárias que você precisa para o aplicativo para que você possa sentar-se e escrever uma série de interfaces e definir a estrutura básica do que o código precisa fazer sem realmente ter que preencher e escrever o código. E então seus desenvolvedores júnior precisam. Quando eles escrevem um tipo particular de classe, eles precisam ter certeza de que eles implementam um certo tipo de interface Ah, a fim de que ele funcione. E isso lhe dá um cenário onde, como o desenvolvedor sênior do gerente de projeto, você pode tipo de orientar o desenvolvimento e configurar uma estrutura para o desenvolvimento, mas na verdade não precisa escrever o código individual para cada classe. E isso é o que uma interface faz. Então, para criar uma interface, você acabou de usar a interface de palavra-chave em vez da classe de palavras-chave. E então você dá um nome à sua interface. Você tem seus colchetes encaracolados que ele está dentro e, em seguida, dentro dele. Tudo que você faz é especificar os métodos que esta interface deve conter, para que possamos ver que fazemos função pública, e então temos um nome fazer coisa, e temos função pública e um nome fazer outra coisa. Você não coloca nenhum dado dentro do método. Ele não vai permitir que você vai obter o deles se você tentar colocar dados dentro destes métodos durante todo o ano, especificando é os nomes dos métodos que têm de existir em qualquer classe os implements, esta interface e assim você pode ver aqui em baixo do que nós Quando queremos implementar a interface , dizemos classe minha classe em vez de estende. Quando estávamos usando um pai e classes filho, fazemos implementos. E então dizemos minha interface quando fazemos isso, o que isso então diz é que agora temos que nos certificar que nesta classe temos um método chamado fazer coisa e chamado Fazer outra coisa. E então, se atualizarmos isso, você vê que estamos recebendo nenhuma saída aqui causa minha saída, qualquer coisa. Mas se eu entrar aqui e vamos comentar esses dois últimos métodos, então agora eu tenho que fazer coisas, mas eu não tenho que fazer outras coisas, e então se voltarmos aqui, eu tenho uma aula de ar fatal. Minha classe contém um método abstrato e, portanto, deve ser declarado abstrato ou implementar os métodos restantes, e então ele diz o método que ele precisa implementar. Então, novamente, se você está em uma organização e você é o desenvolvedor sênior e você tem um monte de desenvolvedores trabalhando para você e você diz que você vai até eles e diz, OK, eu implementei todas as interfaces. Aqui estão as interfaces que você precisa usar para isso e isso. E eles dizem e eles vão para o seu código lá. A classe cara implementa minha interface e então eles escrevem, eles tentam carregar a página, você vai ver. Oh, você precisa implementar este, você precisa implementar este, você precisa implementar este como eles têm ah, guia ferroviário de Estas são as coisas que eu preciso completar. E então eles podem passar e completá-los. E quando eles vão mostrar seu código como o desenvolvedor sênior, se eles não instruíram, ah criou um dos métodos necessários. Você vai ver isso direito. Você vai ver isso. Você pode tentar carregá-lo, e ele vai dizer, Ei, Ei, este método não existe de novo e dá-lhe algum controle e alguma orientação em termos do quadro geral do que você está construindo. Agora, se descermos aqui, é claro que Willen comenta este e você pode ver agora não temos saída porque temos ambos os métodos definidos. A outra coisa é, não são apenas esses dois métodos que você tem que implementar, ou você tem que criar o para todos os métodos que são especificados no em seu rosto, mas você pode adicionar seus próprios métodos a ele. Então agora temos 1/3 método aqui que não foi delineado na interface. Mas você pode ver que nós ainda não temos nenhum erro ou apenas estamos bem com esse tipo de coisa. Então, novamente, isto é Isto está criando uma interface que permite que você obtenha algum controle sobre alguma estrutura sobre as classes que você está criando. E isso pode ser usado de várias maneiras diferentes, seja você pessoalmente ou trabalhando em equipe e assim por diante. E isso pode ser usado de várias maneiras diferentes, Então é isso que as interfaces são. Isso é o que, portanto, Ah, isso vai fazer por esta lição. Obrigado por assistir. Vamos levar da próxima vez 10. Primário de MVC: Ei aí. John Morrissey, John Morris online ponto com. Esta lição vai ser uma cartilha sobre MV C. Agora quero ter certeza de que estou claro sobre o que quero dizer com “primer “e o que vamos falar aqui. Então primer é projetado para ser uma espécie de visão geral de nível superior de conceitos. Então não vamos começar a escrever nenhum tipo de código com isso. Não é Ah, você sabe, entrar no nosso editor e colocar todas essas coisas fora isso vai ser uma visão geral dos conceitos. E eu incluí isso mesmo que não seja realmente necessário. Não é realmente 100% programação orientada a objetos. Eu acho, ah, que muitas pessoas, quando pensam em programação orientada a objetos, em última análise, estão empurrando para uma espécie de padrão de design porque, em última análise, objeto ou qualquer programação é sobre a criação de aplicativos. NBC é um padrão de design muito popular, mas não é o único padrão de design. Ah, isso está lá fora. E realmente, se você quiser aprender NBC em profundidade como isso, esse é o seu padrão de design do que você gostaria de considerar fazer um curso específico M V C porque é grande o suficiente de um tópico que merece seu próprio tipo. Claro que sim. Então eu quero dar-lhe um primer em uma visão geral de de de conceitos de alto nível para que você entenda M. V c e e entenda que é um entre os muitos dos padrões de design que estão lá fora . Mas também é muito popular, e assim podemos falar sobre algumas das coisas que estão acontecendo com ele. A outra coisa tipo de tumba ou tipo de advertências. Um. Eu vou fazer referência a este artigo aqui sobre o ponto local e eu queria fazer realmente vir aqui e mostrar-lhe isso porque A e eu vou ligar para, ah, ah, este artigo, uh, uh, onde quer que eu possa em termos de onde você está visualizando este curso. Mas vou ligar para este artigo para que você possa vê-lo. Mas há duas coisas sobre este artigo um que eu realmente queria usar. Ah, eu realmente gosto dessa foto aqui, e eu não queria apenas passar a foto, então eu queria mostrar onde eu realmente consegui. de. Vamos falar sobre isso à medida que passarmos por isso. A outra coisa é esta. Este artigo faz um argumento com o qual eu concordo quando se trata de NBC. E o argumento é que muitos dos frameworks que você vai ver hoje se você sair e olhar para, ah, ah, os diferentes frameworks ou pessoas que estão usando o padrão NBC hoje, muito do que você vai find é uma espécie de um uso alternativo do que a NBC realmente é . E como este artigo meio que faz o ponto para, não é realmente verdade. M. V C. E vamos falar especificamente sobre por que essa ISS e assim e isso não faz com que seja errado. O que aconteceu é que as pessoas desenvolveram seu próprio padrão de design. Mas é importante entender que o que você vê lá fora de muitas estruturas, realmente é um padrão de design diferente que implementa idéias semelhantes, mas de uma maneira diferente. E então, se nós realmente queremos falar sobre o tipo puro de verdadeiro M v C, eu quero ter certeza que você entende o que é isso. Isso não quer dizer que você não pode fazer o que esses outros frameworks ar fazendo, e então você tem que fazê-lo desta maneira ou um é melhor. Isto no outro. Eu só quero salientar que há uma distinção entre os dois, então você sabe o que é isso? Tudo bem. Então, o que? Dito isso, vamos entrar no que isso é um pouco. Então NBC significa controlador de visualização modelo. Toda a idéia é separar a lógica de negócios e tipo de gerenciamento de dados e, como o tipo de back-end de coisas com tipo de frente e exibição de coisas. E se você já construiu qualquer tipo de aplicação, você sabe que existe. Pode haver esse tipo de lama entre os dois, e só tem um ponto na aplicação. Se você não está fazendo este tipo de framework NBC ou algum tipo de design mais gordo e projetado para lidar com isso sempre um ponto no aplicativo onde você se sente como parte dele é meio sujo. E é como se isso fosse meio que hackear e não se sentir super limpo. E então o que a NBC faz é ajudar a tentar resolver esse tipo de coisa para lhe dar princípios e regras que você pode seguir, a fim de ajudar a manter seus aplicativos realmente limpos, realmente modulares e assim por diante. Então, o que de novo, o quê? NBC significa seu controlador de visão modelo. Então estes ar os três componentes e você vai ver como nós, uh, em nossa foto aqui. Tudo isso está relacionado a essa ideia implícita do usuário. Então, às vezes falo sobre esse usuário implícito. Ah, isso é É sempre assumido que há um tipo de usuário em segundo plano usando nosso aplicativo. E assim o controlador, finalmente Ah, na verdade, é provavelmente melhor se começarmos a falar sobre o modelo primeiro. Então o modelo é o que usamos para o nosso tipo de armazenamento de dados a longo prazo. Então este modelo é, em última análise, cego. Ele não tem nenhuma conexão ou tem alguma idéia do que está acontecendo com a vista ou o controlador diferente do que é solicitado dele? E o que eu quero dizer com o que é solicitado dele é que o controlador irá, Como você vê aqui, o controlador irá interagir com o modelo e atualizar os dados que estão no modelo, ea visão irá interagir com o modelo, a fim de tipo de fazer perguntas, a fim obter os dados que ele precisa para exibir o que ele precisa exibir para o usuário a interface que ele precisa exibir para o usuário. Mas o modelo realmente não tem idéia de nada disso. Ele não sabe o que é por que os dados precisam ser usados. Ele não sabe por que ele precisa ser atualizado. Tudo o que sabe é que me disseram para atualizar esses dados ou me disseram para recuperar esses dados e devolvê-los. E assim ele simplesmente está respondendo às solicitações do controlador e da vista. E isso é importante para entender em termos de separar o que está acontecendo entre o controlador e a vista e de tudo o mais que está acontecendo com o modelo. O modelo vai finalmente girar em torno de seu tipo de função de banco de dados, então vai ser a coisa que está acontecendo. Vai ser a sua multidão vai inserir dados em uma tabela particular. Se for dito, vai atualizar os dados. Se for dito a ele vai ser recuperá-lo e retorná-lo para ah view se ele for dito para , ele vai ser, ah novamente excluir esses dados. Se for dito. Então, ele está apenas reagindo ao que é dito para fazer, e é completamente cego e se concentra apenas no armazenamento de dados a longo prazo. Ok, então quando você pensa modelo, não é 100%. Mas pense na base de dados. Quando você está pensando nisso, então é quando entramos nesta distinção entre a vista e o controlador. Agora você vai notar aqui não há setas indo entre vista e controlador, e é aqui que nós entramos nesta distinção entre o que você vai ver de estruturas que estão lá fora e tipo de verdadeiro M v C. Em verdadeiro M V C. Não há interação entre a interação direta entre o controlador e a exibição. A única maneira de interagirem indiretamente uns com os outros é através do modelo. E o que eu quero dizer com isso é que se o controlador atualizar alguns dados no modelo, é claro que isso vai afetar a visão. Mas o controlador não diz nada diretamente à vista, e a vista não diz ao controlador nada diretamente lá completamente separado. Agora que por que isso é diferente dos frameworks modernos são muitos dos frameworks modernos . O que você verá é que o controlador realmente fica em cima da vista e do modelo. Então, muitas vezes o que vai acontecer é que o controlador irá controlar quais pontos de vista estão sendo exibidos. E é simplesmente puxar modelos da exibição, a fim de ter a exibição adequada. E isso não é verdade. M v c. Em Em verdadeira NBC, as vistas são mais do que apenas modelos. Os pontos de vista estão interagindo e conversando com os dados, e eles controlam isso, toda a parte dele. Então, para ficar realmente específico sobre como isso funciona, vamos dizer que você vai para uma espécie de página da Web, e quando você vai para o seu vamos apenas dizer indexado, eu poderia ser qualquer domínio Lissy Index, parar PHP Quando essa página carrega, há uma série de coisas que precisam acontecer em qualquer tipo de aplicativo. Primeiro, o aplicativo precisa saber em que página você está. Você está no PHP index dot? Você sabe, se você está em um CMS, você pode ser um índice de ponto PHP. Mas, em seguida, um parâmetro de consulta de P é igual a nove. Bem, isso significa que estamos solicitando o posto que tem idéia do número nove. Isso é diferente de estar na página inicial real. Então você precisa saber onde o contexto de onde você está como resultado de onde você está , você precisa saber. Talvez eu precise verificar se há alguma variável de sessão para ver se essa pessoa está logada. Ou talvez eu precise que eu tenho que ter ah, parâmetro de consulta que especificou que me requer para consultar, consultar certas informações e exibir coisas de forma diferente. Então, se você está no índice dot PHP saberia parâmetro de consulta, eu poderia puxar o template home dot PHP E eu poderia dizer os dados ou dizer o modelo Hey, eu preciso de todos os posts. Ok, eu preciso ou eu preciso do último 10 post porque eu sou um display 10 no momento. Então ele vai consultar o modelo e dizer, eu preciso dos últimos 10 posts. Ele vai agarrar. Ok, eu preciso da visualização da página inicial, e ele vai pegar os dados e vai colocá-los na vista. E isso é o que, em última análise, leva à exibição da página. Ok, esse é todo o trabalho de visualizações. A vista é para lidar com tudo isso. Descobrir o contexto. Descobrir o que, pai, eu preciso para descobrir que vista eu preciso. Então eu sei o que eu preciso para mostrar ao usuário que tudo é o lado da visão das coisas. O lado controlador das coisas assume quando algum tipo de existe algum tipo de interação entre o usuário e nosso aplicativo. Então digamos que você está de novo. Você está em uma página de publicação de bloco individual e em uma página de postagem blawg individual, pode haver uma caixa de comentários, então há uma pequena área de texto com o botão Enviar. Assim que enviar, botão é clicado e vamos apenas por um segundo esquecer Esquecer Ajax e JavaScript tudo isso por um segundo. Vamos apenas imaginar o PHP período e nada mais assim que esse botão for clicado. Agora tivemos uma interação entre o usuário e nosso aplicativo, e precisamos lidar com isso. E então precisamos de alguma forma de saber. Bem, quais dados foram enviados, qual era o contexto e qual era? Um pouco isso. Quero dizer, poderia ter sido um comentário, mas também poderia ter sido o administrador na parte de trás e criar um novo post como o que é o contexto desses dados para que eu possa descobrir o que eu preciso fazer com ele. É o que a controladora faz. O controlador descobre, descobre. Ok, estes dados foram enviados de uma página de postagem individual do pântano. Foi um comentário e foi um comentário sobre este post particular. Este foi um comentário desta pessoa. Aqui está o comentário. Esta é a data que você sabe, ele descobre todo o contexto de onde essa interação do usuário veio. E ela pega essa interação e a processa. E depois actualiza. Demotte diz ao modelo Que atualização do dedo do pé? Conseqüentemente. Então ele diz para o modelo, basicamente, Ei, nós temos um comentário que eu preciso. E estava neste post. Preciso que adiciones um novo registo à tua base de dados à tua tabela de comentários. E estes são os dados Ford. Este é o post que foi de Este é quem é de etcetera. O modelo vai bem. Quem acabou com encontros? É isso. Só faz o que mandam fazer. Então agora que pode ser um pouco lamacento porque você pode começar a pensar Ok, a vista eo controlador conectado porque se você está na página e há um botão de formulário lá. Essa é uma espécie de exibição, mas também é dados enviados pelo usuário, mas então é uma espécie de controlador, então eles são meio misturados. Mas a maneira de fazer a distinção clara sobre isso é esta. A exibição é responsável por exibir o botão e exibir o formulário e o parâmetro de ação no formulário para dizer onde isso está. Estes dados devem ser processados na exibição é responsável por exibi-lo. Uma vez que o botão é atingido, entanto, a exibição não tem nada a ver com a forma como os dados em si são processados. Isso é tudo o que é todo o controlador. Ok, então o controlador assume essa parte, e então ele irá atualizar o modelo. E então, é claro, como resultado disso, então a visão será alterada porque os dados foram alterados. Então, de novo, Teoh meio que passar pelo processo. Quando uma página é carregada, digamos, uma página de publicação de bloco individual. É a responsabilidade dos pontos de vista olhar para o U. R L e dizer, Ooh, temos P igual a nove. Ok, isso significa que este é o post I reitor, este é um post seu I D. 9. E então eu preciso pegar os dados desse post do banco de dados. Eu preciso do meu único post view porque esta é uma única página de post, e eu vou inserir ou injetar esses dados neste modelo e boom. Isso é o que eu vou mostrar que inclui um formulário de comentário. Então essa é toda a visão e isso nesse processo, a visão pode ir e voltar com o modelo olhar e dizer, Ei, eu tenho um post com a idéia de nove. Isso existe? E o modelo pode dizer “Não, isso não existe”. E você pode ir, Hope não existe. Isso significa que eu preciso do meu modelo para o meu 404 Boom. Eu exibo isso ou ele pode dizer, Ei, essa ideia post de nove existe e modelo diz, Sim, isso existe. E então você pode ir. Certo, me mande os dados para isso. E agora a vista pode ir. Ok, eu tenho dados para isso e como eu preciso do meu único modelo. Ah, arquivo. Aqui está. Aqui está o que você precisa. Essa é a interação entre visão e modelo. Ok, Agora, uma vez que essa página é exibida e inclui o formulário que o antigo controlador submetido assume . controlador Ocontrolador diz para o banco de dados, tenho um comentário para o Post I D 9. diz para o banco de dados, , Este post eu d nove existe. O modelo diz que sim, isso existe, diz ele. OK, adicione este comentário ao anúncio. Esses dados para o estão em um novo registro para a tabela de comentários referenciando e ele faz referência. A base de dados do posto I D número 9 vai bem. Nesse ponto, o banco de dados dirá ao controlador se foi ou não bem-sucedido. Ele vai dizer que vai dizer de volta para o controlador. Ei, aquele comentário sobre mim e inserir, é bom para ir. Todos inseridos e controlador vai procurar isso agora se o modelo diz de volta para o controlador. Tentei inserir os dados, mas algo deu errado. Tentei inserir os dados, Aqui deu errado. O que deu errado? O controlador. Vá Esperança que algo deu errado, e ele vai então lidar com isso de acordo em termos do que você preparou para. Se você queria ir para uma página diferente ou o que seja, ele vai fazer uma espécie de ar redirecionado com base nisso. Ok. E assim lá no final de tudo o que o controlador faz novamente. Estamos esquecendo Ajax e JavaScript por um segundo. Seja qual for o ato de idade, seja qual for o fim da controladora, sempre haverá algum tipo de carregamento de página ou redirecionamento. Então você pode ser direcionado para uma página aérea ou talvez você leia se, se for bem sucedido, o controlador pode dizer, OK, foi bem sucedido. Podemos redirecionar para aqui. Então, no final de tudo o que a controladora faz, sempre haverá Page. Haverá sempre uma espécie de atualização da visão quando isso e pode ser um redirecionamento para uma página diferente, etc. Mas há sempre uma espécie de recarga de uma atualização. Ok, quando isso acontece e as novas páginas agora estão online, agora estamos de volta à vista está sob controle. Ok, então realmente, a única interação entre o controlador e a visão é que o controlador irá acionar esse tipo de atualizações e dizer, precisamos recarregar a página porque nossos dados foram atualizados. Então isso é e então quando essa recarga acontece, então você está de volta para a visão é a coisa que está tentando descobrir o que está acontecendo. Certo, estamos no posto 9 de novo. Precisamos de obter o conteúdo para isso. Vamos pegar todos os comentários. Oh, há um novo comentário Boom. Nós preenchemos a página com o novo cometa, ok? E assim novamente, apenas para voltar a uma espécie de verdadeira NBC, é o usuário que provavelmente o controlador que processa a entrada do usuário e ele se comunica diretamente com o modelo e, finalmente, atualiza e manipula o modelo. É a visão que interage com o modelo e, em última análise, exibe a coisa adequada. A interface de usuário adequada para o usuário com base no contexto em que o que tudo isso é em termos de, o que, pager em qualquer tipo de não, qualquer tipo de outro para o usuário com base no contexto em que o que tudo isso é em termos de, o que, o que, pager em qualquer tipo de não, sessão muito visível pode verificar. E então, é claro, os dados que ele realmente solicita do modelo. Então, novamente, eu quero dar a vocês aquele quadro geral para o que a NBC realmente é e como essas coisas interagem. Então espero que isso o coloque no caminho certo, e então eu só quero olhar alguns alguns alguns APs diferentes aqui. Então um é de seu chamado este mini. Então esta é apenas uma irmã espinha. É uma aplicação PHP extremamente simples e nua. É realmente conhecido por prototipagem. Se você quer se familiarizar com a forma como as estruturas são construídas e você quer começar, interagir com e assim por diante, então isso é algo que você pode usar. Também há garfos diferentes. Então você tem um minúsculo, você tem muitos têm, ah, esse tipo de coisas. Então, novo , é uma coisa muito simples que você pode olhar. É um pouco mais fácil olhar para algo assim do que olhar imediatamente para algo como Laura Bell e “Whoa, o que está acontecendo? Então, outra vez, um que você possa olhar. É um pouco mais velho, mas essas coisas não tendem a mudar uma tonelada, porque eles são realmente básicos, ossos nus. Então, se clicarmos em aplicação, você pode ver que temos pastas para a vista para o modelo para o controlador, e então se clicarmos aqui, então temos essas diferentes vistas que temos em casa e quando temos diferentes tipos de arquivos que estão lá para a home page. Temos problemas Então temos ah Index para que temos músicas em Nós temos ah exibição de músicas Provavelmente uma edição de músicas e assim por diante Então essas são todas visões diferentes Se olharmos para o modelo, vá para o modelo que PHP e olharmos aqui Vou notar que isso é tudo OK tem a ver com a base de dados Ah conectando via DOP recebendo todas as músicas Então leia, obtenha e leia a mesma coisa Então pegue todas as músicas Ah, aqui em baixo nós temos música Então pegue uma música Esses ar Ambos ler métodos que temos adicionar música Isso é inserir Nós temos atualizações Música Então isso é atualização e nós não temos uma exclusão Mas nós temos Temos a liderança aqui? Oh, sim, nós temos que apagar música e então nós temos uma quantidade de músicas então nós temos três métodos de leitura. Temos uma atualização. Nós temos um deletar Ah, e nós temos uma inserção ou criar Então novamente, voltando ao meu ponto que o modelo é lida principalmente com as interações de banco de dados Ele realmente vem para baixo do pé cruddy ele e, em seguida, qualquer tipo de auxiliar em torno disso diferentes tipos de multidões. Então você tem três métodos de leitura e assim por diante que você pode precisar fazer. Mas o banco de dados ou o modelo é apenas focado nos dados, no armazenamento de dados, na atualização de dados, na recuperação de dados, esse tipo de coisa. Agora novamente, você sabe, o tipo de se olharmos para os pontos de vista que isso é o que nós meio que conversamos. Se olharmos para casa e olharmos para o PHP index dot, ele realmente é apenas uma espécie de template. E, em seguida, se entrarmos em, ah, controlador ligado, vamos apenas ir com casa, você pode ver que o controlador está carregando diferentes pontos de vista. Então, isso é o que eu estou falando quando você olha para alguns desses mais, uh, uh, esses frameworks que estão lá fora é Eles colocam o controlador em cima da vista, e eles realmente têm o controlador carregando visualizações e descobrindo quais pontos de vista carga dos dedos. E essa não é realmente a maneira, como a NBC pura é projetada agora novamente, eu não estou dizendo que isso é ruim. Não estou dizendo que um é melhor do que o outro. Estou simplesmente a dizer que a forma como muitos destes quadros foram é uma espécie de alteração da NBC. Então esse é o tipo de coisa que você vai ver. Mas você ainda tem. Veja, aqui temos modelo. Nós temos você. Temos controlador. Aqui está um exemplo de outro. Então temos um pouco mais básico. Temos pontos de vista aqui páginas, postar usuários. Então, todos os tipos diferentes de visões que podemos ter. Se entrarmos em páginas, vemos as páginas diferentes que temos. Se entrarmos em páginas, Hum, nós estamos indo para modelos. O que vai para o usuário? Então esta é uma aula fria dedicada a trabalhar com o usuário, como eu já mencionei antes. Esta é uma turma inteira, ah, destinada a lidar com postos de manipulação. Se entrarmos em bibliotecas aqui, temos toda a classe controlador para o controlador. Uh, nós temos núcleo. Temos uma turma inteira para o núcleo. Aqui temos banco de dados. Então uma classe inteira para interagir com o banco de dados. E então, novamente, temos modelos, visualizações, controladores. Temos esta área de ajudantes aqui. E então se olharmos para bootstrapped para fora PHP, Este é o lugar onde você pode ver o nosso nome de classe de registro de carga automática SPL e ele está indo com requer quer estoque de biblioteca. Nome da classe. Então isso é para lidar com as aulas de ah que estão na biblioteca. Isso é o que este carregador automático ajuda dio. Agora isso não parece estar funcionando com o nome Espaços, então isso é algo para prestar atenção. Mas novamente, apenas alguns exemplos de diferentes tipos de, ah, aplicativos que você pode ver o seu trabalho com lá fora e como eles tentam implementar M. V. C. no final do dia, você sabe que é seu aplicativo, e você sabe que a maneira que você deseja implementá-lo é como você deseja implementá-lo. Eu só quero dar a vocês uma espécie de primer para ajudar a entender os conceitos principais, e a coisa a entender é, e algumas pessoas podem discordar disso e dizer Não, já foi descoberto, mas novamente, indo com o que falamos sobre a distinção de, você sabe, tipo de verdadeira NBC e o que vemos lá fora e estruturas, eu não acho que isso está em debate. Mas, ah, muita gente ainda está tentando entender esse tipo de coisa, certo? Não é como se houvesse uma maneira difícil e rápida. É assim que se faz. Tudo bem, ainda há alguns, especialmente porque seu aplicativo fica mais complexo e pediu para lidar com mais coisas. Pode começar a ser um pouco mais difícil manter esse tipo de separações e assim por diante. Mas se você obter os conceitos básicos na idéia base e entender, você sabe que esse controlador se reuniu para lidar com a entrada do usuário e atualizar o modelo, oh estão interagindo e manipulando modelo. A exibição é destinada a exibir a interface do usuário e as necessidades de dados e descobrir qual modelo ele precisa exibir e todo esse tipo de coisa nessa interação. exibir a interface do usuário e as necessidades de dados e descobrir qual modelo ele precisa E o modelo é completamente cego. Tudo o que faz é reagir ao que lhe é pedido. Então esse tipo de começa o dedo do pé. Você pode começar a descobrir como separar seu aplicativo de qualquer maneira. Isso meio que faz sentido, então espero que isso lhe dê um pouco de compreensão da NBC em algumas das coisas de nível superior . Como eu disse, isto é um primer. Se você realmente quer cavar na NBC especificamente como um padrão de design, um entre os muitos. É popular. É uma boa. Mas é um entre muitos. Eu recomendaria não encontrar um curso completo na NBC e tipo de mergulhar nisso e ter em mente algumas das coisas que falamos sobre eles vão, da maneira que eles podem ensiná-lo. Ah, NBC. Pode não ser o verdadeiro tipo de NBC de que estamos falando, e tudo bem. Se você está bem com a maneira como foi ensinado a você, então, por todos os meios, siga esse caminho. Então, tudo bem, isso é suficiente para esta lição. Com sorte, você conseguiu algo com isso. Obrigado por assistir. Falamos com você da próxima vez. 11. Como criar aplicativos profissionais com o OOP: Olá, John Morris. Aqui, John Morris, ponto com online. Esta lição. Eu quero tentar realmente dar-lhe a ajuda ou a direção, a visão para ser capaz de começar a construir sua própria aplicação profissional com base em tudo o que você aprendeu até agora. Então, há algumas advertências indo para isso. Primeiro, eu acho que o maior é o que eu vou mostrar aqui não é algum. Isso é algo que eu vi uma espécie de versão de uma vez, e eu meio que adicionei meu próprio sabor a ele. Mas o que estou mostrando aqui não é necessariamente como tudo está fazendo. Todo mundo está fazendo isso agora ou eu não. Ele nem diria para ir tão longe a ponto de dizer que é necessário a melhor maneira de fazê-lo. O que eu realmente estou tentando chegar ao mostrar isso a vocês é tentar e meio que esticar sua mente e fazer você pensar sobre tudo o que aprendemos de maneiras diferentes e ajudar tipo de despertar sua criatividade. E há uma razão importante por trás da qual eu quero fazer isso, porque eu não uma das coisas que eu acho que muitas pessoas se envolvem, e é realmente, muito bom programadores para isso é que há estes difíceis, maneiras rápidas disso. Temos que fazer coisas. Você provavelmente já viu isso por todo o lugar onde você sabe que a NBC sai e todos dizem que você tem que fazer a NBC e você olha para você sabe o que está acontecendo em nosso espaço agora em querida começa a ser uma espécie de padronização da maneira como tudo é feito, e parte disso é bom. Você desenvolve práticas recomendadas e quer saber para criar o melhor aplicativo. Você confia nos melhores aplicativos e assim por diante. Mas um dos problemas que eu acho que isso leva é que as pessoas olham para uma melhor prática que começam a olhar. É como se fosse a única maneira. E se você não fizer isso dessa maneira, enquanto você é apenas um idiota e eu realmente me esforçar para empurrar contra isso porque final eu não quero criar estudantes que saibam como fazer isso, que apenas sabem como fazer o que todo mundo está fazendo. Quero dar-te o que é. Por que o primer da NBC. Mas eu quero estudantes que não são seguidores, mas líderes que são as pessoas criativas que estão constantemente olhando para as coisas e dizendo: Como podemos fazer isso diferente? Como podemos separar isso? Como podemos melhorar isso? E os que estão criando as novas maneiras que se tornam as melhores práticas? Isso é o que eu realmente quero tentar te dar. E eu acho que a maneira de fazer isso é esticar sua mente, dar-lhe perspectivas diferentes e mostrar maneiras diferentes de fazê-lo. Mesmo se você pudesse olhar para trás, você sabe, todos nós poderíamos olhar para trás em cinco anos e pensar, oh, isso foi realmente estúpido. Você tem que estar disposto a arriscar isso. Você tem que estar disposto a arriscar cair na sua cara, a fim de fazer algo grandioso. E eu sei que estou ficando um pouco pessoal aqui, mas eu realmente acredito nisso. É por isso que eu estou mesmo fazendo este vídeo em primeiro lugar é esperar inspirar você e levá-lo a pensar sobre isso e um pouco diferente de talvez o que todos os outros estão fazendo assim que disse que eu quero falar sobre esta idéia de construir verdadeiramente tipo profissional de aplicações e a forma como tudo funciona. É para mim que começa sempre com o banco de dados? Então, para falar sobre isso, espero que abra esta instalação encontrada. Não se preocupe. Vamos chegar a um pouco do que você está vendo aqui com este índice e assim por diante. Tudo o que vamos falar acaba por levar a isto. As histórias aqui e a simplicidade são realmente o que procuramos. Mas novamente, tudo começa com o banco de dados porque é onde os dados armazenados. Isso é realmente na maioria das aplicações. Em última análise, a parte mais importante dos seus dados fica estragada. Então você vai ter todos os tipos de problemas. E esses problemas são muito mais difíceis de corrigir porque então você não sabe o que são dados, certo? Se for um ar de código, você pode usar os dados para ajudá-lo a descobrir. Se é um ar de dados, fica muito difícil saber o que é o quê. Então eu falei sobre isso em alguns outros cursos que fizeram, mas eu quero cobrir aqui novamente porque novamente. Acho que esta é a base para uma aplicação profissional. Então, quando você está criando um aplicativo, há novamente. De um modo geral, pode haver advertências para este tipo de coisa. Mas a maioria dos aplicativos que você vai criar há três tipos principais de tabelas que você vai querer criar. E então eu quero falar sobre cada um deles e como todos eles trabalham juntos. Então o primeiro tipo de tabela que você vai construir é o que é chamado no que eu chamo de uma tabela de objetos. E é aqui que você vai armazenar seus objetos nos dados sobre eles. Então, em nossa matriz de tabelas bem aqui. E eu só usei estes como exemplos para um tipo de ponto de partida para você pensar sobre como construir seu banco de dados, dependendo de seu aplicativo. Isso, é claro, mudará. E uma das coisas que não quero fazer neste vídeo é dar todas as respostas. Isto é mais um desafio. Vídeo este ar de vídeo. Esta lição é feita para não dar todas as respostas, não dar-lhe todo o código e desafiá-lo a escrever essas coisas e descobrir isso sozinho. É assim que você realmente se move para ser um desenvolvedor profissional. Mas em nossa matriz de tabelas aqui, isto é Nós somos basicamente que o que eu estou dizendo aqui é estes ar, as diferentes tabelas que podemos ter nesta aplicação particular em que o post e as tabelas de categoria seriam nossas tabelas de objetos. Então, se viermos aqui para exemplo para a tabela de postagem, o que vamos armazenar nessas tabelas são os dados, e eu quero ser específico e usar os dados da palavra e vamos falar sobre a diferença. O que? É por isso que precisa ser específico. E segundo. Mas são os dados que, em última análise, formam o objeto. Então um post não é um post realmente? Certo. Se não tiver um título, se não tiver algum conteúdo, você sabe, se não tiver uma lesma. Assim, os e e todos eles poderiam ser debatidos, é claro. Mas o que estamos dizendo quando criamos nosso aplicativo é que um post não é realmente um post completo a menos que ele tem coisas. Então a tabela de objetos vai armazenar esses dados e o que você o que de novo? Quais são as duas coisas que eu acho que são únicas sobre uma tabela de objetos? Isso é ou um objeto? É os dados que é que estamos armazenando é necessário e vai colocar um Asterix por, exigido no sentido de que você pode se safar com não ter algum desse direito? Você pode criar uma postagem sem conteúdo ou publicação sem título. Não é como se você não pudesse fazer isso, mas não é realmente um post. Então, a fim de torná-lo o que deveria ser, esses dados são necessários, e são, ah, dados que finalmente ajudam a formar o objeto. Então, se estamos pensando em nossas analogias, é como as rodas, certo? Você não pode ter um carro sem as rodas. Tecnicamente, você poderia ter um carro e ele estaria sentado lá. Mas não faria o que deveria fazer se não tivesse rodas. Então os dados são como todos os componentes que ele tem que ter. Ok, então você tem que ser realmente implacável sobre isso porque você pode pensar que algo ah objeto tem que ter algo quando realmente não tem. Então, novamente, conteúdo do título, você sabe, talvez uma imagem em destaque seria aquela que você diz ser necessária. Uma lesma você é o desenvolvedor. Decida isso. Ok, então isso é o que uma tabela de objetos é. São os dados que realmente formam o objeto em si. E você pode ver aqui embaixo na categoria. Nós temos tipos semelhantes de nós temos identidade identidade Nós chamamos isso de nome e descrição, mas isso é realmente semelhante ao título no conteúdo e, em seguida, um slug também. Então, nosso post e nossas tabelas de categoria são tabelas de objetos. Estas são tabelas primárias, estas com aquelas de Neil que estamos armazenando todos os nossos diferentes objetos que criamos em seguida temos tabelas metta. Então meta tabelas são falamos sobre a tabela de objetos armazenar os dados, as tabelas meta irá armazenar os metadados. E então novamente, metadados tem tipo de dois recursos distintos que são tipo de, em contraste, dos dois recursos que esses objetos têm e que é metadados seriam coisas que consideramos opcionais s, para que ele realmente não necessariamente sempre tem que ser definido para cada objeto. E os metadados geralmente são coisas que descrevem o objeto que descreve o objeto ou os dados que compõem o objeto. Não são os dados de coisas que realmente constrói o objeto em si. Ok, então para tentar dar um exemplo disso no WordPress, há um plugue que ele usou o CEO frio do Yost. E uma das coisas que o CEO do Yost faz é quando você cria um post, que é um objeto no WordPress, ele adiciona uma pequena caixa para você inserir uma palavra-chave foco. E quando você insere o foco, palavra-chave, o que ele faz é analisar que seu título, seu conteúdo, suas tags, todas essas informações sobre o objeto e lhe dá uma pontuação e, em seguida, dá a você sobre coisas que você poderia fazer para torná-lo. Morrell seo amigável. Então essa palavra-chave de foco, eu acho, claramente se encaixa no ah, o cenário dos metadados, certo? A palavra-chave focus não é Nós não precisamos disso para criar o objeto. Não é parte do objeto em si. O que está fazendo é descrever mais o objeto. Então ele está analisando e nos dando uma espécie de pontuação. E então ele está descrevendo, ou seus dados sobre os dados, que é o quê? O tipo de definição de metadados e, em seguida, também não é necessário. Se não colocarmos na palavra-chave focus, ainda temos Ah, o objeto objeto ainda pode fazer o que queremos que ele faça. Só não saberemos o que o CEO que meio que marcou para isso é então essa é a diferença entre os dois e você meio que. Só não saberemos o que o CEO que meio que marcou para isso é então essa é a Não é necessariamente uma linha brilhante usar uma frase comum nos dias de hoje. Ah, é algo que você meio que tem que ir e voltar e tentar descobrir agora com isso dito, quando queremos armazenar esse tipo de dados, na verdade pode ser um pouco difícil se nós estamos tentando colocar esses dados na mesma tabela que nosso objeto, certo, porque talvez nós, você sabe, se nós vamos ter, ah, ah, certo particular um determinado pedaço de metadados que nós vamos adicionar ao para a tabela de objetos real, bem, nós teríamos que ter uma coluna para isso. E então podemos ter 99 postagens que não têm metadados e um que tem. Então, que tipo de começa a ser um pouco de perda de tempo. Além disso, quando você começar a considerar o que podemos ter 10 partes de metadados. E então agora você teria que adicionar. Se você estiver indo para armazená-lo nos objetos capazes, você teria que adicionar 10 colunas, e então você teria que armazenar os dados sobre isso, ou você teria que criar uma espécie de meta coluna. E então você tem que tentar manter pares de valores de chave de inserção, o que significa que você estaria trabalhando com os Rays, o que significa que você tem que serializar isso, que significa que você então não poderia pesquisá-lo. E assim começa a ficar um pouco complicado para tentar fazê-lo dessa forma. Então, a maneira que fazemos isso da maneira que lidamos com metadados e torná-lo modular, escalável e flexível é usar uma meta tabela, e assim uma meta tabela tem três primárias. Não estou dizendo que essas são as únicas coisas que você pode ter, mas essas são as principais coisas que você precisa para fazer isso funcionar. Então este post meta designação aqui tem três colunas principais. Vai ter o objeto I D. Então, neste caso, temos post. Então é o Post I d aqui em baixo na categoria Meta temos categoria i d Então tem o objeto. Eu d tem um médico e no valor meta. Então, o que estamos essencialmente dizendo aqui, quando criamos um registro nesta tabela, é que estamos dizendo para este post com o I d de digamos um, queremos anexar esses metadados a ele. E a chave, o nome dos metadados é usar nosso foco de exemplo, palavra-chave. E então o valor disso é, digamos PHP. E então o que isso nos diz é que este post i d a palavra-chave de foco para ele é p PHP. E agora podemos adicionar todos os tipos de registros a isso. Então, temos outro disco aqui. Poderíamos usar a mesma ideia de um. Mas agora temos uma chave diferente, e podemos dizer que esta é a pontuação S e o, e então nós o valor de que é 90. Então agora temos o mesmo post, tem duas partes diferentes de metadados, e nós poderíamos armazenar 15 pedaços de metadados sobre esse post em particular, e isso não está tornando nosso banco de dados mais pesado ou algo assim. É muito modular, e podemos armazenar não. , A pontuação no foco, palavra-chave para número do post com ideia dois e três e quatro e etcetera. Ok, então quando precisamos pegar esses dados, o que podemos fazer é se estamos em um antes, há algumas maneiras que você pode lidar com isso quando você pega quando você está pegando, digamos que alguém visita um bloco individual e você deseja pegar os dados da postagem para exibi-la. Quando você pega esses dados, você pode pegar automaticamente todos os meta post, se quiser. E então o jeito que você faria isso é que você iria. Você iria consultar a tabela meta post e você teria uma cláusula where e que cláusula onde seria onde Post I d é igual e a idéia do post que você está indo para exibir o que iria pegar a partir dos bancos de dados. Todos os registros neste post encontrou uma tabela que tem um post i d. de um ou qualquer que seja o post idéias. E agora você teria todos os metadados que consultaram com os quais você poderia trabalhar e exibir como você deseja em sua página. Você pode fazer assim ou talvez um pouco mais eficiente. Way é qualquer lugar que você quer vê-lo novamente Você está carregando uma página que exibe uma publicação de bloco em qualquer lugar que você deseja exibir um determinado pedaço de metadados você pode apenas qualquer que seja o metadados que você deseja exibir Você pode consultar a tabela meta para que você possa consultar a tabela meta e dizer, Ok, Ok, eu tenho post I d um e médico e você sabe Ah ah, Foco, Foco, palavra-chave. E agora você está apenas perguntando você está desistindo para o Post I d e o Médico E e você está apenas obtendo aquele disco. E então agora você puxa esse registro e mostra onde quiser. Em vez de extrair todos os dados, quer você vá ou não usá-los, basta puxar a única coisa que você precisa. Ela pode lidar com isso de qualquer maneira lá, mas isso torna realmente modular para você ser capaz de puxar esses dados em exibição e assim por diante para que você seja feito uma tabela Então você não tem tabela de objetos. Você tem uma mesa meta. O último tipo de tabela que você tem é uma tabela de relacionamentos e o que a tabela de relacionamentos faz. É essencialmente laços com objetos juntos? Assim, o contexto disso é baseado no aplicativo. Assim, por exemplo, em um CMS você pode colocar um post em uma categoria. É uma coisa muito comum que as pessoas querem fazer. Bem, o jeito que você faz isso é através de relacionamentos. Tabela Ah, em, digamos, uma rede social. Convém tornar um usuário um amigo com outro usuário novamente. Você faz exatamente da mesma maneira com uma tabela de relacionamentos ou qualquer comércio. Ah, aplicação. Você pode querer dizer, Este usuário tem acesso a este produto novamente. O jeito que você faz isso é exatamente o mesmo. É uma mesa de relacionamentos. Então, novamente, o contexto, o relacionamento, a maneira como você armazena no ele é armazenado no banco de dados. Chamo isso de um relacionamento idiota. O banco de dados não sabe o que significa o relacionamento, e você pode adicionar alguns dados a esta tabela para talvez, se você precisar. Teoh ajuda a fornecer mais contexto. Mas, de um modo geral, o banco de dados não sabe. Só sabe que essas duas coisas têm algum tipo de relacionamento. E assim nós criamos uma tabela chamada Categoria Post e em que nós vamos ter isso. O que é chamado de categoria post i D. Então isso não é o Post I. D. Não é a categoria d É realmente o que é, é o relacionamento i d. E isso é apenas útil para se você precisar excluir relacionamentos e assim por diante. É um pouco mais fácil de consultar dessa maneira, mas na verdade não é, ah, 100% necessário ter isso, mas é uma coisa boa de ter. Mas as duas coisas principais que você tem aqui é que você tem uma. Você tem basicamente os dois objetos que você deseja conectar. Você tem o post I D. E a categoria i D. Que faz referência a este i d. Isto eu d chamá-lo do nosso post e da nossa categoria. Então, se quisermos colocar ah post com o i d de um em uma categoria com a idéia de um dos nossos relacionamentos tabela com literalmente nestas duas colunas, você teria post I D. E seria o valor seria um e Categoria D. O valor seria aquele que cria uma relação entre os dois. Se você queria colocar um post com idéia quatro em uma categoria com a idéia cinco. Sua tabela de relacionamentos no Post I D teria quatro como o valor e na categoria. D teria cinco como o valor, e isso cria uma relação entre os dois novamente. Você pode criá-los. Você pode atualizá-los. Você pode realmente lê-los. Você pode excluí-los como qualquer outra tabela. E então é assim que você realmente colocar ah post em uma categoria ou marcar um post com uma determinada tag . Ou adicione um usuário a um produto ou faça uma amizade entre duas pessoas em uma rede social. Está amarrando objetos juntos, e você faz isso através da tabela de relacionamentos. Ok, então isso é Ah, isso é muito. Mas os bancos de dados são super importantes, e é importante entender como nos construir de uma forma modular como esta. Então, para qualquer objeto que você deseja criar, você está falando em geral, vai ter um post e uma tabela meta post. Você não precisa necessariamente tê-los em uma mesa se você não vai armazenar nenhum tipo de metadados. Eu diria que a maioria dos aplicativos à medida que eles crescem, você acabará por ter isso, mas você não precisa necessariamente tê-lo. E então, mas novamente, para cada objeto de um post encontrou uma mesa, geralmente falando, e então para cada tipo de cada dois objetos que você quer Ah, você quer amarrar juntos, você vai ter um relacionamento estável. Então, colocando categorias postagens em uma categoria, você teria outra tabela de navio de Páscoa, Hum, tornando um usuário em particular o autor de um post que ele realmente é um pouco. Há um pouco de espaço de fudge lá porque, como, como, se você trabalha, olhe para WordPress. O autor está na verdade na tabela de objetos, e então eles apenas especificam a idéia do autor e a tabela de objetos. Você poderia fazer isso. Estamos em um caso em que você não vai, , sabe, nesse sentido, faz sentido porque um autor é muito, muito importante. E você está, você sabe, no WordPress você não tem vários autores para um determinado objeto. Então você não está amarrando. Você não está tendo que amarrar Ah um objeto a vários outros objetos como você faria quando você tem um post e você quer colocá-lo em várias categorias, é aí que ele começa a ficar complicado. Então nesse sentido, meio que faz sentido. E é por isso que eu digo que você tem que andar nesta linha tênue, hum, em todas essas coisas. Mas de um modo geral, sempre que você quiser amarrar dois objetos juntos, você terá um relacionamento estável para isso. Certo, então essa é a parte do banco de dados. Agora o outro lado disso é que agora temos o lado do código. Como apoiamos tudo isso e meio que fazer tudo isso funcionar juntos e fazê-lo forma orientada a objetos? Então eu criei aqui. Você verá como esta pasta chamada Nano. Você vai colocar isso no download do código-fonte. Uma outra vez. Advertência. Indo nisto, escrevi isto especificamente para não te dar todas as respostas. Eu quero re enfatizar que isso não é algo que você poderia simplesmente cair e começar a usar. Vai exigir que você entenda, que passe e escreva todas as coisas. Então, novamente, este é um vídeo de desafio. Teoh desafiá-lo a chegar lá fora e realmente escrever este código não apenas usar tipo de o que eu estou lhe dando. Então, Então, este testamento não vai. A única coisa que fará é o que você vê aqui. E então você o que você quer que ele faça, se você quiser usá-lo, você tem que construí-lo no sistema. Certo, conversamos sobre objetos. Falamos sobre armazenar objetos em nossas tabelas de objetos de banco de dados. Falamos sobre encapsulamento em lições anteriores sobre como fazer um objeto laranja em forma de programação. Então, agora, o que parece agora que temos nosso banco de dados configurado? Então eu quero começar aqui, e a primeira coisa que eu quero mostrar a vocês é que para nossos dois objetos que estavam trabalhando principalmente com seu post e categoria, nós temos duas pastas em nossa biblioteca ou pasta lib categoria e post dentro disso. Então temos esses arquivos diferentes e assim você pode ver cada um. Temos post view e post categoria de serviço, categoria categoria e categoria de serviço. Então, novamente, eu não estou construindo isso de uma forma verdadeira da NBC. Quero mostrar-te uma coisa diferente. E isso é algo que eu tinha visto antes e meio que desenvolvi minha própria coisa a partir dele . E eu, na verdade, quero dizer ser honesto, eu realmente gosto disso um pouco, um pouco mais. Faz mais sentido para mim na minha cabeça do que, ah, coisa verdadeira da NBC, mas isso é para cada desenvolvedor para site por conta própria. Mas deixe-me ir em frente e me livrar disso. A maneira como isso funciona é que temos cada um desses arquivos é uma classe, ok? E se formos relacioná-lo com a NBC, essencialmente, temos nossa visão de post que vai lidar com nossos pontos de vista. Isso é quase muito parecido com o que você teria com uma nova configuração da NBC. Temos serviço de correio, que seria muito parecido com o modelo. Então isso vai lidar com todo o nosso tipo de banco de dados que precisamos fazer. Não é consultar o banco de dados diretamente, mas é tudo o que fica no topo da nossa classe de banco de dados para fazer toda a limpeza. Então, pegando todos os posts, atualizando posts. Ah, os principais postos, criando postagens, todo esse tipo de coisa. Tudo o que vai ser nesta classe de serviço post e, em seguida, nossa classe post dot PHP é uma espécie de nosso controlador. Ok, então vai ser a coisa que tipo de direciona o tráfego e certificar-se de que estamos pesquisando as coisas certas e assim por diante com base nos dados que ele recebe. Então, de certa forma, é parecido com uma configuração da NBC. É que a forma como isto é definido é um pouco diferente. E provavelmente a maior coisa é que se eu abrir todos esses arquivos o que nós fizemos foi para que nós tenhamos herdado. Então, se eu olhar, se eu olhar para post dot classe PHP post estende post view se eu olhar em post view, post view estende post service, ok, e, em seguida, post services é por conta própria. Então agora a maneira que a maneira como isso é implementado e a maneira como você pensa sobre isso ou realmente para trás, então eu não quero que isso seja muito confuso, mas eu acho que vai fazer sentido aqui. Então você se lembra de nossas lições de herança que qualquer classe que estende outra classe aquela que faz a extensão é a filha da que está sendo estendida. Então Post View é, na verdade, um filho de serviço de post, e Post é na verdade um filho de vista post. Então, se você olhar para ele serviços de postagem, na verdade, a exibição de postagem pai é o próximo filho, e Post é uma espécie de filho final. No entanto, a maneira como usamos este post acaba porque ele está estendendo a exibição e visualizações estendendo serviço. Ele acaba herdando todos os métodos de vangloriar, serviço e vista. Então este post, esta criança suprema pode chamar qualquer método, e a razão pela qual fazemos isso é apenas para torná-lo um pouco mais fácil. Se viermos até aqui para o nosso Nano, você pode ver que estamos criando duas novas instâncias dessas últimas classes filho para publicação e categoria. Agora podemos correr assim que tivermos este posto em posição. Aed nesta classe nano, podemos executar qualquer método que está disponível para nós no post ou na categoria, em vez de ter que instância e oito vista e, em seguida, instância e serviço. Ao estendê-las, temos acesso a todos os métodos. Imagino que alguém que usa muito a NBC e é um grande proponente da NBC, caiu da cadeira e teve um ataque cardíaco porque isso é bastante caiu da cadeira e teve um ataque cardíaco porque isso é bastanteblasfema. Pelo que percebi do pessoal da NBC que isso não é algo que você queira fazer. Você realmente quer separá-los. Pessoalmente, prefiro desta forma e da forma como faço as coisas, mas isso pode levar a. Se você não for cuidadoso, isso pode levar às coisas um pouco enlameadas e você colocar as coisas porque você sabe que tudo está em, você sabe, última análise disponível através desta classe, você pode não ser tão grande de um defensor sobre o que você coloca em verso serviço o que você coloca em vista. Então você tem que se certificar de que você se mantém organizado e compreensivo nesse sentido. Mas gosto de ter acesso a todo o conjunto de métodos que preciso, , quando quero trabalhar com ele. Então nós fazemos isso tanto para novamente, Post e categoria. Então categorias A mesma categoria estende exibição de categoria exibição de categoria estende serviço de categoria e serviço de categoria é tipo de por conta própria, e então novamente, em serviço, você colocaria todo o seu tipo de lógica de negócios interagindo com sua classe de banco de dados e assim por diante recebendo tudo isso dentro. Ah, e isso é mais uma vez muito parecido com o modelo em vista. Você sabe, este é o lugar onde você estaria entregando todas as suas visualizações e sua exibição e assim por diante, criando seus formulários e exibindo seus formulários. E, em seguida, a categoria era tipo do seu controlador. É, em última análise, teremos as funções que quando qualquer tipo de dados de formulário for enviado , terá todos os manipuladores. E ele vai interagir com o serviço, a fim de atualizar os dados no banco de dados e assim por diante. Ok, então é assim que tudo está meio quebrado. A última coisa que você vai notar é que este implementa serviço, e se olharmos para exibição de categoria, ele se estende e implementa vista. E se olharmos para pós post ver implementa, vista e serviço de serviços de serviços de serviços. Então, ambas as classes de serviço em post e categoria implementam essa interface de serviço , e ambas as classes de exibição em post e categoria implementam essa interface de exibição onde aqueles em que é o que isso é aqui. Então temos serviço e aqui está a nossa interface e vista. Aqui está nossa interface agora, eu só fiz isso para tipo de mostrar como você pode fazer esse tipo de coisa e usar a interface. Você pode não Ah, você sabe, não é necessariamente necessário que você faça isso, mas novamente, esta é uma das maneiras que as pessoas usariam interfaces porque agora, se olharmos para o serviço, por exemplo, criar, ler, atualizar, excluir. Se você não tem esses quatro métodos em sua qualquer uma de suas classes de implementar esta interface, você vai entrar no ar. Então ele meio que lhe dá uma linha cara dentro e estrutura para o qual você pode construir. Ok, então esse é o nosso tipo de aulas aqui. A outra coisa é que, agora , você sabe, estamos começando a meio que implementar todo esse tipo de coisa. É como, Ok, agora temos que começar a lidar com como vamos incluir e exigir e todo esse tipo de coisa. Outra coisa se viermos aqui para Nano Nano é como nossa classe mestre, certo? Ele vai puxar em todas as outras aulas da nossa biblioteca, e na verdade, e na verdade, uma coisa que eu quero mostrar a vocês dois é se nós viermos para o serviço de correio e post view. Você vê, eu tenho nome, espaço, aplicativo, biblioteca de barras e aqui eu tenho nome, barra espacial Ah, nome estados biblioteca ab barra. É o mesmo espaço de nome. Você poderia fazer isso. Você pode fazer o mesmo espaço de nome em vários arquivos. E de fato, se entrarmos em exibição de categoria, é o mesmo espaço de nome. Ok, então nós nomeamos Espaçadas todas essas classes. E a razão é porque eles estavam usando nomes genéricos do Jim para essas categorias de serviço. Então, se houver outros aplicativos, temos esse nome corretamente espaçado, e isso só ajuda. Meio que nos ajuda a organizar mentalmente tudo. E assim todas essas classes categoria Servir categoria serviço. Ah categoria vista categoria post post view Post Service Todos aqueles ar no mesmo tipo ah de espaço de nome. Então, uma vez que chegamos aqui para a nossa turma de Nana Nano, esta é uma espécie de falta de masterclass. Isso meio que reúne tudo. Então eu fiz algumas coisas aqui para você olhar para aqui e ter uma idéia de maneiras diferentes. Você pode usar algumas das coisas que você aprendeu no curso. Por isso, estou a exigir o nosso ficheiro de conflito rapidamente. Se você entrar nesta pasta Conflict e abrir nosso arquivo de conflito, será apenas os detalhes do nosso banco de dados. Eu adicionei neste relatório ar para mostrar todas as áreas Você,é claro, gostaria é claro, de remover isso para produção. Mas este é um padrão. Ah, arquivos de conflito incluíam que também incluíam nossa classe de banco de dados aqui. E se fecharmos estes um pouco se olharmos, temos um banco de dados PHP aqui. Agora, novamente, esta é apenas uma espécie de classe de contêiner em branco. Mas é aqui que você coloca todas as suas coisas de todos os seus bancos de dados, e então eu meio que tenho um pouco configurado, mas isso vai puxar do nosso arquivo de conflito para não coincidir com o que está no nosso arquivo de conflito. Passará para o construtor. E, como eu, você sabe, eu fiz eu não sei quantos tutoriais diferentes e assim por diante em classes de banco de dados, mas novamente, você não precisa usar criar o seu próprio. Você pode usar algo que está lá fora que você quer implementar aqui. Mas o ponto aqui é que ele é completamente auto-contido. Então é coisa própria. Não está integrado em nenhuma das outras classes. E assim as outras classes podem usá-lo em um sentido modular, e isso se torna importante. E então algumas das coisas que vamos começar a ouvir um segundo, mas novamente aqui em Nano estavam apenas exigindo naquele arquivo de banco de dados, e então estamos fazendo nosso registro de carga automática SPL. Então isso torna mais fácil para nós carregar todos os diferentes objetos e coisas que temos em nossa biblioteca. Este carregador automático é praticamente apenas para as coisas da biblioteca, e a razão que é porque temos categoria e posts. Mas em um aplicativo verdadeiro, você provavelmente um usuário tag post categoria. O que quer que esteja lá fora que você possa adicionar nisso, você pode ter 45 objetos diferentes, e para cada um que você vai ter Pope, você vai ter, você sabe, a variação do post. Se tiveres uma vista, vais ter um serviço. Então, se você tem cinco objetos diferentes e você tem três classes diferentes, você acaba com 15 classes. Então, um carregador automático para esse tipo de faz sentido. E então nós estávamos fazendo este registro de carga automática aqui. E o que estamos chamando, no entanto, não é uma função. Na verdade, é um método estático. Então este é um uso de um método estático. Lembre-se, como métodos estáticos são um tipo de ah, com as novas coisas que temos com interfaces com, ah, com interfaces e nomes, rosto e assim por diante. Funções estáticas e métodos estáticos de classe talvez não tenham tanto uso. Mas aqui está um cenário onde eles dio e que é que podemos usá-lo para um método de carregamento automático. Então, em vez de colocar essa função fora de nossa classe, enfraquecer caiu diretamente em nossa classe. Não precisa de nada da nossa turma. Ok, então não há nada que ele recebe tudo que ele precisa de é passado para ele a partir de S p o SPL auto load register para que possamos torná-lo uma função estática enfraquecer referência como este em nossa designação para SPL auto load register. E agora é que vai chamar este método estático. Ele vai passar no nome da classe, assim como antes eu mostrei a você na lição que eu fiz sobre auto load e agora podemos escrever nosso código para fazer o nosso carregamento automático. E, essencialmente, isto é verificar as coisas. Então temos o nosso objecto. Ah, nós temos nosso objeto. Classes são pastas de objetos aqui. Poderíamos colocar poderíamos criar uma pasta de interface e, em seguida, colocar serviço e vista na interface . então Eentãonão precisaríamos desse tipo de declaração aqui. Nós não precisaríamos fazer algumas dessas verificações, mas eu só queria mostrar como você pode usar sua carga automática para, tipo, carregar de maneiras diferentes. Então não precisa ser assim, apenas formato padrão. E então você faz com que sua de estruturade pastas corresponda a ela. Você pode fazer do outro jeito. modo geral, você quer ter algo que é um pouco mais simples e fazer com que sua estrutura de pastas corresponda a ele. Mas, novamente, eu só quero te mostrar isso. Então basicamente o que este código está fazendo é que é tipo do que fizemos antes. Está se despedaçando. Ah, quando estamos na posição oito. Neste momento, não incluímos nenhum desses arquivos nos quais não o exigimos. Então, vai verificar. Uh, ele vai carregar esta carga automática porque ele não pode encontrá-los, e vai passar na classe. O nome vai. O nome da classe é ap bac barra biblioteca posts preto barra invertida estavam quebrando esta string e estamos encontrando que queremos post e que e isso é o que receber como o objeto aqui. E queremos a pasta. Então está na biblioteca. E isso é o que estamos recebendo bem aqui. E então o que estamos fazendo é verificar se a pasta. Então esta parte aqui é a biblioteca. E a razão pela qual eu fiz isso é porque seria possível para você talvez fazer outra pasta Ah, diretamente em Nano e chamá-lo de administrador e ah, ao começar a adicionar coisas lá, poderia haver maneiras diferentes que Você quer fazer isso. Então eu coloquei isso lá. Neste caso, tudo está dentro de nosso arquivo de biblioteca, então isso é um pouco redundante, mas está lá para você ver. Mas estamos checando para ver se estamos acessando algo da biblioteca para pasta. Hum e então nós estamos verificando para ver se nós criamos esta matriz de interfaces. Se o objeto que obtemos como serviço ou vista. Sabemos que é uma interface porque é isso que o é, também. Ah, isso é o que essas duas interfaces são. Seus nomes, serviço e lá chamado View. Então, estamos checando se é, ah, uma interface. E se não é uma interface do que sabemos, é uma dessas pastas de objetos. Então vamos exigir end the you know, o arquivo padrão de objeto para que esta designação aqui fosse carregar, por exemplo, post op PHP. Este seria carregar post view dot PHP e este seria carregar post serviço dot PHP e então ele vai porque nós temos instância, até mesmo insistir de categoria. Ele também vai procurar categoria, e então esta outra instrução basicamente vai carregar são duas interfaces de serviço e ver se ele não está na interface ou se ele está na interface, Se é um serviço ou vista, então nós só vai direto para cima pegar o objeto. Então isso é um pouco que eu não quero entrar muito nas ervas daninhas disso porque não é tão importante quanto você pode pensar. E é ah, não, isso será algo que você talvez mudaria baseado em como você quer fazer as coisas, mas o ponto importante aqui é que eu sou capaz de carregar em um formato onde eu coloquei todas as minhas aulas dentro uma sub-pasta e lib e eu também sou capaz de carregá-lo onde eu colocar ah os arquivos diretamente na pasta live como este. Então, com o seu carregador automático, você pode misturar e combinar e ser capaz de Thio usar condições para descobrir esse tipo de coisa . Talvez não queiras fazer isso porque queres tornar as coisas tão difíceis para ti. Mas ah, é inteiramente possível diio Ok, então com isso dito então agora o resto da nossa classe nano onde nós realmente estamos em posição, comer instâncias de post e categoria isso nos dá isso aqui nos dá acesso a todos dos métodos dentro do nosso post. Assim como falamos sobre como sua estendida Isso nos dá acesso a todos esses métodos dentro de nossa classe Nano agora e então agora temos acesso a todos os nossos outros objetos dentro da classe nano. Você não necessariamente tem que instância oitava facilidade no construtor como este, certo, Porque se você fizer isso, ele vai carregar todas as classes que você tem, e você pode não precisar de todas elas para um solicitante específico ou carregamento de página ou o que quer que seja. Você pode precisar deles apenas em instâncias específicas. Então você poderia carregar seletivamente estes dentro de outros métodos dentro desta classe se você quisesse. Estou novam 12. Próximos passos: Sou honesto que não há mais. Então online.com, tão pouca limpeza para terminar este curso. Se ainda não o fez, certifique-se de ir para a área de aula. Há uma seção de classe para alguns, alguns passos para você percorrer para este curso. Portanto, certifique-se de que está sob a discussão na guia Projetos que você verá no curso. Além disso, se você entrar no meu perfil, certifique-se de me dar um acompanhamento no meu perfil aqui para que você seja notificado quando eu lançar novos cursos. E também tenho um curso de estilo podcast semanal chamado “Let's Talk freelance”. Então, se você gostaria de ter um tipo de acesso a treinamento contínuo sobre freelancing e negócios on-line e assim por diante. Certifique-se de verificar isso. Vamos falar de curso freelance também. E, finalmente, eu tenho um boletim diário de dicas no meu site em John Morris online.com. Se fores para lá, podes inscrever-te na lista de discussão. Você também será colocado no meu próprio, meu próprio aplicativo móvel, ou você terá acesso a mais de 78 horas de conteúdo gratuito no momento desta gravação relacionada ao freelance e assim por diante também. Então, se você está interessado nisso, BD certeza de verificar isso também. Novamente, esse é John Morris Online.com. Tudo bem. Obrigado por ter assistido à aula. Se gostou, agradeço-lhe por si. Deixe uma crítica e nos vemos no próximo curso.