เราขอแนะนำกรอบการทำงานของเราสำหรับบล็อกส่วนตัว, สำนักข่าวและการพัฒนา REST API
เช่นเดียวกับเฟรมเวิร์ก PHP อื่น ๆ ที่เราเริ่มโครงการนี้ตามสถาปัตยกรรม MVC ด้วยบริการที่โดดเด่นเช่น $Add->Loader , REST API , SharedLayouts , Middlewares และแนวคิดด้านความปลอดภัยที่กำหนดไว้ล่วงหน้า ทุกอย่างใน Simplist นั้นง่ายพอ ๆ กับการติดตั้งบนเซิร์ฟเวอร์ของคุณ!
ดาวน์โหลดจากที่เก็บนี้:
composer create-project miladxandi/simplist
โปรดจำไว้ว่าเวอร์ชัน PHP ของคุณควรสูงกว่า 7 และควรตั้งที่อยู่ตามคำขอในเครื่อง:
public_html/
หลังจากนั้นคุณต้องตั้งค่าชื่อผู้ใช้และตารางฐานข้อมูลของคุณ! ในโครงการท้องถิ่นสำหรับการใช้งานครั้งแรกค่าเหล่านี้ควรเป็นเช่นนี้:
ตาราง: simplist_simplist
ชื่อผู้ใช้: รูท
รหัสผ่าน: ว่างเปล่า (ไม่มีค่าหรือสตริงว่าง)
คุณสามารถเปลี่ยนค่าเหล่านี้ได้โดยไปที่รูปแบบเลเยอร์และเปลี่ยนในการเชื่อมต่อ phtml ในโฟลเดอร์ Core/Configurations หรือไปที่ที่อยู่นี้:
core/configurations/connection.phtml
หมายเหตุ: มีไฟล์ตาราง SQL ในโฟลเดอร์ "ทรัพยากร" ที่คุณสามารถนำเข้าไปยังฐานข้อมูล MySQL ในพื้นที่หรือออนไลน์ของคุณได้อย่างง่ายดาย
จนกว่าคุณจะทำงานกับไดเรกทอรีการทำงานในพื้นที่โปรโตคอล HTTPS จะถูกปิด แต่ถ้าคุณต้องการอัปโหลดบนเซิร์ฟเวอร์ของคุณโปรโตคอล HTTPS สามารถเปิดใช้งานได้โดยการทำ "secureProtocol" true ในโฟลเดอร์หลัก
core/configurations/routing.phtml
คุณสามารถเปลี่ยน $SecureProtocol = false; ถึง $SecureProtocol = true;
มันติดตั้งอย่างสมบูรณ์และพร้อมใช้งาน
เพื่อกำหนดเส้นทางของคุณเองไปที่ที่อยู่นี้:
เส้นทาง/การตั้งค่า/route.phtml
มีเพียงตัวส่งสัญญาณอาร์เรย์ที่ส่งคืน URL เป็นคีย์อาร์เรย์และการกำหนดค่าเป็นค่าของมัน ทุกเส้นทางใหม่ควรสร้างจากเทมเพลตนี้:
'/aboutus' => [
'target'=>'Main.Home.Aboutus',
'get'=> true,
'post'=> false,
'middleware'=>'Main.Home.Aboutus'
'important'=>false
],
ให้ฉันอธิบายทีละบรรทัด:
'/aboutus'
นี่คือที่อยู่เว็บที่จะประมวลผลที่อยู่ที่ร้องขอโดยคอนโทรลเลอร์และ Middlewares และเป็นกุญแจสำคัญของอาร์เรย์ หมายเหตุ: ระบบเราเตอร์ของเราไม่ละเอียดอ่อน แต่คุณต้องกำหนดเส้นทางตัวพิมพ์เล็ก
'target'=>'Main.Home.Aboutus'
หมายความว่าคอนโทรลเลอร์เป้าหมายคือ "homecontroller" ในโฟลเดอร์ "หลัก" ของโฟลเดอร์คอนโทรลเลอร์และหลังจากร้องขอที่อยู่นี้ "เกี่ยวกับ US" จะถูกเรียกตามที่เขียนไว้ในตอนท้ายของ
'target'=>'Main.Home.Aboutus'คอนโทรลเลอร์ นอกจากนี้คุณสามารถประมวลผลบนQuerry Stringโดยรับมันในพารามิเตอร์ฟังก์ชัน นอกจากนี้คุณยังสามารถร้องขอฐานข้อมูลในไฟล์คอนโทรลเลอร์ ค่าQuerry Stringหรือฐานข้อมูลที่กำหนดควรแทรกลงในอาร์เรย์ที่มีชื่อ$Viewbagคุณสามารถส่งพวกเขาไปยังหน้าเว็บของคุณด้วยรหัสนี้:View::Process("Main.Home.Post",$Viewbag);ตอนนี้สามารถเข้าถึงได้จากไฟล์ "ดู" ที่ร้องขอใน "public_html/view/... " แทนที่จะเขียนรหัสตรรกะของคุณลงในคอนโทรลเลอร์เราขอแนะนำให้คุณใส่ไว้ในโฟลเดอร์ "Logic" ในโฟลเดอร์โมเดล มีสัญญาที่ยอดเยี่ยมในโฟลเดอร์นี้เพื่อช่วยให้คุณพัฒนาธุรกิจของคุณได้ดีขึ้นกว่าเดิม
หมายเหตุ: คอนโทรลเลอร์และ Middlewares ต้องสร้างด้วยส่วนขยายที่แน่นอน Controller.phtml หรือ Middleware.phtml ส่วนขยาย แต่ควรเขียนที่นี่โดยไม่มีส่วนขยายเหล่านี้ ตัวอย่างเช่นเรามี "homecontroller" แต่เราสามารถเข้าถึงได้โดยการเขียนชื่อโดยไม่มี "คอนโทรลเลอร์" คำ: "บ้าน"
'get'=> true หรือ 'post'=> false
นี่คือวิธีการขอเซิร์ฟเวอร์ทั่วไปที่เราสามารถกำหนดได้ที่นี่ หากคุณต้องการปฏิเสธคำขอโพสต์ใด ๆ คุณเพียงแค่ต้องเปลี่ยนค่า
postเป็นfalseจากนั้นคุณสามารถดูทุกคำขอด้วยวิธีการคำขอPOSTจะแสดงข้อผิดพลาด "วิธีการร้องขอไม่อนุญาต"
'middleware'=>'Main.Home.Aboutus'
เมื่อไม่มีความขัดแย้งกับ URL ที่ร้องขอและวิธีการขอที่กำหนดไว้ก่อนที่จะเปิดตัวคอนโทรลเลอร์เรามีมิดเดิลแวร์บางอย่างเพื่อตรวจสอบความถูกต้อง สามารถใช้เพื่อตรวจสอบคุกกี้ความปลอดภัยหรือตัวเลือกภาษาเว็บไซต์และ ฯลฯ มิดเดิลแวร์ทุกคนควรส่งคืน
true"สถานะ" เพื่อผ่านการตรวจสอบ Middlewares ยังสามารถประมวลผลบนQuerry Stringโดยรับมันในพารามิเตอร์ฟังก์ชันของพวกเขา เช่นเดียวกับคอนโทรลเลอร์เราต้องการชื่อที่บริสุทธิ์โดยไม่ต้องใช้คำว่า "มิดเดิลแวร์"
'important'=>false
เมื่อคุณอ่านก่อนหน้านี้ระบบของเราไม่ได้มีความละเอียดอ่อนโดยค่าเริ่มต้น แต่บางครั้งคุณต้องประมวลผลบน URL ที่ละเอียดอ่อนกรณีเพื่อตรวจสอบโทเค็นและข้อมูลที่ละเอียดอ่อนหรือเหตุผลอื่น ๆ คุณสามารถเปลี่ยนกฎนี้ของระบบการกำหนดเส้นทางของเราโดยใช้
'important'=>trueหรือปิดโดย'important'=>falseหมายเหตุ: ไม่จำเป็นต้องใช้คีย์ในการกำหนดเส้นทางอาร์เรย์
เพื่อกำหนดเส้นทางของคุณเองไปที่ที่อยู่นี้:
เส้นทาง/การตั้งค่า/api.phtml
มีเพียงตัวส่งสัญญาณอาร์เรย์ที่ส่งคืน URL เป็นคีย์อาร์เรย์และการกำหนดค่าเป็นค่าของมัน ทุกเส้นทางใหม่ควรสร้างจากเทมเพลตนี้:
'/api' => [
'target' => 'Api.Home.Index',
'allowed'=> 'get',
'blocked'=> 'DELETE',
'middleware'=>'Main.Home.Index',
'important'=>false
]
ให้ฉันอธิบายทีละบรรทัด:
'/api'
นี่คือที่อยู่เว็บสำหรับการโทร API และจะประมวลผลบริการที่ร้องขอโดยคอนโทรลเลอร์และมิดเดิ้ลแวร์และเป็นกุญแจสำคัญของอาร์เรย์ หมายเหตุ: ระบบเราเตอร์ของเราไม่ละเอียดอ่อน แต่คุณต้องกำหนดเส้นทางตัวพิมพ์เล็ก
'target' => 'Api.Home.Index'
หมายความว่าคอนโทรลเลอร์เป้าหมายคือ "homecontroller" ในโฟลเดอร์ "API" ของโฟลเดอร์คอนโทรลเลอร์และหลังจากร้องขอวิธีการ "ดัชนี" ที่อยู่นี้ "จะถูกเรียกตามที่เขียนไว้ในตอนท้ายของ
'target' => 'Api.Home.Index'คอนโทรลเลอร์ นอกจากนี้คุณสามารถประมวลผลบนQuerry Stringโดยรับมันในพารามิเตอร์ฟังก์ชัน นอกจากนี้คุณยังสามารถร้องขอฐานข้อมูลในไฟล์คอนโทรลเลอร์ แทนที่จะเขียนรหัสตรรกะของคุณลงในคอนโทรลเลอร์เราขอแนะนำให้คุณใส่ไว้ในโฟลเดอร์ "Logic" ในโฟลเดอร์โมเดล มีสัญญาที่ยอดเยี่ยมในโฟลเดอร์นี้เพื่อช่วยให้คุณพัฒนาธุรกิจของคุณได้ดีขึ้นกว่าเดิม
หมายเหตุ: คอนโทรลเลอร์และ Middlewares ต้องสร้างด้วยส่วนขยายที่แน่นอน Controller.phtml หรือ Middleware.phtml ส่วนขยาย แต่ควรเขียนที่นี่โดยไม่มีส่วนขยายเหล่านี้ ตัวอย่างเช่นเรามี "homecontroller" แต่เราสามารถเข้าถึงได้โดยการเขียนชื่อโดยไม่มี "คอนโทรลเลอร์" คำ: "บ้าน"
'allowed'=> 'get' หรือ 'blocked'=> 'DELETE'
หากคุณต้องการให้แอปของคุณทำงานคำกริยา HTTP ใด ๆ คุณสามารถกำหนดได้ที่นี่และแยกออกด้วยเครื่องหมายจุลภาคเพื่อให้ API ของคุณใช้วิธีนี้ ตัวอย่างเช่นเราต้องการให้แอปของเราโต้ตอบกับเซิร์ฟเวอร์ของเราด้วย
POSTและGETวิธีการ ดังนั้นเราจึงกำหนดทั้งสองอย่างที่นี่เช่นนี้:
'allowed'=> 'get,post'
จากนั้นเราต้องการ จำกัด คำกริยา HTTP จากคำขอไปยังเซิร์ฟเวอร์ของเราเราต้องเขียนไว้ในส่วน
blockedของส่วนนี้:
'blocked'=> 'DELETE'
เราสามารถเขียนคำกริยามากที่สุดเท่าที่เราต้องการในส่วนเหล่านี้
'middleware'=>'Main.Home.Aboutus'
เมื่อไม่มีความขัดแย้งกับ URL ที่ร้องขอและวิธีการขอที่กำหนดไว้ก่อนที่จะเปิดตัวคอนโทรลเลอร์เรามีมิดเดิลแวร์บางอย่างเพื่อตรวจสอบความถูกต้อง สามารถใช้เพื่อตรวจสอบคุกกี้ความปลอดภัยหรือตัวเลือกภาษาเว็บไซต์และ ฯลฯ มิดเดิลแวร์ทุกคนควรส่งคืน
true"สถานะ" เพื่อผ่านการตรวจสอบ Middlewares ยังสามารถประมวลผลบนQuerry Stringโดยรับมันในพารามิเตอร์ฟังก์ชันของพวกเขา เช่นเดียวกับคอนโทรลเลอร์เราต้องการชื่อที่บริสุทธิ์โดยไม่ต้องใช้คำว่า "มิดเดิลแวร์"
'important'=>false
เมื่อคุณอ่านก่อนหน้านี้ระบบของเราไม่ได้มีความละเอียดอ่อนโดยค่าเริ่มต้น แต่บางครั้งคุณต้องประมวลผลบน URL ที่ละเอียดอ่อนกรณีเพื่อตรวจสอบโทเค็นและข้อมูลที่ละเอียดอ่อนหรือเหตุผลอื่น ๆ คุณสามารถเปลี่ยนกฎนี้ของระบบการกำหนดเส้นทางของเราโดยใช้
'important'=>trueหรือปิดโดย'important'=>falseหมายเหตุ: ไม่จำเป็นต้องใช้คีย์ในการกำหนดเส้นทางอาร์เรย์
ไลบรารี oLoad เป็นบริการ ที่ง่าย และกำหนดเพื่อช่วยให้ส่วน head HTML ของคุณสะอาดมากขึ้น หากคุณต้องการใช้ไลบรารีนี้คุณต้องใช้รหัสนี้ในไฟล์มุมมองของคุณในตอนแรก:
<?php $Add = new CoreRequirementoLoad("../../..","Style/Main","Script/Main","Content/Main"); ?>
ในรหัสนี้คุณสามารถกำหนดตำแหน่งที่แตกต่างกันสำหรับ JS, CSS, รูปภาพและอื่น ๆ ของคุณในขณะที่เราให้คุณปรับแต่งแอปของคุณ ../../.. จะแสดงรูทเริ่มต้นของเนื้อหาเหล่านี้ แต่คุณสามารถเปลี่ยนได้ในทุกหน้าที่คุณกำลังสร้าง
รหัสนี้สามารถนำเข้าไลบรารีหรือรูปภาพ CSS ภายนอกหรือรูปภาพ
นอกจากนี้ยังสามารถเพิ่มประเภทของไฟล์ที่ไม่ซ้ำกันในโครงการของคุณ
นี่คือรหัสที่สมบูรณ์เพื่อแสดงว่าคุณจะแสดงภาพบน HTML ของคุณได้อย่างไร:
<?php $Add->Loader("png","eastCloud","Shared",true,false,"eastCloud",24,24,"Style","Class"); ?>
รหัสนี้หมายถึง:
<?php $Add->Loader(Extension: "png",Name: "eastCloud",UniqueUrl: "Shared",Local: true,UniqueType: false,ImageAlt: "eastCloud",ImageWidth: 24,ImageHeight: 24,ImageStyle: "Style",ImageClass: "Class"); ?>
และจะสร้างแท็ก <img> ที่สมบูรณ์ทุกที่ที่ใช้
คุณสามารถเพิ่มไลบรารี JS และ CSS ได้เช่นนี้ แต่ยกเว้นทุกอย่างหลังจากการโต้แย้ง Local ในวิธีการนั้นและส่วนขยายของตัวเองเช่นนี้:
<?php $Add->Loader("css","Style",null,true); ?>
<?php $Add->Loader("js","Script",null,true); ?>
อาร์กิวเมนต์ UniqueUrl ให้คุณกำหนดไลบรารีหรือรูปภาพภายในหรือภายนอก หากไม่จำเป็นต้องกำหนด UniqueUrl เพียงแค่ปล่อยใบเสนอราคาสองเท่าที่ว่างเปล่า ( "" ) หรือส่งผ่าน NULL เป็นอาร์กิวเมนต์มันเป็นค่าเริ่มต้น
อาร์กิวเมนต์ Local หมายถึงไลบรารีหรือรูปภาพเป็นไฟล์ท้องถิ่นหรือไม่ระบบจะใช้รูทเริ่มต้นกับอาร์กิวเมนต์ที่กำหนดเพื่อค้นหาไฟล์นั้นหาก Local เป็น true
อาร์กิวเมนต์ UniqueType จะต้องเป็น true หากส่วนขยายเป็นทุกอย่างยกเว้น JS, CSS, PNG, JPEG, JPG และ ICO มันเป็น false โดยค่าเริ่มต้น
ส่วนขยาย js จะสร้าง <script src="../../../Script/Main/main.js"></script> รหัสทุกที่ที่คุณเรียก ส่วนขยาย css จะสร้าง <link rel="stylesheet" type="text/css" href="../../../Style/Shared/File.css"> รหัสทุกที่ที่คุณเรียกว่า
SharedLayouts เป็นชื่อของบริการ ที่เรียบง่าย ที่อยู่ในโฟลเดอร์ที่ใช้ร่วมกันในโฟลเดอร์ View ( public_html/View/Shared )
มันมี 2 โฟลเดอร์และไฟล์. phtml ที่มีชื่อ "เลย์เอาต์" ตามค่าเริ่มต้น ไฟล์เลย์เอาต์สามารถมีคลาสหนึ่งชั้นขึ้นไปสำหรับแต่ละส่วนของโครงการ ตัวอย่างเช่นมีคลาสเช่นนี้:
class MainLayouts { public static function _Header() { include "Main/_HeaderLayout.phtml"; } public static function _Menu() { include "Main/_MenuLayout.phtml"; } public static function _Footer() { include "Main/_FooterLayout.phtml"; } }
มีบางวิธีในการโหลดไฟล์มุมมองอื่น ๆ เป็นส่วนหัวเมนูและส่วนท้าย ไม่มีแนวคิดที่ซับซ้อน
เราวางไฟล์ทำเครื่องหมายลงไปด้วยส่วนขยาย ".MD" เป็นไฟล์คู่มือรายละเอียดของเรา เราขอแนะนำให้คุณดาวน์โหลดและติดตั้ง Mark Down Viewer เพื่อให้ Brower ของคุณดูไฟล์นี้ด้วยประสบการณ์ที่ดีกว่า