João Paulo Figueira

Web Development

Desenvolvimento de plugins WordPress ‘PSR compliant’

Share on FacebookTweet about this on TwitterShare on Google+Pin on PinterestShare on LinkedIn

O que é o PSR?

PSR significa PHP Standard Recommendation.

Para que serve o PSR?

PSR tenta providenciar uniformidade na programação PHP. Em vez de cada developer ou framework ter as suas próprias convenções, ao aderir ao PSR, existe uma base universal, um standard, o que torna o código agnóstico à framework e com o bónus de ser mais legível.

O grupo que mantém o conjunto de recomendações é o ‘PHP Framework Interop Group’, ou PHP-FIG – http://www.php-fig.org/.

O código que vamos fazer tanto irá funcionar como plugin wordpress, como noutro qualquer projecto PHP, incluíndo frameworks como Laravel ou Symfony.

Estrutura básica

Vamos começar pelo princípio: fazer a estrutura das pastas.

Em wp-content/plugins, vamos criar a pasta que irá conter o plugin, neste caso, ‘temperature’ é um nome apropriado.

Dentro de wp-content/plugins/temperature, vamos criar 2 pastas, ‘src’ e ‘tests’.

O que vamos querer fazer a seguir, ainda antes de começar a escrever código, é uma maneira de termos autoloading, e para isso, vamos usar PSR-4: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-examples.md

De acordo com as instruções, criamos um ficheiro na raiz do projecto – wp-content/plugins/temperature, e colamos o seguinte código:

Podemos dar o nome que quisermos ao ficheiro, mas ‘autoload.php’ é o standard. Destaco que a única alteração específica ao nosso projecto é o namespace, que ficou definido na variável  $prefix .

O programa

Dentro da pasta ‘src’, vamos criar o nosso programa, que neste exemplo será o mínimo possível, pouco mais que um ‘hello world’.

Criamos então o ficheiro ‘Temperature.php’. O nome do ficheiro deve ser o da class dentro desse ficheiro, em CamelCase.

Finalmente, o plugin

Até agora tudo o que temos é um programa PHP. Vamos então fazer a parte do código específica ao WordPress.

Na raiz do nosso projecto, em wp-content/plugins/temperature, criamos o ficheiro ‘wp-plugin.php’. O nome do ficheiro não é importante, escolhi esse nome por ser descritivo.

Como usar o plugin

O plugin tem de ser activado no backoffice do WordPress, na área dos plugins.

Depois disso, basta colocar dentro de um  artigo o seguinte ‘shortcode':  [temperature country="pt" city="lisbon"].

Código completo

O código completo deste artigo está disponível em: https://github.com/joaopfigueira/Wordpress-Temperature.

Como Passar variáveis do Controller para a View em Laravel 4 – Parte 2

Share on FacebookTweet about this on TwitterShare on Google+Pin on PinterestShare on LinkedIn

Este post é a continuação da primeira parte, onde vimos algumas maneiras de passar variáveis de um Controller para uma View, mas estávamos com um pequeno problema: o nosso return, onde a View era chamada estava a tornar-se muito comprido pois na mesma linha todas as variáveis a passar à View eram declaradas. Neste post vamos à procura de melhor solução.

Na busca de melhorar o nosso código, vamos dar mais um passo no emagrecimento da nossa linha de return. Para isso vamos usar uma função nativa do PHP chamada compact(). Só o nome já nos faz acreditar que estamos no caminho certo.

Vamos substituir a nossa linha de return por esta:

 

Ficando o nosso controller com este aspeto:

Podemos ver que o compact() nos poupou a declaração das keys, na array que é passada à View. Estamos no bom caminho.

Contudo…

Há um problema. Quando se cria Métodos muito longos nos Controllers, facilmente perdemos o rasto às variáveis que queremos passar à View. E ainda mais se voltarmos ao nosso código meses mais tarde. Comentar o código ajuda e é essencial, mas mesmo assim, o ideal era algo que nos pudesse facilitar. Como podemos nós alterar o nosso código para atingir esse efeito?

Para isso vamos ter de analisar melhor o que é uma View:

dd() é uma função do Laravel que estamos a usar para efeito de Debug e ver o que se passa ‘debaixo do capot’.

E o que podemos ver é que uma View é um objecto interminável e incompreensivel mas o que quero que retenham é que se trata de um objecto.

Tratando-se de um objecto, e se simplesmente formos adicionando as nossas variáveis ao objeto à medida que elas vão sendo declaradas? Vamos então tentar essa abordagem:

Neste exemplo, a View, sendo um objecto, é colocada numa variável, chamada convenientemente de ‘view’, ‘várias variáveis são inseridas no objecto como Propriedades e no fim basta-nos fazer um return do objecto view.

Assim se conclui esta pequena série sobre Views e Controllers em Laravel. Espero que vos seja útil e continuem a programar.

Como Passar variáveis do Controller para a View em Laravel 4 – Parte 1

Share on FacebookTweet about this on TwitterShare on Google+Pin on PinterestShare on LinkedIn

Existem muitas maneiras de passar variáveis de um Controller para uma View. Todas elas estão correctas, e são alternativas válidas, mas conhecer várias dessas maneiras pode-nos dar mais flexibilidade para organizarmos o nosso projecto.

É mais uma questão de sintaxe que de funcionalidade, mas quando estamos a programar, queremos que o nosso código seja bonito e de boa leitura.

Então, em primeiro lugar, vamos criar uma View.

Como reparam, estamos a usar o sistema Blade, que é o sistema de templates nativo do Laravel para criar uma página básica que nos vai mostrar o nome, idade e a ocupação de uma alguém.

Vamos então criar o nosso Controller. A única coisa que precisamos é de criar as variáveis e mostrar a nossa View.

O código acima é muito directo, não há muito para explicar, mas podemos ver que chamámos ao nosso Controller ‘VariaveisController’ e à função que vai chamar a View, ‘getVariaveis’. Criámos algumas variáveis e passamos essas variáveis à View usando o método ‘->with’.

Reparem que estou a chamar a View ‘variaveis.blade.php’, mas apenas escrevi ‘variaveis’. Isto é porque o Laravel é esperto o suficiente para saber que as Views estão dentro da pasta ‘app/views’ e têm a terminação de ‘.php’ ou ‘.blade.php’ no caso de estarmos a usar o sistema de templates, que é o nosso caso. Boa forma de simplificar o código.

Acho que agora está na hora de vermos o resultado do nosso trabalho. Para isso vamos criar uma route para o nosso Controller e método:

Agora podemos dirigir o browser para ‘http://localhost/public/variaveis’, ou onde colocámos a instalação do Laravel, e lá está. Parece que estamos a criar uma espécie de CV para o Han Solo. A titulo de curiosidade, Harison Ford tinha 35 anos quando o primeiro Star Wars estreou, em 1977.

Esta forma de passar variáveis à View é perfeitamente funcional e pode ser usada, mas creio que podem ver logo qual o problema. Se tivermos de passar muitas variáveis, o nosso pobre  return vai ter dezenas de parâmetros. Funciona, mas até doi na vista.

Existe outra maneira que nos pode poupar alguns caracteres, mas é basicamente a mesma coisa:

o código completo:

Bom, já nos vimos livres do ‘->with’, mas mesmo assim, acho que podemos fazer melhor, para 3 variáveis até serve, mas se em vez de 3 forem umas 50, o nosso código fica muito feio.

Acho que vamos ter de pensar noutra maneira.

No próximo post vamos ver uma forma alternativa de colocar as nossas variáveis na View e ajudar o Han Solo a completar o seu CV.