Un marco de aplicación web simple pero escalable orientado a objetos.
Un ejemplo simple:
<?php
require_once 'Phapp.php';
class Hello extends PhappView
{
public function response()
{
return 'Hello World.';
}
}
$app = new Phapp();
echo $app->process( 'Hello' );
Encuentre esto y ejemplos más complejos en la rama de muestras.
La idea es definir un conjunto de objetos de vista que se procesen por el objeto de aplicación principal.
Cada objeto de vista hereda de PhappView, que tiene dos métodos principales que debe sobrescribir. El primero es la solicitud ():
public function request()
{
if( !$_REQUEST['order_number'] )
return 'Home';
return null;
}
El propósito de este método es manejar la solicitud y, si es necesario, devolver un nombre de otra vista que debe hacerse cargo.
La primera vista que devuelve NULL obtendrá su método Respuesta () llamado para responder a la solicitud:
public function response()
{
return '<h1>Hello</h1>';
}
Aquí hay un pequeño gráfico que muestra cómo todo funciona en conjunto:
+----------------------------+
| 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 es muy mínimo y muy pequeño. Solo eche un vistazo a phapp.php para comprender completamente su concepto.
Subclase Phapp y PhappView para agregar métodos para el acceso a la base de datos, la internacionalización y cosas así.
Es una buena idea configurar una vista base que contiene métodos comunes y derivar sus puntos de vista a partir de eso.
Si está utilizando PDO, puede heredar sus puntos de vista desde Phapppdoview y llamar a la consulta () así:
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>";
}
}
Probablemente sea mejor agregar phapp como submódulo o subárbol al repositorio de su proyecto para poder actualizar rápido y fácilmente.