إطار تطبيق ويب بسيط ولكن قابل للتطوير موجه نحو الكائن.
مثال بسيط:
<?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 لفهم مفهومه تماما.
الفئة الفرعية Phapp و Phappview لإضافة طرق للوصول إلى قاعدة البيانات والتدويل وأشياء من هذا القبيل.
من الجيد إعداد طريقة عرض قاعدة تحتوي على طرق شائعة وتستمد وجهات نظرك من ذلك.
إذا كنت تستخدم PDO ، فيمكنك أن ترث وجهات نظرك من 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 كوحدة فرعية أو شجرة فرعية إلى مستودع مشروعك لتتمكن من التحديث بسرعة وسهولة.