#phpchina开户#
لطالما كان يُنظر إلى Smarty على أنه شيء زائد عن الحاجة، وأعتقد أن الأشخاص الذين يعتقدون أن Smarty زائد عن الحاجة هم زائدون عن الحاجة.... دعونا لا نتحدث عن هذا بعد الآن. سأعلمك اليوم كيفية كتابة محرك قالب حتى يتمكن الجميع من كتابة محرك قالب خاص بهم بعد قراءة هذه المقالة، سيكون فهمك لـ Smarty أفضل. يُطلق على محرك القوالب الخاص بي اسم Stupid (أي "غبي")، وأنا لا أحب الأشياء شديدة الذكاء!
يتكون محرك القالب الغبي من 3 ملفات، وهم: غبي.class.php، غبي_parser.class.php، غبي_debugger.class.php.
تتمثل مهمة Stupid.class.php في تعيين المتغيرات ومسارات القالب ووظائف العرض، بينما يتم استخدام Stupid_parser.class.php لتجميع ملفات القالب، ويتم استخدام Stupid_debugger.class.php لتصحيح الأخطاء.
حسنًا، دعنا نكتب غبي.class.php الآن.
1. قم بإنشاء ملف PHP جديد باسم: Stupid.class.php.
يُطلق على فئتنا اسم Stupid، فلنصمم متغيرات الأعضاء أولاً.
تتضمن متغيرات الأعضاء: $_tpl_vars، $_tpl_file، $_parser، $_debugger؛
$_tpl_vars: يستخدم لحفظ متغيرات القالب؛
$_tpl_file: يُستخدم لحفظ اسم ملف القالب؛
$_parser: الكائن الذي يحفظ كائن StupidParser هو الكائن المترجم؛
$_debugger: ما يحفظ كائن StupidDebug هو كائن التصحيح؛
تم تعريف ثوابتين أدناه، يتم استخدامهما لتخزين مجلد القالب ومجلد الترجمة:
تعريف('TPL_DIR', './templates/');
تحديد('TPL_C_DIR', './templates_c/');بدء
البرمجة>>>
<?php
تعريف('TPL_DIR', './templates/');
تعريف('TPL_C_DIR', './templates_c/')
;
خاص $_tpl_vars;
خاص $_tpl_file;
خاص $_parser;
خاص $_debugger؛
}
?>
ابدأ في كتابة مُنشئ>>>
public function Stupid() {
إذا (!is_dir(TPL_DIR) || !is_dir(TPL_C_DIR)) {
خروج ("خطأ: يرجى ضبط مجلد القالب ومجلد الترجمة بشكل صحيح")؛
}
}
في المُنشئ، نحدد ما إذا تم تعيين مسار القالب ومسار الترجمة بشكل صحيح.
تصميم أساليبنا يحتوي بشكل أساسي على الطرق التالية:
تعيين ()، set_tpl_dir ()، set_parsed_dir ()، عرض ()، تصحيح ().
طريقة التعيين ():
الغرض من sign() هو تعيين متغيرات القالب كما يلي >>>
public function sign($var, $value) {.
إذا (isset($var) && تقليم($var) != '') {
$this->_tpl_vars[$var] = $value;
عودة صحيحة؛
} آخر {
خروج ("خطأ: يرجى تعيين اسم المتغير")؛
}
}
نحدد أولاً ما إذا كان المستخدم قد قام بتعيين اسم المتغير، استخدم isset($var) && Trim($var) != '' لتحديد، Trim($var) != '' يمنع المستخدم من تعيين اسم المتغير بمسافات إذا كان المتغير صحيحًا، فسنحفظه في
طريقة العرض ()
لمتغير العضو
طريقة العرض () هي الطريقة الأكثر أهمية في فئة Stupid، وهي تستخدم لعرض واكتشاف ما إذا كان القالب قد تم تحديثه، فسيتم تجميعه مرة أخرى، وإذا لم يتم تحديثه، فسيتم تجميع الملف الأصلي سيتم استخدام
الكود كما يلي >>>
عرض الوظيفة العامة( $tpl_file) {
$template_file = TPL_DIR.$tpl_file;
إذا (! file_exists($template_file)) {
خروج ("خطأ: ملف القالب غير موجود")؛
}
$parsed_file = TPL_C_DIR.md5($tpl_file).'.php';
إذا (!file_exists($parsed_file) || filemtime($parsed_file) < filemtime($template_file)) {
require_once './stupid_parser.class.php';
$this->_parser = new StupidParser();
$this->_parser->compile($tpl_file);
}
تضمين $parsed_file؛
}
تعتمد هذه الطريقة على العبارة !file_exists($parsed_file)||filemtime($parsed_file)< filemtime($template_file) لتحديد ما إذا كان قد تم تجميعه وما إذا كان ملف القالب قد تم تحديثه إذا لم يتم تجميعه أم لا تم تحديث ملف القالب، ويجب إعادة تجميعه. سوف نقدم غبي_parser.class.php، وننشئ كائن StupidParser، ونقوم بتجميع ملف القالب هو ملف PHP
عادي
طريقة Debugg() بسيطة نسبيًا، وهي تقديم ملف غبي_debugger.class.php وإنشاء كائن StupidDebuger واستدعاء طريقة البدء لـ StupidDebuger لتصحيح الأخطاء،
كما يلي >>>
تصحيح أخطاء الوظيفة العامة ($tpl_file ) {
إذا (include_once("stupid_debugger.class.php")) {
$this->_debugger = new StupidDebugger(TPL_DIR.$tpl_file);
$this->_debugger->start();
} آخر {
خروج ("خطأ: ملف فئة المصحح غير موجود")؛
}
}
عند هذه النقطة، انتهى فصلنا الغبي! في المرة القادمة، سأقدم كتابة فصل StupidParser. يرجى الاستمرار في الدعم، إذا كان لديك أي تعليقات أو اقتراحات، يمكنك تقديم
العرض الكامل:
<?php
تعريف('TPL_DIR', './templates/');
تعريف('TPL_C_DIR', './templates_c/');
فئة غبية {
خاص $_tpl_vars;
خاص $_tpl_file;
خاص $_parser;
$_debug خاصة
Stupid() {;
إذا (!is_dir(TPL_DIR) || !is_dir(TPL_C_DIR)) {
خروج ("خطأ: يرجى ضبط مجلد القالب ومجلد الترجمة بشكل صحيح")؛
}
}
تعيين الوظيفة العامة($var, $value) {
إذا (isset($var) && تقليم($var) != '') {
$this->_tpl_vars[$var] = $value;
عودة صحيحة؛
} آخر {
خروج ("خطأ: يرجى تعيين اسم المتغير")؛
}
}
عرض الوظيفة العامة($tpl_file) {
$template_file = TPL_DIR.$tpl_file;
إذا (! file_exists($template_file)) {
خروج ("خطأ: ملف القالب غير موجود")؛
}
$parsed_file = TPL_C_DIR.md5($tpl_file).'.php';
إذا (!file_exists($parsed_file) || filemtime($parsed_file) < filemtime($template_file)) {
require_once './stupid_parser.class.php';
$this->_parser = new StupidParser();
$this->_parser->compile($tpl_file);
}
تضمين $parsed_file؛
}
وظيفة تصحيح الأخطاء($tpl_file) {
إذا (include_once("stupid_debugger.class.php")) {
$this->_debugger = new StupidDebugger($this->_template_dir .$tpl_file);
$this->_debugger->start();
} آخر {
خروج ("خطأ: ملف فئة المصحح غير موجود")؛
}
}
}
?>