في تطوير PHP بشكل عام، عندما يتم خلط كود php ورمز html، يكون من السهل نسبيًا التعامل مع ترقيم الصفحات، ويمكن أيضًا إنشاؤه في شكل دالة. في التطوير الأخير، تم استخدام بنية Pear::DB + Smarty، لذلك فكرت في ترقيم القالب نظرًا لأنه لا يمكن التعامل مع الصفحة مباشرة، فكرت في إنشاء سلسلة ترحيل.
نظرًا لأنه هيكل ثلاثي الطبقات، في شكل مكتبة فئة-->استدعاء PHP-->قالب، تتم معالجة جميع البيانات في مكتبة الفصل، لذلك يتم تنفيذ التحكم في الترحيل في استدعاء PHP، ويقوم القالب بتحليل معقد نتيجة المكالمة. دعونا نلقي نظرة مباشرة على رمز الترحيل في استدعاء PHP الخاص بنا:
-------------------------------------- - ----------------------------------------
<?php
/**
* الملف: Type.php
* الوظيفة: عرض الكتب ضمن الفئات
* المؤلف : هييلورين
**/
// يحتوي على ملفات عامة، بما في ذلك مكتبات الفئات، وما إلى ذلك.
require_once("include.php");
// إنشاء كائن العملية
$Type = new CTypes();
// عدد السجلات في كل صفحة
تعريف ("PAGE_SIZE"، 10)؛
// احصل على المتغيرات المرسلة بواسطة GET
$TypeID = $tid ? $tid : intval($_REQUEST['tid']);
// إجمالي عدد الكتب
$BookTotal = $Type->getBookTotal($TypeID);
/* قلب عرض الترحيل*/
// احصل على العدد الإجمالي للصفحات
$pageCount = ($BookTotal/PAGE_SIZE);
// رقم الصفحة الحالية
إذا (isset($_GET[صفحة]) && !empty($_GET[page])) {
$page = intval($_GET[page]);
} آخر {
صفحة $ = 1؛
}
إذا ($صفحة==1) {
$startNum = 0;
} آخر {
$startNum = ($page-1) * PAGE_SIZE;
}
// إنشاء سلسلة رابط الترحيل
إذا ($page==1 && $pageCount>1) {
$pageStr = "الصفحة السابقة | <a href=/Type.php?tid=".$TypeID."&page=".($page+1).">الصفحة التالية</a>";
} elseif ($page==$pageCount && $pageCount>1) {
$pageStr = "<a href=/Type.php?tid=".$TypeID."&page=".($page-1).">الصفحة السابقة</a> | الصفحة التالية";
} elseif ($page>1 && $page<=$pageCount) {
$pageStr = "<a href=/Type.php?tid=".$TypeID."&page=".($page-1).">الصفحة السابقة</a> |
<a href=/Type.php?tid=".$TypeID."&page=".($page+1).">الصفحة التالية</a>";
} آخر {
$pageStr = "الصفحة السابقة | الصفحة التالية";
}
// احصل على السجل الحالي وفقًا لعدد الصفحات
$allBook = $Type->getBookFromType($TypeID, $start=$startNum, $offset=PAGE_SIZE);
// مهمة متغيرة ذكية
$tpl->assis('BookTotal', $BookTotal);
$tpl->تعيين('allBook', $allBook);
$tpl->sign('pageStr', $pageStr);
$tpl->display('Type.html'
)
;
-------------------------------------------------- ----------------------------------
للحصول على فهم أوضح، إليك وصف مختصر للمحتويات الأساسية لمكتبة الفصل: (الكود غير مكتمل)
-------------------------------------------------- ----------------------------------
<?php
/**
* الملف: Type.class.php
* الوظيفة: فئة معالجة النوع
* www.knowsky.com
* المؤلف : هييلورين
**/
نوع الفئة
{
فار $mDsn;
فار $mTableName;
var $hPearDB
;
نوع الدالة ()
{
//...
}
// احصل على طريقة المقبض لفئة الكمثرى DB
الدالة _getDBClass($fetchMode = DB_FETCHMODE_ASSOC)
{
إذا(!is_object($this->hPearDB)){
$this->hPearDB = DB::connect($this->mDsn);
$this->hPearDB->query("تعيين الأسماء 'utf8'");
$this->hPearDB->setFetchMode($fetchMode);
إذا(DB::IsError($this->hPearDB)){
عودة كاذبة.
}
}
إرجاع $this->hPearDB;
}
// احصل على العدد الإجمالي للكتب
الدالة getBookTotal($TypeId)
{
$db = $this->_getDBClass();
$sql = "اختر COUNT(*) كإجمالي من ...";
$rs = $db->getOne($sql);
إذا (DB::isError($rs))
إرجاع $rs->getMessage();
آخر
إرجاع $rs؛
}
// احصل على جميع الكتب
الدالة getBookFromType($TypeId، $start، $offset)
{
$db = $this->_getDBClass();
$sql = "SELECT * FROM... LIMIT $start,$offset";
$rs = $db->getAll($sql);
إذا (DB::isError($rs))
إرجاع $rs->getMessage();
آخر
إرجاع $rs؛
}
}
?>
-------------------------------------------------- ----------------------------------
أخيرًا، دعونا نلقي نظرة على كيفية معالجة قالب Type.html هذا:
-------------------------------------------------- ----------------------------------
{*أدخل ملف الرأس*}
{تشمل الملف = "Cendar/head.html"}
<div معرف = "الجانب">
<ul>
<li>إجمالي عدد الكتب: {$BookTotal</li>
</ul>
</div>
<div معرف = "كتاب">
<h2 class="cata">المحتوى المحدد للكتاب</h2>
<ul>
{اسم القسم=حلقة الكتاب=$allBook}
<li><a href="show_Book.php?tid={$allBook[Book].id}">{$allBook[Book].title}</a></li>
{قسم آخر}
<li class="warning">لا توجد كتب حاليًا</li>
{/قسم}
</ul>
</div>
{* عرض سلسلة ترقيم الصفحات*}
<div محاذاة = "يمين">
{"GBK"|iconv:"utf-8":$pageStr}
</div>
{*أدخل الملف السفلي*}
{تشمل الملف = "Cendar/foot.html"}
-------------------------------------------------- ----------------------------------
ثم ندرك النقطة الأساسية ونعلم أنه يمكننا التحكم في $pagStr من برنامج PHP ليكون سلسلة الترحيل لدينا، وفي النهاية سيتم استبداله في ملف القالب لتحقيق التأثير.
في هذه المرحلة، أنت تفهم بشكل أساسي كيفية إجراء معالجة الترحيل في القالب. بالطبع، يمكنك أيضًا كتابة وظيفة الترحيل كوظيفة، أو تغليفها في فئة، بحيث يمكن استدعاؤها في كل مكان. هاها~~~
(يرجى عدم إعادة طباعة الكود أعلاه دون إذن)
المؤلف: heiyeluren
التاريخ:2005-8-2