Ein einfaches, aber skalierbares objektorientiertes Webanwendungs-Framework.
Ein einfaches Beispiel:
<?php
require_once 'Phapp.php';
class Hello extends PhappView
{
public function response()
{
return 'Hello World.';
}
}
$app = new Phapp();
echo $app->process( 'Hello' );
Finden Sie dieses und komplexere Beispiele im Probenzweig.
Die Idee ist, eine Reihe von Ansichtsobjekten zu definieren, die vom Hauptanwendungsobjekt verarbeitet werden.
Jedes Ansichtsobjekt erbt von PhappView, das zwei Hauptmethoden enthält, die Sie überschreiben sollten. Der erste ist Request ():
public function request()
{
if( !$_REQUEST['order_number'] )
return 'Home';
return null;
}
Der Zweck dieser Methode besteht darin, die Anfrage zu behandeln und bei Bedarf einen Namen einer anderen Ansicht zurückzugeben, die die Übernahme übernehmen sollte.
Die erste Ansicht, die NULL zurücksetzt, wird die Response () -Methode aufgerufen, um auf die Anfrage zu antworten:
public function response()
{
return '<h1>Hello</h1>';
}
Hier ist eine kleine Grafik, die zeigt, wie alles zusammen funktioniert:
+----------------------------+
| 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 ist sehr minimal und sehr klein. Schauen Sie sich nur Phapp.php an, um das Konzept vollständig zu verstehen.
Unterklasse PHAPP und PHAPPVIEW addieren Methoden für den Zugriff auf Datenbank, Internationalisierung und solche Sachen.
Es ist eine gute Idee, eine Basisansicht einzurichten, die gemeinsame Methoden enthält und Ihre Ansichten daraus ableiten.
Wenn Sie PDOs verwenden, können Sie Ihre Ansichten von Phapppdoview erben und query () wie folgt aufrufen:
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>";
}
}
Es ist wahrscheinlich am besten, PHAPP als Submodul oder Substree zum Repository Ihres Projekts hinzuzufügen, um schnell und einfach aktualisieren zu können.