Sunhill Framework เป็นเฟรมเวิร์กการพัฒนาแอพ PHP ที่ง่ายรวดเร็วและทรงพลังซึ่งช่วยให้คุณสามารถพัฒนาแอพพลิเคชั่นที่ทันสมัยมากขึ้นโดยใช้รูปแบบ MVC (Model - View - Controller)
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 ไม่มีการเข้าถึงฐานข้อมูลหรืออะไรทำนองนั้นที่ควรเกิดขึ้นในไฟล์มุมมอง
มุมมองขยายคลาส CoreView และหากมุมมองของคุณ (หน้า) ต้องการการเข้าถึงฐานข้อมูลค่าของคุณจะถูกส่งต่อจากไฟล์คอนโทรลเลอร์
ตัวอย่างมุมมองไฟล์ไฟล์สำหรับหลายระเบียน (ภายในแท็ก 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)
ระบบแคชสามารถเปิดใช้งาน/ปิดการใช้งานในไฟล์ 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 สำหรับการใช้อย่างละเอียด