Uma estrutura de aplicativos da Web simples, orientada para objetos.
Um exemplo simples:
<?php
require_once 'Phapp.php';
class Hello extends PhappView
{
public function response()
{
return 'Hello World.';
}
}
$app = new Phapp();
echo $app->process( 'Hello' );
Encontre este e exemplos mais complexos no ramo de amostras.
A idéia é definir um conjunto de objetos de visão que são processados pelo objeto de aplicativo principal.
Todo objeto de exibição herda do PHAPPVIEW, que possui dois métodos principais que você deve substituir. O primeiro é solicitação ():
public function request()
{
if( !$_REQUEST['order_number'] )
return 'Home';
return null;
}
O objetivo deste método é lidar com a solicitação e, se necessário, retornar um nome de outra visão que deve assumir o controle.
A primeira visão que retorna NULL receberá seu método de resposta () chamado para responder à solicitação:
public function response()
{
return '<h1>Hello</h1>';
}
Aqui está um pequeno gráfico que mostra como tudo funciona juntos:
+----------------------------+
| Name of a PhappView object | <-------------------------+
+----------------------------+ |
| |
| |
+-- Phapp ------|-------+ |
| | | |
| V | |
| +------------------------+ +-- PhappView ---------+ |
| | Construct object | ------> | | |
| +------------------------+ | Object derived | |
| | | | from PhappView | |
| V | | | |
| +------------------------+ +-- request() ---------+ |
| | Call request() on | | | |
| | that object | ------> | Determine if | |
| +------------------------+ | this object | |
| | | can handle | |
| +------------------------+ yes? | this request | no? |
| | request() returned | <------ | | -----+
| | null | +-- response() --------+
| | so call response() | ------> | |
| | to get the output | <------ | Generate output for |
| +------------------------+ html | this request |
| | | | |
+---------------|-------+ +----------------------+
|
V
+----------+
| Web page |
+----------+
Phapp é muito mínimo e muito pequeno. Apenas dê uma olhada no phapp.php para entender completamente seu conceito.
Subclasse PHAPP e PHAPPVIEW para adicionar métodos para acesso à base de dados, internacionalização e coisas assim.
É uma boa ideia configurar uma visualização básica que contém métodos comuns e derivam suas opiniões disso.
Se você estiver usando o PDO's, poderá herdar suas opiniões do PHAPPPDOVIEW e Call Query () como este:
if( ($result = $this->query(
"SELECT
first,
last
FROM members
WHERE last_login = ?
ORDER BY last",
$lastLogin )) )
{
while( ($row = $result->fetch()) )
{
$contents .= "<li>{$row['first']} {$row['last']}</li>";
}
}
Provavelmente, é melhor adicionar o PHAPP como submódulo ou subárvore ao repositório do seu projeto para poder atualizar de maneira rápida e fácil.