✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Usando o padrão de registro no WordPress

7

Eu tive algumas conversas com vários amigos e outros no Twitter sobre a noção de variáveis ​​globais em linguagens de programação. Para aqueles que são novos na programação ou que não sabem por que são ruins:

O uso de variáveis ​​globais torna o software mais difícil de ler e entender. Como qualquer código em qualquer lugar do programa pode alterar o valor da variável a qualquer momento, entender o uso da variável pode implicar em entender uma grande parte do programa.

Isso não quer dizer que eles não tenham seu uso, mas se você estiver interessado em programação orientada a objetos (especialmente em uma configuração do WordPress onde você usará PHP), é importante entender algumas alternativas melhores do que variáveis ​​globais.

Ou seja, existem maneiras de trabalhar com a passagem de dados em seu aplicativo sem a necessidade de variáveis ​​globais. E uma dessas maneiras é o padrão de registro.

O padrão de registro no WordPress

Primeiro, observe que os padrões de projeto transcendem qualquer padrão específico. Desde que uma linguagem ofereça os conceitos de objetos (ou mesmo abstrações), então é possível implementar o padrão.

Mas por que se preocupar em usar isso?

Usando o padrão de registro no WordPress

Foto de Samuel Zeller no Unsplash

Em resumo, ele fornece uma maneira orientada a objetos de passar informações ao redor de seu aplicativo sem a necessidade de variáveis ​​globais. Coisas como contêineres de injeção de dependência também são boas para isso, mas estão além do escopo deste post. Eu também diria que há momentos em que eles podem ser um exagero no contexto de pequenos plugins.

Implementando o padrão

Com isso dito, como podemos implementar o padrão de registro no WordPress e aproveitá-lo em todo o nosso trabalho? Vamos dar uma olhada na estrutura básica do padrão, primeiro:

Observe que sua implementação é bastante simples:

  1. A classe contém uma única matriz como uma propriedade privada.
  2. Os dados são adicionados à matriz com um ID específico.
  3. Os dados podem ser recuperados do padrão com o ID.

Você pode até levar esse padrão específico para o próximo nível se ele aceitar apenas uma classe de um determinado tipo (como um AbstractEvent, por exemplo) e então invocar automaticamente uma função na classe sempre que ela for passada (ou recuperada) do registro.

Mas isso está entrando em uma implementação mais complexa que eu gostaria para este post.

Configurando o Registro

Devido à natureza do sistema de ganchos do WordPress, há uma maneira específica na qual o Registro deve ser configurado e registrado no WordPress.

Digamos que você esteja trabalhando com um plugin. Dentro do arquivo bootstrap do plugin, faça algo assim:

Isso cria o registro e, em seguida, cria um filtro correspondente que podemos usar posteriormente no plugin para recuperar o registro e, portanto, outros objetos que ele mantém.

Usando o Registro

Para adicionar um objeto ao registro, chame a função add e passe um ID exclusivo e uma instância do objeto. Observe que nossa implementação atual descartará todas as instâncias anteriores de um objeto que tenha a mesma chave e a substituirá pelo que passarmos para ele.

A partir daí, você pode recuperar os objetos que armazenou no registro:

E você pode usá-los como oyu faria de qualquer outra maneira. Mas isso evita a necessidade de uso de singletons, variáveis ​​globais ou outras coisas perigosas.

Uma palavra sobre testabilidade

Outra vantagem que encontro com a implementação desse padrão é que ele não apenas permite escrever testes de unidade com mais facilidade, mas também oferece a capacidade de escrever testes nos objetos que ele pode conter.

Com isso, quero dizer que você pode escrever suas classes de forma mais independente do WordPress, separando assim a lógica de domínio do aplicativo principal e tornando-as mais representativas dos dados que devem manter.

Fonte de gravação: tommcfarlin.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação