กรอบแอปพลิเคชันเว็บแอปพลิเคชันที่เน้นวัตถุที่ปรับขนาดได้
ตัวอย่างง่ายๆ:
<?php
require_once 'Phapp.php';
class Hello extends PhappView
{
public function response()
{
return 'Hello World.';
}
}
$app = new Phapp();
echo $app->process( 'Hello' );
ค้นหาตัวอย่างนี้และซับซ้อนมากขึ้นในสาขาตัวอย่าง
แนวคิดคือการกำหนดชุดวัตถุมุมมองที่ได้รับการประมวลผลโดยวัตถุแอปพลิเคชันหลัก
ทุกมุมมองวัตถุสืบทอดมาจาก phappview ซึ่งมีสองวิธีหลักที่คุณควรเขียนทับ ข้อแรกคือคำขอ ():
public function request()
{
if( !$_REQUEST['order_number'] )
return 'Home';
return null;
}
วัตถุประสงค์ของวิธีนี้คือการจัดการคำขอและหากจำเป็นให้ส่งกลับชื่อของมุมมองอื่นที่ควรเข้าครอบครอง
มุมมองแรกที่ส่งคืน null จะได้รับวิธีการตอบสนอง () ที่เรียกว่าเพื่อตอบสนองต่อคำขอ:
public function response()
{
return '<h1>Hello</h1>';
}
นี่คือกราฟเล็ก ๆ ที่แสดงให้เห็นว่าทุกอย่างทำงานร่วมกันได้อย่างไร:
+----------------------------+
| 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 มีน้อยมากและเล็กมาก เพียงแค่ดูที่ phapp.php เพื่อทำความเข้าใจแนวคิดอย่างเต็มที่
subclass phapp และ phappview เพื่อเพิ่มวิธีการสำหรับการเข้าถึงฐานข้อมูลความเป็นสากลและสิ่งต่าง ๆ เช่นนั้น
เป็นความคิดที่ดีที่จะตั้งค่ามุมมองพื้นฐานซึ่งมีวิธีการทั่วไปและได้รับมุมมองของคุณจากสิ่งนั้น
หากคุณใช้ PDO's คุณอาจสืบทอดมุมมองของคุณจาก phapppdoview และ call query () เช่นนี้:
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>";
}
}
อาจเป็นการดีที่สุดที่จะเพิ่ม phapp เป็น submodule หรือทรีย่อยลงในที่เก็บโครงการของคุณเพื่อให้สามารถอัปเดตได้อย่างรวดเร็วและง่ายดาย