Sunhill Framework هو إطار تطوير تطبيق PHP بسيط وسريع وقوي يمكّنك من تطوير تطبيقات أكثر حداثة باستخدام نمط MVC (عرض - وحدة التحكم).
htaccess.txt إلى .htaccess (مهم)System/Config.php وقم بتحرير إعدادات قاعدة البيانات وذاكرة التخزين المؤقت والاستعدادات.انظر أدناه لمزيد من التفاصيل.
root
├── App
│ ├── Controllers
│ │ ├── Error.php
│ │ └── Home.php
│ ├── Models
│ │ ├── Error.php
│ │ └── Home.php
│ └── Views
│ ├── Error.php
│ └── Home.php
├── Core
│ ├── App.php
│ ├── Controller.php
│ ├── Model.php
│ └── View.php
├── Public
│ ├── cache
│ ├── css
│ ├── img
│ └── js
├── System
│ ├── Config.php
│ ├── SunCache.php
│ ├── SunDB.php
│ └── SunSitemap.php
├── .htaccess
├── index.php
└── init.php
App/Controller : قم بإنشاء وحدات التحكم المخصصة في هذا المجلد.
App/Models : قم بإنشاء النماذج المخصصة في هذا المجلد.
App/Views : قم بإنشاء طرق عرض مخصصة في هذا المجلد.
Core : يحتوي هذا المجلد على التطبيق الرئيسي والنموذج والعرض وملفات وحدة التحكم. جميع ملفات النموذج والعرض ووحدة التحكم المخصصة ترث من هذه. لا تقوم بإجراء تغييرات على هذه الملفات إذا لم تكن بحاجة حقًا.
Public : قم بتحميل جميع ملفاتك المخصصة (CSS ، JS ، IMG ، Bootstrap ، إلخ) في هذا المجلد. سوف تستخدم طرق العرض المخصصة هذه الملفات.
System : يحتوي هذا المجلد على فئات النظام وملفات التكوين. قم بإجراء التغييرات الخاصة بك فقط في ملف التكوين.
افتح ملف System/Config.php وقم بإجراء تغييراتك.
إعدادات قاعدة البيانات:
define ( ' DB_HOST ' , ' localhost ' ); // database host
define ( ' DB_PORT ' , ' 3306 ' ); // database port
define ( ' DB_DBNAME ' , '' ); // database name
define ( ' DB_USERNAME ' , '' ); // database username
define ( ' DB_PASSWORD ' , '' ); // database passwordإعدادات ذاكرة التخزين المؤقت:
$ cacheConfig = [
' cacheDir ' => ' /../Public/cache ' , // cache folder path
' fileExtension ' => ' html ' , // cache file extension
' storageTime ' => 24 * 60 * 60 , // storage time (seconds)
' contentMinify ' => true , // content minification
' showTime ' => true , // show page load time
' sefUrl ' => true // website sef url status
];إعدادات النظام:
define ( ' SYS_PHPERR ' , true ); // php errors (show or hide, true / false)
define ( ' SYS_SYSERR ' , false ); // system errors (shor or hide, true / false)
define ( ' SYS_PGCACHE ' , false ); // page caching (true / false)
define ( ' SYS_CHEXCLUDE ' , []); // excluded pages for page caching (array)
define ( ' SYS_HOMEPAGE ' , ' home ' ); // home page (index, home, main, etc.)
define ( ' SYS_ERRPAGE ' , ' error ' ); // error page (if requested page does not exist, redirect to this page)عينة عنوان URL:
https://www.web_address.com/[controller_name]/[method_name]/[parameters]
استدعاء صفحة (وحدة تحكم):
https://www.sunhillint.com/user
سيتصل هذا العنوان بوحدة تحكم User .
استدعاء صفحة (وحدة تحكم) مع الإجراء (الطريقة):
https://www.sunhillint.com/user/list
سيقوم هذا العنوان باستدعاء وحدة تحكم User وتنفيذ طريقة list .
استدعاء صفحة (وحدة تحكم) مع الإجراء (الطريقة) والمعلمات:
https://www.sunhillint.com/user/update/3
سيتصل هذا العنوان بوحدة تحكم User وتنفيذ طريقة update باستخدام 3 معلمة.
تستجيب وحدات التحكم لإجراءات المستخدم (إرسال النماذج ، والنقر فوق الروابط ، وما إلى ذلك). وحدات التحكم هي فئات تمدد فئة Core Controller.
يتم تخزين وحدات التحكم في مجلد App/Controllers . يتم تضمين عينة من وحدات التحكم في المنزل والخطأ. يجب أن تكون فئات التحكم في مساحة اسم App/Controllers . يمكنك إضافة الدلائل الفرعية لتنظيم وحدات التحكم الخاصة بك ، لذلك عند إضافة مسار لوحدات التحكم هذه ، تحتاج إلى تحديد مساحة الاسم.
عينة من محتوى ملف وحدة التحكم (بدون وصول قاعدة البيانات ، صفحة ثابتة):
public function show () {
require_once ( $ this -> view ); // include view file (with $result content)
}عينة من محتوى ملف وحدة التحكم (مع الوصول إلى قاعدة البيانات ، الصفحة الديناميكية):
public function show () {
if (! empty ( $ this -> model )) { // if this page needs database
$ result = ( $ this -> model )-> show (); // call model class' show method
}
require_once ( $ this -> view ); // include view file (with $result content)
}تحتوي فئات وحدة التحكم على طرق هي الإجراءات. لإنشاء إجراء ، أضف اسم الطريقة في وحدة التحكم واستخدم هذا في عنوان URL (معلمات الطريق).
عينة عنوان URL:
https://www.web_address.com/[controller_name]
يجب أن تحتوي جميع الصفحات على ملف وحدة تحكم ويجب أن تكون طريقة show فيها.
تستخدم المشاهدات لعرض المعلومات. عرض الملفات اذهب في مجلد App/Views . لا ينبغي أن يحدث أي الوصول إلى قاعدة البيانات أو أي شيء من هذا القبيل في ملف العرض.
تمديد Views CoreView Class وإذا كان العرض (الصفحة) يحتاج إلى الوصول إلى قاعدة البيانات ، فسيتم إعادة توجيه قيمك من ملف وحدة التحكم.
نموذج عرض محتوى الملف لسجلات متعددة (داخل علامات HTML):
foreach ( $ result as $ row ) {
echo " ... " ;
}أو (لسجل واحد):
echo $ result [ 0 ][ ' content ' ];يجب أن تحتوي جميع الصفحات على ملف عرض.
تُستخدم النماذج للحصول على البيانات وتخزينها في التطبيق الخاص بك. إنهم لا يعرفون شيئًا عن كيفية تقديم هذه البيانات في وجهات النظر. تمديد النماذج فئة CoreModel واستخدم PDO للوصول إلى قاعدة البيانات (بما في ذلك فئة SUNDB). تم تخزينها في مجلد App/Models .
يجب أن تحتوي جميع الصفحات على ملف نموذج (حتى لو كان فارغًا) ويجب أن تكون طريقة show فيها.
باستخدام فئة SUNDB PDO من خلال النموذج الرئيسي:
$ result = $ this -> query ( ' SELECT * FROM table_name ' ); // send query to the main model
return $ result ; // return the result to the controllerباستخدام فئة SUNDB PDO مباشرة:
$ result = ( $ this -> pdo )-> select ( ' table_name ' )
-> run (); // select all records from the table
return $ result ; // return the result to the controllerيرجى الاطلاع على فئة SUNDB PDO للاستخدام التفصيلي.
يتضمن الإطار نظام تخزين مؤقت للصفحة الخاصة (SunCache Class).
يمكن تنشيط نظام التخزين المؤقت/إلغاء تنشيطه في ملف System/Config.php :
define ( ' SYS_PGCACHE ' , true ); // page caching (true / false) يمكن تعريف الصفحات المستبعدة في ملف System/Config.php :
define ( ' SYS_CHEXCLUDE ' , [ ' home ' , ' error ' ]); // excluded pages for page caching (array) يمكن تغيير إعدادات ذاكرة التخزين المؤقت في ملف System/Config.php :
$ cacheConfig = [
' cacheDir ' => ' /../Public/cache ' , // cache folder path
' fileExtension ' => ' html ' , // cache file extension
' storageTime ' => 24 * 60 * 60 , // storage time (seconds)
' contentMinify ' => true , // content minification
' showTime ' => true , // show page load time
' sefUrl ' => true // website sef url status
];يرجى الاطلاع على فئة Suncache للاستخدام التفصيلي.