Ficar preso ao XHP

O que é XHP?

XHP é uma extensão PHP que aumenta a sintaxe da linguagem de forma que fragmentos de documentos XML se tornem expressões PHP válidas. Isso permite que você use o PHP como um mecanismo de modelagem mais rígido e oferece uma implementação muito mais direta de componentes reutilizáveis. O XHP foi desenvolvido internamente no Facebook e de código aberto em 2010.

Leia mais aqui: https://github.com/facebook/xhp/

Por que devo usar o XHP?

O XHP é dinâmico .
O XHP é seguro .
XHP força a validade .
O XHP torna o desenvolvimento simples .

O XHP escapa automaticamente todos os dados de entrada, tornando-o quase à prova de falhas de vulnerabilidades XSS. Como o XHP aumenta a sintaxe da linguagem, você não precisa limpar manualmente nenhuma entrada que passe pelo XHP. Legal, hein?

O XHP também é dinâmico e contém objetos reutilizáveis. Isso significa que não precisamos definir constantemente o mesmo código HTML (pense em definir uma variável em PHP).

Por último, o XHP força a marcação HTML válida em tempo de compilação (e falhará completamente se for inválida). A marcação inválida é coisa do passado com o XHP.

Chega de fatos! Como faço para instalar?

O XHP possui vários requisitos, sendo um deles uma variante do Linux. É possível executar o XHP em um ambiente Windows, mas não há suporte / lançamento oficial para ele. Uma DLL não oficial desenvolvida para PHP 5.3 pode ser encontrada aqui: http://code.google.com/p/pecl-win/downloads/detail?name=php_xhp-1.3.9.dll

O XHP também tem as seguintes dependências:

PHP 5.2.x ou 5.3.x
gcc 4.0 ou superior
g ++ 4.0 ou superior
flex 2.5.35 ou superior
Bison 2.3 ou superior
re2c 0.13.5 ou superior

Todos eles podem ser instalados por meio de um gerenciador de pacotes como yum ou apt. Eu também recomendo usar o Apache com XHP. Eu não testei com NGINX ou lighttpd, mas houve relatos de problemas com IIS, então aqueles que estão usando XHP com Windows devem ter cuidado.

Embora não esteja documentado na documentação oficial do XHP, você deve ter o php-devel (derivados RHEL) ou php-dev (derivados Debian) instalado para executar o phpize como observei abaixo. Estou baixando o código-fonte diretamente do Github, então pode ser sábio instalar o git também.

Para instalar o XHP, você deve compilá-lo a partir do código-fonte. Os comandos a seguir são para derivados RHEL (CentOS, por exemplo). Para derivados Debian ou outras distros, consulte o manual do sistema.

cd /path/to/xhp/parent/
git clone git
://github.com/facebook/xhp.git
cd xhp

phpize

./configure
make

make test

make install

Se tudo correu bem, o XHP deve agora ser instalado no seu sistema.

Eu não explodi nada. Qual é o próximo?

Em seguida, você deve incluir a biblioteca XHP em seu projeto. A biblioteca XHP está localizada em / path / to / xhp / php-lib /. Agora, você pode fazer isso de duas maneiras.

1. Adicione o caminho para init.php à sua diretiva de arquivo auto- anexar em php.ini.

Por exemplo:

arquivo auto- anexado = /path/to/xhp/php-lib/init.php

2. Inclua diretamente init.php em seu projeto.

Por exemplo:

require_once ‘../xhp/php-lib/init.php’;

Eu prefiro o primeiro porque é definido e esquece.

Em seguida, você terá que testar se funciona ou não (o que, se você está seguindo isso ao pé da letra, deve). Você pode fazer isso adicionando o seguinte a uma visualização ou arquivo de modelo do seu projeto.

echo <span>Hello, World!</span>;

Visualize o projeto em um navegador da web. A saída deve ser na página “Hello, World!”. Se você receber uma página em branco ou um erro de sintaxe, volte e verifique se o XHP foi incluído com êxito. Provavelmente, você perdeu uma etapa ou cometeu um erro.

Funciona! Para onde eu vou daqui?

Aqui vem a parte divertida. O desenvolvimento real.

Um modelo XHP típico seria mais ou menos assim:

<?php

$title
= 'My Project';

$head
=
<head>
<meta charset="utf-8" />
<title>{$title}</title>
</head>;

$content
=
<x:frag>
Welcome to my project!
</x:frag>;

$body
=
<body>
{$content}
</body>;

echo

<x:doctype>
<html>
{$head}
{$body}
</html>
</x:doctype>;
?>

Isso simplesmente resultaria:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>My Project</title>
</head>
<body> Welcome to my project! </body>
</html>

Se isso parece russo para você, não se preocupe, explicarei cada seção.

Em primeiro lugar, você notará <title> {$ title} </title>. Agora, no PHP normal, isso geraria a variável $ title. O XHP funciona de maneira semelhante, mas de uma maneira um pouco mais complexa. Em vez de $ title ser uma variável, ele está sendo interpretado como uma expressão PHP completa.

Isso permite que você faça pequenas coisas divertidas, como esta:

Copyright © {date('Y')} My Project

Você provavelmente também estará olhando para <x: frag> e pensando ‘Que diabos é isso ?!’. Na verdade, é uma parte muito importante do modelo. Pense nisso como uma tag <div> invisível. Diz ao XHP onde o fragmento de código começa e termina. Isso não é necessário para as tags <head> e <body>, pois ambas dizem ao XHP. Isso também é verdadeiro para qualquer outra tag, mas este método é mais limpo do que ter tags <div> e <span> aleatórias coladas em todos os lugares.

Finalmente, repetimos o modelo. A parte final do código é autoexplicativa. Para aqueles que não têm certeza do que o <x: doctype> faz, ele simplesmente adiciona um tipo de documento HTML ao topo da página (como o XHP não pode lidar com pontos de exclamação). Por padrão, é o doctype HTML5, mas isso pode ser alterado em html.php no diretório php-lib.

Isso é o máximo que irei ao ficar preso ao XHP. Para códigos e soluções mais complexos, consulte: https://github.com/facebook/xhp/wiki

Feliz hacking.