วิธีที่เร็วที่สุดในการสร้างเว็บไซต์ง่ายๆโดยใช้ PHP!
การติดตั้ง
เกี่ยวกับ velox
สถาปัตยกรรม
การกำหนดค่า
ชั้นเรียน
ฟังก์ชั่น
คำสั่ง
ธีม
ขยาย Velox
MVC
การทำเทมเพลต
การรับรองความถูกต้อง
การเปลี่ยนแปลง
เอกสาร
ถ้าคุณชอบโครงการนี้และต้องการสนับสนุนการพัฒนาของมันการให้มันจะได้รับการชื่นชม!

ตรวจสอบ การสาธิต หรือเล่นกับ Repl
คุณรู้สึกอยากอ่านไหม? ตรวจสอบ API เต็มรูปแบบบนเว็บไซต์เอกสารบน marwanalsoltany.github.io/velox
composer create-project marwanalsoltany/velox my-velox-app หมายเหตุ: คุณอาจต้องเพิ่ม --stability=dev ขึ้นอยู่กับรุ่น/สาขา คุณอาจต้องการเพิ่ม --no-dev Flag เพื่อไม่ติดตั้งการพัฒนาการพัฒนา
git clone https://github.com/MarwanAlsoltany/velox.git my-velox-appความจริง: หากคุณไม่ต้องการใช้แพ็คเกจบุคคลที่สามอื่น ๆ การติดตั้ง velox โดยใช้ Git นั้นเพียงพอแล้ว
ดาวน์โหลด velox เป็น .zip หรือ .tar.gz และแยกออกในไดเรกทอรีเว็บเซิร์ฟเวอร์ของคุณ
คำแนะนำ: หากคุณต้องการทดสอบ Velox อย่างรวดเร็วและคุณไม่มีเว็บเซิร์ฟเวอร์ให้ใช้วิธีการติดตั้งใด ๆ และเรียกใช้ php bin/app-serve จากภายใน Velox Directory คำสั่งนี้จะหมุนเว็บเซิร์ฟเวอร์การพัฒนาบน localhost:8000 (โปรดทราบว่าคุณต้องติดตั้ง PHP อย่างน้อยในระบบของคุณ)
Velox เป็นงานไมโครเฟรมที่มีน้ำหนักเบาซึ่งทำให้การสร้างเว็บไซต์ง่าย ๆ โดยใช้ PHP Joyful ช่วยให้คุณสร้างเว็บไซต์ที่พิสูจน์ได้ในอนาคตได้เร็วขึ้นและมีประสิทธิภาพมากขึ้น มันมีส่วนประกอบที่อำนวยความสะดวกในการสร้างเว็บไซต์โดยใช้ PHP Velox ไม่มีการพึ่งพาใด ๆ แพ็คเกจ Velox และทุกสิ่งที่ต้องการรวมอยู่ในโครงการเอง Velox ทั้งหมดที่ให้ไว้เป็นวิธีการทำงานกับ config , pass data , ลงทะเบียน เส้นทาง , โต้ตอบกับ ฐานข้อมูล , มุมมอง เรนเดอร์, จัดการ ข้อยกเว้น , รหัส อัตโนมัติ และ การแก้ไข สินทรัพย์ มันให้ มุมมอง และส่วนของ คอนโทรลเลอร์ ของรูปแบบการออกแบบ MVC เมื่อมองจาก v1.3.0 , Velox ยังให้ส่วนของ รุ่น ทำให้เป็นกรอบ MVC ที่โดดเด่นอย่างเต็มที่และเริ่มต้นจาก v1.4.0 นอกจากนี้ยังมาพร้อมกับระบบตรวจสอบความถูกต้องอย่างง่าย Velox ยังสามารถใช้เป็น เครื่องกำเนิดไซต์แบบคงที่ หากสิ่งที่คุณต้องการคือไฟล์ HTML ในที่สุด
Velox ถูกสร้างขึ้นเพื่อแก้ปัญหาที่เฉพาะเจาะจงมันเป็นวิธีการสร้างเว็บไซต์ที่อยู่ระหว่างไดนามิกและคงที่วิธีการสร้างเว็บไซต์ง่าย ๆ ที่มีหน้าไม่กี่หน้าโดยไม่ต้องถูกบังคับให้ใช้เฟรมเวิร์กหรือ CMS ที่มาพร้อมกับสิ่งต่างๆมากมาย
ไม่แนะนำให้ใช้ Velox หากคุณมีโครงการตัวกลางคุณจะดีกว่าโดยใช้กรอบการทำงานที่ดี Velox ไม่ได้เป็นความคิดริเริ่มที่จะสร้างวงล้อขึ้นใหม่คุณสามารถดู Velox เป็นชุดเริ่มต้นสำหรับโครงการขนาดเล็ก
Velox มีกรณีการใช้งานพิเศษเว็บไซต์ง่าย ๆ และนี่คือเว็บไซต์ที่เรียบง่ายจริงๆ ข้อได้เปรียบคือคุณไม่มีสิ่งที่คุณไม่ต้องการ การเปรียบเทียบ Velox กับ Laravel หรือ Symfony นั้นไม่เกี่ยวข้องเนื่องจากเฟรมเวิร์กเหล่านี้เล่นในพื้นที่ที่แตกต่างกันโดยสิ้นเชิงมันก็คุ้มค่าที่จะกล่าวถึงว่า Velox นั้นง่ายกว่าลูเมนหรือเพรียวบาง
| ไดเรกทอรี | คำอธิบาย |
|---|---|
bootstrap | นี่คือที่ velox bootstraps แอปพลิเคชัน โดยปกติคุณไม่จำเป็นต้องเปลี่ยนแปลงอะไรในไดเรกทอรีนี้เว้นแต่คุณต้องการขยายฟังก์ชันการทำงานของ Velox เกินกว่าสิ่งพื้นฐาน |
bin | นี่คือที่ที่ PHP Executables ถูกวางไว้ คุณสามารถเพิ่มของคุณได้อย่างอิสระหรือลบไดเรกทอรีทั้งหมด |
app | นี่คือที่ที่ตรรกะแบ็กเอนด์ของคุณจะถูกวางไว้ คุณจะทำงานที่นี่เป็นส่วนใหญ่สำหรับส่วนแบ็กเอนด์ของแอปของคุณ |
classes | นี่คือที่ที่ไฟล์แหล่งที่มาของ Velox ถ่ายทอดสด คุณไม่ควรสัมผัสอะไรที่นี่เว้นแต่คุณต้องการสร้าง Velox เวอร์ชันของคุณเอง |
functions | นี่คือที่ฟังก์ชั่นทั้งหมดที่โหลดในแอปพลิเคชันสด คุณสามารถเพิ่มของคุณได้อย่างอิสระหรือลบไดเรกทอรีทั้งหมด |
includes | นี่คือที่ที่ไฟล์ทั้งหมดที่ควรโหลดไว้ล่วงหน้าจะถูกวางไว้ คุณสามารถเพิ่มของคุณได้อย่างอิสระหรือลบไดเรกทอรีทั้งหมด |
themes | นี่คือที่ที่ธีมส่วนหน้าทั้งหมดของคุณจะถูกวางไว้ คุณจะทำงานที่นี่เป็นส่วนใหญ่สำหรับส่วนหน้าของแอปของคุณ |
config | นี่คือที่ที่ไฟล์กำหนดค่าทั้งหมดจะอยู่ ไฟล์ทั้งหมดที่นี่จะสามารถเข้าถึงได้โดยใช้คลาส Config at Runtime |
storage | นี่คือที่ Velox จะเขียนแคชและบันทึก คุณยังสามารถใช้ไดเรกทอรีนี้เพื่อจัดเก็บสินทรัพย์ทั่วทั้งการติดตั้ง |
public | นี่คือที่ที่คุณควรใส่ index.php ของคุณด้วย symlink สำหรับสินทรัพย์คงที่ ( assets/ ไดเรกทอรี) เพื่อความปลอดภัยสูงสุด คุณสามารถลบไดเรกทอรีนี้ได้อย่างอิสระหากคุณต้องการ |
vendor | นี่คือที่ที่นักแต่งเพลงของคุณจะพึ่งพา คุณสามารถลบไดเรกทอรีนี้ได้อย่างอิสระหากคุณไม่ต้องการใช้นักแต่งเพลง |
คำแนะนำ: ไฟล์ส่วนใหญ่ที่แสดงในไดเรกทอรีเหล่านี้มีการบันทึกไว้ ลองดูพวกเขาเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ Velox
จุดเริ่มต้นสำหรับแอพ Velox คือ index.php ที่นี่คุณต้องใช้ bootstrap/autoload.php ลงทะเบียนเส้นทางบางเส้นทางด้วยตัวจัดการของพวกเขาโดยใช้ Router::class และเริ่มเราเตอร์ นี่คือทั้งหมดที่คุณต้องมีแอพ Velox ที่ใช้งานได้
<?php
require ' bootstrap/autoload.php ' ;
Router:: handle ( ' / ' , function () {
return View:: render ( ' home ' , [ ' title ' => ' Home ' ]);
});
Router:: start (); นอกจากนี้คุณสามารถเพิ่ม Middlewares โดยใช้ Router::middleware() และ/หรือตั้งค่าตัวจัดการสำหรับการตอบกลับ 404 และ 405 โดยใช้ {global.errorPages.CODE} ค่าการกำหนดค่า
อีกทางเลือกหนึ่งคุณสามารถแยก "ส่วนการลงทะเบียนเส้นทาง" ในไฟล์ของตัวเองและแจ้งให้ Velox ทราบเกี่ยวกับมันโดยใช้ bootstrap/additional.php เริ่มต้นจาก v1.2.0 Velox ทำตามค่าเริ่มต้นไฟล์ includes/routes/web.php เป็นที่ที่คุณควรลงทะเบียนเส้นทางของคุณ เราเตอร์จะเริ่มโดยอัตโนมัติหากไม่ได้เริ่มต้นอย่างชัดเจน
หมายเหตุ: เพื่อให้ Velox ทำงานได้อย่างถูกต้องและปลอดภัยคุณต้องเปลี่ยนเส้นทางคำขอทั้งหมดไปยังจุดเข้าใช้งานแอปพลิเคชัน ( index.php ) และบล็อกคำขอทั้งหมดไปยังไฟล์ PHP อื่น ๆ บนเซิร์ฟเวอร์ (ดูที่ .htaccess.dist เพื่อเริ่มต้นด้วย Apache)
ตารางต่อไปนี้แสดงรายการไฟล์กำหนดค่าทั้งหมดที่มาพร้อมกับ Velox
| ไฟล์กำหนดค่า | คำอธิบาย |
|---|---|
global.php | ไฟล์กำหนดค่านี้มีตัวแปรส่วนกลางบางอย่างที่ใช้โดยเกือบทุกคลาส (การกำหนดค่าทั่วทั้งแอพ) |
router.php | ไฟล์กำหนดค่านี้สามารถใช้เพื่อแทนที่ Router::class |
session.php | ไฟล์กำหนดค่านี้มีการกำหนดค่าเซสชันจะถูกใช้โดย Session::class |
database.php | ไฟล์กำหนดค่านี้มีข้อมูลรับรองฐานข้อมูลมันถูกใช้โดย Database::class |
auth.php | ไฟล์กำหนดค่านี้มีการกำหนดค่าการรับรองความถูกต้องโดย Auth::class |
theme.php | ไฟล์กำหนดค่านี้สามารถใช้ในการแก้ไข/ขยายการกำหนดค่าธีม |
view.php | ไฟล์กำหนดค่านี้สามารถใช้เพื่อปรับแต่งทุกอย่างเกี่ยวกับมุมมอง มันถูกใช้โดย View::class |
data.php | ไฟล์กำหนดค่านี้สามารถใช้เพื่อให้ข้อมูลโดยพลการใด ๆ ซึ่งจะได้รับการฉีดใน Data::class |
cli.php | ไฟล์กำหนดค่านี้สามารถใช้เพื่อเปิด/ปิดใช้งานคำสั่งหรือเปลี่ยนอาร์กิวเมนต์ของพวกเขา |
ความจริง: คุณสามารถเพิ่มไฟล์กำหนดค่าของคุณเองได้อย่างอิสระเช่นกันสิ่งที่คุณต้องทำคือการสร้างไฟล์ใหม่ภายใต้ /config และเพิ่มการกำหนดค่าของคุณ Velox จะรู้เกี่ยวกับไฟล์นี้และโหลดในแอปพลิเคชัน คุณสามารถเข้าถึง config ของคุณผ่าน Config::get('filename.whateverKeyYouWrote')
คลาส Velox แบ่งออกเป็นสี่เนมสเปซ:
MAKSVeloxMAKSVeloxBackendMAKSVeloxFrontendMAKSVeloxHelperตารางต่อไปนี้แสดงรายการคลาสที่มีอยู่ทั้งหมดพร้อมคำอธิบาย:
| ระดับ | คำอธิบาย |
|---|---|
VeloxApp | คลาสที่ทำหน้าที่เป็นตัวรับบริการพื้นฐานสำหรับ Velox |
BackendEvent | คลาสที่มีฟังก์ชั่นการจัดการกิจกรรมง่าย ๆ (การส่งและฟัง) |
BackendConfig | คลาสที่โหลดทุกอย่างจากไดเรกทอรี /config และทำให้เป็นอาร์เรย์ที่สามารถเข้าถึงได้ผ่าน dot-notation |
BackendRouter | คลาสที่ทำหน้าที่เป็นเราเตอร์และจุดเริ่มต้นสำหรับแอปพลิเคชัน |
BackendGlobals | คลาสที่ทำหน้าที่เป็นนามธรรม/wrapper เพื่อทำงานกับ superglobals |
BackendSession | คลาสที่มีอินเทอร์เฟซง่าย ๆ ในการทำงานกับเซสชัน |
BackendController | คลาสนามธรรมที่ทำหน้าที่เป็นตัวควบคุมพื้นฐานที่สามารถขยายได้เพื่อสร้างตัวจัดการสำหรับเราเตอร์ |
BackendDatabase | คลาสที่แสดงถึงฐานข้อมูลและจัดการการดำเนินการฐานข้อมูล |
BackendModel | คลาสนามธรรมที่ทำหน้าที่เป็นแบบจำลองพื้นฐานที่สามารถขยายเพื่อสร้างโมเดลที่กำหนดเอง |
BackendAuth | คลาสที่ทำหน้าที่เป็นระบบตรวจสอบความถูกต้องสำหรับผู้ใช้ |
FrontendData | ชั้นเรียนที่ทำหน้าที่เป็นถุงข้อมูลที่เป็นนามธรรม/ร้านค้าที่สามารถเข้าถึงได้ผ่านการสังเกต Dot-Notation |
FrontendView | คลาสที่แสดงผลไฟล์ดู (เลย์เอาต์หน้าและส่วนหนึ่ง) ที่มีความสามารถในการรวมไฟล์เพิ่มเติมแบ่งเนื้อหาหน้าเป็นส่วนและมุมมองที่แสดงแคช |
FrontendHTML | คลาสที่ทำหน้าที่เป็นอินเทอร์เฟซที่คล่องแคล่วในการเขียน HTML ใน PHP นอกจากนี้ยังช่วยในการสร้างองค์ประกอบ HTML ได้ทันที |
FrontendPath | คลาสที่ทำหน้าที่เป็นตัวแก้ไขเส้นทางสำหรับเส้นทาง/URL ที่แตกต่างกันของแอพ |
HelperDumper | คลาสที่ทิ้งตัวแปรและข้อยกเว้นในการจัดรูปแบบที่ดี |
HelperMisc | คลาสที่ทำหน้าที่เป็นผู้ถือสำหรับฟังก์ชั่นยูทิลิตี้เบ็ดเตล็ดต่างๆ |
หมายเหตุ: นี่คือสิ่งที่แพ็คเกจ Velox มอบให้นอกกรอบ
ความจริง: App , Event , Config , Router , Globals , Session , Database , Auth , Data , View , HTML , คลาส Path มีนามแฝงบนรูทเนมสเปซเพื่อการใช้งานง่าย
ฟังก์ชั่น Velox แบ่งออกเป็นไฟล์เหล่านี้:
helpers.php : นี่คือที่ที่ผู้ช่วยใช้งานสำหรับคลาส Velox มีชีวิตอยู่ซึ่งส่วนใหญ่เป็นฟังก์ชั่นที่ส่งคืนอินสแตนซ์ของคลาสหรือนามแฝงบางวิธีในนั้นhtml.php : นี่คือที่ฟังก์ชั่นผู้ช่วย HTML มีชีวิตอยู่สิ่งเหล่านี้ไม่มีอะไรอื่นนอกจากนามแฝงสำหรับฟังก์ชั่น PHP ที่ใช้มากที่สุดด้วย HTMLตารางต่อไปนี้แสดงฟังก์ชั่นที่มีอยู่ทั้งหมดและคลาส/กลุ่มที่พวกเขาอยู่:
| ชั้นเรียน/กลุ่ม | ฟังก์ชั่น |
|---|---|
App::class | app() ,abort()terminate() |
Event::class | event() |
Config::class | config() |
Router::class | router()handle() ,redirect()forward() |
Database::class | database() |
Globals::class | globals() |
Session::class | session() ,flash()csrf() |
Auth::class | auth() |
View::class | view() ,render()render_layout()render_page()render_partial()section_push()section_reset()section_start()section_end()section_yield()include_file() |
Data::class | data() ,data_has()data_get()data_set() |
HTML::class | html() |
Path::class | path() ,app_path_current()app_url_current()app_path()app_url()theme_path()theme_url()assets_path()assets_url() |
Dumper::class | dd()dump()dump_exception() |
| ผู้ช่วย HTML | he() , hd() , hse() , hsd() , st() , nb() |
ความจริง: คุณสามารถเพิ่มฟังก์ชั่นของคุณเองได้อย่างอิสระเช่นกันสิ่งที่คุณต้องทำคือการสร้างไฟล์ใหม่ภายใต้ /functions และเพิ่มฟังก์ชั่นของคุณลงไป Velox จะรู้เกี่ยวกับไฟล์นี้และโหลดในแอปพลิเคชัน
Velox มาพร้อมกับคำสั่งที่มีประโยชน์บางอย่างที่คุณสามารถใช้ในการทำงานซ้ำ ๆ คุณสามารถเรียกใช้คำสั่งเหล่านี้โดยใช้ php bin/{command-name}
ตารางต่อไปนี้แสดงรายการคำสั่งที่มีอยู่ทั้งหมดพร้อมคำอธิบาย
| สั่งการ | คำอธิบาย |
|---|---|
app-serve | คำสั่งนี้เริ่มต้นเซิร์ฟเวอร์การพัฒนา |
app-mirror | คำสั่งนี้สะท้อนแอปพลิเคชันในไดเรกทอรี /public |
config-cache | คำสั่งนี้แคชการกำหนดค่าปัจจุบัน |
config-dump | คำสั่งนี้ทิ้งการกำหนดค่าปัจจุบันด้วยการไฮไลต์ไวยากรณ์ |
cache-clear | คำสั่งนี้ล้างแคช |
คุณสามารถปรับแต่งคำสั่งเหล่านี้โดยใช้ไฟล์ config/cli.php ที่นี่คุณสามารถเปิด/ปิดการใช้งานหรือให้ข้อโต้แย้งที่แตกต่างกันสำหรับพวกเขา
หากคุณต้องการทำให้คำสั่งเหล่านี้สามารถเข้าถึงได้ผ่านอินเตอร์เฟสเดียว ตรวจสอบแพ็คเกจอื่น ๆ ของฉันซึ่งจะทำเพื่อคุณและอื่น ๆ อีกมากมาย
Velox ถูกสร้างขึ้นรอบ ๆ แนวคิดของ ธีม ชุดรูปแบบแบ่งออกเป็นสี่ไดเรกทอรี:
assets/ ไดเรกทอรีเป็นที่ที่สินทรัพย์คงที่ทั้งหมดของคุณที่เกี่ยวข้องกับธีมนี้จะถูกวางไว้layouts/ ไดเรกทอรีเป็นที่ที่คุณกำหนดเลย์เอาต์ของคุณ เลย์เอาต์ในคำศัพท์ Velox คือกรอบด้านนอกของหน้าเว็บpages/ ไดเรกทอรีเป็นที่ที่คุณใส่เนื้อหาเฉพาะในทุกหน้าหน้าจะถูกห่อหุ้มด้วยเค้าโครงที่คุณเลือกและในที่สุดก็รับการแสดงผล หน้าในคำศัพท์ Velox เป็นเนื้อหาจริงของหน้าเว็บpartials/ Directory เป็นที่ที่คุณวางชุดรูปแบบที่นำกลับมาใช้ใหม่ทั้งหมดของคุณซึ่งจะถูกใช้ในเลย์เอาต์หน้าหรือส่วนอื่น ๆ ของคุณ ตัวอย่างที่ดีสำหรับ partials อาจเป็น: ส่วนประกอบ รวม และ องค์ประกอบเนื้อหา คุณสามารถปรับแต่งพฤติกรรมของธีมโดยใช้ไฟล์ config/theme.php ที่นี่คุณสามารถตั้งค่าธีมที่ใช้งานได้ด้วยคีย์ active ชุดรูปแบบสามารถสืบทอดจากกันและกันโดยการตั้งค่าหลักด้วยคีย์ parent นอกจากนี้คุณยังสามารถเปลี่ยนโครงสร้างไดเรกทอรีธีมได้หากคุณต้องการใช้ปุ่ม paths การกำหนดค่าอื่น ๆ (ตัวอย่างเช่นแคช) ที่ควรค่าแก่การดูที่เกี่ยวข้องกับธีมสามารถพบได้ในไฟล์ config/view.php
คำแนะนำ: คุณสามารถดูธีม velox ที่ให้ไว้เพื่อดูว่าทุกอย่างทำงานร่วมกันได้อย่างไรในทางปฏิบัติ
themes/velox/layouts/main.phtmlthemes/velox/pages/home.phtmlthemes/velox/partials/text-image.phtml ในการเพิ่มคลาสของคุณเองให้ใช้ app/ ไดเรกทอรีนี่คือที่ที่คุณควรวางตรรกะทางธุรกิจของคุณเอง โปรดทราบว่าคุณต้องติดตาม PSR-4 เพื่อให้ Velox โหลดคลาสของคุณ ดู app/Controller/DefaultController.php เพื่อรับแนวคิด
นี่คือรายการไฟล์สำคัญบางไฟล์ที่คุณควรพิจารณาเมื่อทำงานกับ Velox:
autoload/additional.phpconfig/data.phpincludes/routes/web.php (เริ่มต้นจาก v1.2.0 )includes/events/system.php (เริ่มต้นจาก v1.2.0 ) <?php
namespace App Model ;
use MAKS Velox Backend Model ;
class Person extends Model
{
protected static ? string $ table = ' persons ' ;
protected static ? array $ columns = [ ' id ' , ' first_name ' , ' last_name ' , ' age ' , ...];
protected static ? string $ primaryKey = ' id ' ;
public static function schema (): string
{
// return SQL to create the table
}
} <?php
use App Model Person ;
// creating/manipulating models
$ person = new Person (); // set attributes later via setters or public assignment.
$ person = new Person([ ' first_name ' => $ value , . . . ]); // set attributes in constructor
$ person -> get ( ' first_name ' ); // get an attribute
$ person -> set ( ' last_name ' , $ value ); // set an attribute
$ person -> getFirstName (); // case will be changed to 'snake_case' automatically.
$ person -> setLastName ( $ value ); // case will be changed to 'snake_case' automatically.
$ person -> firstName ; // case will be changed to 'snake_case' automatically.
$ person -> lastName = $ value ; // case will be changed to 'snake_case' automatically.
$ attributes = $ person -> getAttributes (); // returns all attributes.
$ person -> save (); // persists the model in the database.
$ person -> update ([ ' first_name ' => $ value ]); // updates the model and save changes in the database.
$ person -> delete (); // deletes the model from the database.
Person:: create ( $ attributes ); // creates a new model instance, call save() on the instance to save it in the database.
Person:: destroy ( $ id ); // destroys a model and deletes it from the database.
// fetching models
$ count = Person:: count (); // returns the number of models in the database.
$ person = Person:: first ();
$ person = Person:: last ();
$ person = Person:: one ([ ' first_name ' => ' John ' ]);
$ persons = Person:: all ([ ' last_name ' => ' Doe ' ], $ order , $ offset , $ limit );
$ person = Person:: find ( $ id ); // $id is the primary key of the model.
$ persons = Person::find( ' first_name ' , ' John ' , ' last_name ' , ' Doe ' . . .); // or
$ persons = Person:: find ([ ' first_name ' => ' John ' , ' last_name ' => ' Doe ' ]);
$ persons = Person:: findByFirstName ( ' John ' ); // fetches using an attribute, case will be changed to 'snake_case' automatically.
$ persons = Person:: where ( ' first_name ' , ' = ' , $ value ); // fetches using a where clause condition.
$ persons = Person:: where ( ' last_name ' , ' LIKE ' , ' %Doe ' , [[ ' AND ' , ' age ' , ' > ' , 27 ], ...], ' age DESC ' , $ limit , $ offset );
$ persons = Person:: fetch ( ' SELECT * FROM @table WHERE `first_name` = ? ' , [ $ value ]); // fetch using raw SQL query. <?php
namespace App Controller ;
use MAKS Velox Backend Controller ;
use App Model Person ;
class PersonsController extends Controller
{
public function indexAction ()
{
$ persons = Person:: all ();
return $ this -> view -> render ( ' persons/index ' , [
' title ' => ' Persons ' ,
' persons ' => $ persons
]);
}
// other CRUD actions ...
/**
* Persons search action.
*
* @route("/persons/search", {GET})
*/
public function searchAction ()
{
// ...
}
/**
* Persons middleware.
*
* @route("/persons/*", {GET, POST})
*/
public function personsMiddleware ()
{
// ...
}
} ความจริง: การดำเนินการ CRUD (คือ: index , create , store , show , edit , แก้ไข, update , destroy ) ได้รับการลงทะเบียนและกำหนดค่าตามค่าเริ่มต้น ในการลงทะเบียนเส้นทางของคุณเองโดยอัตโนมัติให้ใช้ @route("<path>", {<http-verb>, ...}) คำอธิบายประกอบ ดู Controller::registerRoutes() DOBBLOCK เพื่อเรียนรู้เพิ่มเติม
ความจริง: เพื่อให้โมเดลพร้อมใช้งานเป็นคุณสมบัติสำหรับคอนโทรลเลอร์ ( $this->model ) ใช้ Controller::associateModel() ดู Controller::associateModel() Docblock เพื่อเรียนรู้เพิ่มเติม
คำแนะนำ: หากอยู่ในโหมดการผลิตเป็นทางลัดการโยนข้อยกเว้นด้วยการจับคู่รหัส {global.errorPages.CODE} ค่าการกำหนดค่าจะทำให้หน้าข้อผิดพลาดที่สอดคล้องกัน ตัวอย่างเช่นเมื่อโยน new Exception('Not found', 404) รูปแบบคอนโทรลเลอร์หน้าข้อผิดพลาด 404 ที่กำหนดค่าจะถูกแสดงผลและจะผ่านข้อความข้อยกเว้น หากหน้าไม่ได้รับการกำหนดค่าหน้าข้อผิดพลาด 500 จะแสดงผลเป็นทางเลือกแทน
Velox ไม่มีวิธีใดในการตรวจสอบข้อมูล ตรวจสอบแพ็คเกจอื่น ๆ ของฉันอันยิ่งใหญ่ซึ่งจะทำเพื่อคุณและอื่น ๆ อีกมากมาย
{# theme/pages/persons/index.phtml #}
{! @extends 'theme/pages/persons/base' !}
{! @block content !}
{! @super !}
< h1 > {{ $title } } </ h1 >
{! @if ( isset ( $persons ) && count ( $persons ) ) !}
< ul >
{! @foreach ( $persons as $person ) !}
< li > {{ $person -> firsName } } {{ $person -> lastName } } </ li >
{! @endforeach !}
</ ul >
{! @endif !}
{! @endblock !} คำแนะนำ: ตรวจสอบโมเดล Person และ PersonsController เพื่อดูตัวอย่างที่สมจริง
Velox มาพร้อมกับเอ็นจิ้นเทมเพลตของตัวเอง เอ็นจิ้นเทมเพลตนี้ใช้งานง่ายและง่ายต่อการเข้ากันหากคุณมีประสบการณ์กับเอ็นจิ้นเทมเพลตอื่น ๆ การเรียนรู้ว่ามันจะเป็นเวลาไม่กี่นาที โปรดทราบว่าการใช้เอ็นจิ้นเทมเพลตนี้เป็นทางเลือก คุณสามารถใช้ PHP ดิบในมุมมองของคุณ
ตารางต่อไปนี้แสดงรายการแท็กที่มีอยู่ทั้งหมดและสิ่งที่พวกเขาทำ:
| ติดแท็ก | คำอธิบาย |
|---|---|
{! @extends 'path/to/template' !} | ขยายเทมเพลตบล็อกของเทมเพลตนี้จะได้รับการสืบทอด |
{! @include 'path/to/file' !} | รวมไฟล์สิ่งนี้จะได้รับการแสดงผลก่อนการรวม (ไม่สามารถเข้าถึงตัวแปรบริบท) |
{! @embed 'path/to/file' !} | ฝังไฟล์สิ่งนี้จะรวมอยู่ใน IS (สามารถเข้าถึงตัวแปรบริบท) |
{! @block name !}{! @endblock !} | สร้างบล็อกเพื่อห่อรหัสบางส่วน |
{! @super !} | ใช้ภายในบล็อกในเทมเพลตขยายเพื่อสืบทอดเนื้อหาบล็อกหลัก |
{! @block(name) !} | พิมพ์บล็อก ต้องเรียกอย่างน้อยหนึ่งครั้งเพื่อให้บล็อก |
{! @foreach ($vars as $var) !}{! @endforeach !} | โครงสร้างควบคุม (ลูปถ้าคำสั่ง, ... ) โครงสร้างการควบคุม PHP ทั้งหมดมีให้บริการ ( if else , elseif , do , while for foreach , continue , switch , break , return , require , include ) ด้วยไวยากรณ์เดียวกัน แต่เพียงแค่นำหน้าด้วยสัญลักษณ์ @ ถ้าโครงสร้างควบคุมเป็นคำแรกในแท็ก |
{! $var = '' !} | การกำหนดตัวแปร เนื้อหาอาจเป็นตัวแปรหรือนิพจน์ PHP ที่ถูกต้อง |
{{ $var }} | พิมพ์ตัวแปร เนื้อหาอาจเป็นตัวแปรหรือนิพจน์ PHP ใด ๆ ที่สามารถหล่อเป็นสตริงได้ |
{{{ $var }}} | พิมพ์ตัวแปรโดยไม่ต้องหลบหนี เนื้อหาอาจเป็นตัวแปรหรือนิพจน์ PHP ใด ๆ ที่สามารถหล่อเป็นสตริงได้ |
{# This is a comment #} | แสดงความคิดเห็นบางอย่าง นี่จะเป็นความคิดเห็น PHP (จะไม่สามารถใช้ได้ใน HTML สุดท้าย) |
คำแนะนำ: ดูมุมมองของ persons ของ PersonsController ในธีม Velox สำหรับตัวอย่างที่สมจริง
เริ่มต้นจาก v1.4.0 Velox มาพร้อมกับระบบตรวจสอบความถูกต้องในตัว ระบบนี้ง่ายมากและใช้งานง่าย
<?php
use MAKS Velox Backend Auth ;
// instantiate the Auth class
$ auth = new Auth (); // or Auth::instance();
// register a new user
$ status = $ auth -> register ( ' username ' , ' password ' );
// unregister a user
$ status = $ auth -> unregister ( ' username ' );
// log in a user
$ status = $ auth -> login ( ' username ' , ' password ' );
// log out a user
$ auth -> logout ();
// authenticate a user model
Auth:: authenticate ( $ user );
// check if there is a logged in user
$ status = Auth:: check ();
// retrieve the current authenticated user
$ user = Auth:: user ();
// add HTTP basic auth
Auth:: basic ([ ' username ' => ' password ' ]); คำแนะนำ: ตรวจสอบ UsersController เพื่อดูตัวอย่างที่สมจริง
Velox เป็นโครงการโอเพ่นซอร์สที่ได้รับอนุญาตภายใต้ใบอนุญาต MIT
ลิขสิทธิ์ (c) 2021 Marwan al-Soltany สงวนลิขสิทธิ์