YAMF (ยังเป็นเฟรมเวิร์ก MVC อื่น) เป็นเฟรมเวิร์ก PHP ขนาดเล็กที่ออกแบบมาเพื่อให้คุณเริ่มใช้กระบวนทัศน์ MVC ได้อย่างรวดเร็วโดยไม่ต้องติดตั้งจำนวนมาก สิ่งที่คุณต้องมีคือเว็บเซิร์ฟเวอร์ที่ยอมรับไฟล์ .htaccess และคุณค่อนข้างดีที่จะไป!
ข้อกำหนดขั้นต่ำ: Php 7.0+
Use this template บนหน้าโครงการซื้อใหม่config.php หากจำเป็น ปรับพารามิเตอร์ใด ๆ ที่คุณต้องการในนั้นหรือเพิ่มพารามิเตอร์ใหม่ลงใน $app เช่น Session Logic โดยค่าเริ่มต้นคุณไม่จำเป็นต้องปรับอะไรเพื่อให้ไซต์ของคุณทำงานและทำงานconfig-private.sample.php ไปยัง config-private.php และปรับให้เข้ากับความต้องการของคุณ ตัวอย่างเช่นคุณสามารถตั้งค่า $app->db เป็นอินสแตนซ์ PDO สำหรับฐานข้อมูลท้องถิ่นของคุณ โปรดทราบว่าจะโหลด config-private.php ก่อนที่สิ่งใดใน config.php จะเกิดขึ้นuse Yamf/XYZ ทำงานได้คุณจะต้องใช้นักแต่งเพลง การใช้นักแต่งเพลงนั้นค่อนข้างง่าย: เพียงไปที่หน้าดาวน์โหลดและเรียกใช้สคริปต์ที่ด้านบน (หมายเหตุ: หากคุณอยู่ใน Windows คุณจะต้องทำตามคำแนะนำที่นี่ในหน้าอินโทร)composer install (หากคุณมีไฟล์ composer.phar ในไดเรกทอรีของคุณให้เรียกใช้ php composer.phar install ) มันจะนั่งและคิดสักครู่ พวกเขาไม่ได้อยู่ที่นี่และพวกเขาไม่ได้อยู่ที่นี่! YAMF ถูกเขียนขึ้นอย่างมีจุดประสงค์เพื่อไม่ใช้การพึ่งพาภายนอกใด ๆ นอกเหนือจาก Autoloader ของนักแต่งเพลงเพื่อลดอุปสรรคในการเข้าสู่การใช้กระบวนทัศน์ MVC ใน PHP หากคุณต้องการสิ่งเหล่านั้นเพียงแค่ดึงพวกเขาเข้ากับตัวจัดการการพึ่งพาที่คุณชื่นชอบ (เช่นนักแต่งเพลง) เนื่องจากนักแต่งเพลงมีความจำเป็นในการเรียกใช้โครงการนี้สำหรับการโหลดอัตโนมัติ PSR-4 เราขอแนะนำให้ใช้นักแต่งเพลง vendor/autoload.php รวมอยู่แล้วสำหรับคุณใน init.php
สำหรับหมายเหตุเกี่ยวกับการดู templating ให้ดูที่ส่วนของ subclassing
หากคุณอ่านเอกสารต่อไปนี้ใน YAMF คุณอาจจะดีกว่าแค่กระโดดเข้ามาและพยายามอ่านรหัสด้วยตัวเอง :) จะใช้เวลาเพียงไม่กี่นาทีและมันก็คุ้มค่า!
เพื่ออำนวยความสะดวกในการผ่านพารามิเตอร์การกำหนดค่าได้อย่างง่ายดายเช่นการตั้งค่าฐานข้อมูล ฯลฯ YAMF จะผ่านตัวแปร $app ของคลาส YamfAppConfig ไปยังแต่ละฟังก์ชันคอนโทรลเลอร์ คุณสามารถตั้งค่าตัวแปรนี้เพื่อจัดเก็บวัตถุฐานข้อมูล PDO ของคุณเปลี่ยนส่วนขยายมุมมองหรือตำแหน่งโฟลเดอร์และการตั้งค่าอื่น ๆ อีกมากมาย หากคุณต้องการเพิ่มค่าของคุณเองเป็น $app คุณสามารถสร้างคลาสที่มาจาก YamfAppConfig และเปลี่ยนการตั้งค่า appConfigClass ใน config.php เพื่อชี้ไปที่คลาสที่กำหนดเอง โปรดทราบว่าคลาสที่กำหนดเองของคุณจะต้องได้รับจาก YamfAppConfig ! ดู config.php เพื่อดูการตั้งค่าและค่าทั้งหมดที่ส่งผ่านโดย YAMF ผ่าน $app โดยเฉพาะอย่างยิ่งคุณสามารถ:
viewsFolderName )viewExtension )defaultHeaderName / defaultFooterName )config-private.php ) $app จะพร้อมใช้งานโดยอัตโนมัติในมุมมองของคุณสำหรับคุณ
สิ่งแรกที่คุณอาจต้องทำคือเพิ่มเส้นทางใหม่ ในการทำเช่นนั้นให้ทำตามขั้นตอนเหล่านี้:
app/Controllers ของโครงการ โฟลเดอร์ย่อยก็โอเค คอนโทรลเลอร์ไม่จำเป็นต้องมี Controller ในชื่อ แต่ตรวจสอบให้แน่ใจว่าชื่อคลาสตรงกับชื่อไฟล์public ที่ใช้พารามิเตอร์สองพารามิเตอร์: $app และ $request (ในลำดับนั้น)routes.php และตรวจสอบให้แน่ใจว่าคุณเข้าใจเอกสารและตัวอย่างของวิธีการทำงานของเส้นทางroutesPOST หากจำเป็นParent-Folder/Controller-Nameyamf/Responses/Response บางอย่างซึ่งอาจเป็นอะไรก็ได้ตั้งแต่ View จนถึงการตอบสนองของ JSON ไม่ว่าคุณจะต้องการอะไรก็ตาม ดูส่วนถัดไปสำหรับข้อมูลเพิ่มเติมที่นี่yamf/Responses/View สร้างไฟล์ PHP (ดู) ในโฟลเดอร์ views - อีกครั้งโฟลเดอร์ย่อยจะโอเค - และในวิธีการควบคุมของคุณ return new View('name/of/view'); -ในระยะสั้น:
app/Controllersroutes.phpviews หากจำเป็นreturn new View('name/of/view'); วิธีการควบคุมทั้งหมดที่เรียกว่าเป็นผลมาจากเส้นทางควรส่งคืน yamf/Responses/Response หรือคลาสย่อยของคลาสดังกล่าว นี่คือคำอธิบายบางอย่างเกี่ยวกับวิธีการใช้แต่ละข้อ ส่วนใหญ่สามารถใช้ในบรรทัดเดียวที่มีเพียงตัวสร้าง
Response - คลาสพื้นฐานสำหรับการตอบกลับจากเส้นทางnew Response($statusCode = 200)yamf/Responses/Response อื่น ๆ ทั้งหมดจากคลาสพาเรนต์นี้พวกเขาทั้งหมดสามารถส่งคืนรหัสสถานะ HTTP ที่กำหนดเองได้หากคุณต้องการ!ErrorMessage - wrapper ง่าย ๆ รอบมุมมองเพื่อส่งรหัสสถานะ 400 และมุมมอง Error.phpnew ErrorMessage($msg = '', $name = 'error', $title = '', $headerName = '', $footerName = '') $name คือชื่อของมุมมอง$error คุณไม่สามารถเปลี่ยนสิ่งนี้ได้โดยไม่ต้องมีคลาสย่อยviews/header.php และ views/footer.phpJsonResponse - ตัวอย่างเกี่ยวกับวิธีที่คุณสามารถส่งการตอบกลับ JSON จากคอนโทรลเลอร์ของคุณได้อย่างไรnew JsonResponse($data, $jsonEncodeOptions = 0)$data ผ่าน echo json_encode($this->data, $this->jsonEncodeOptions);NotFound - ใช้สำหรับการส่งคืน 404 ที่ไม่พบข้อความกลับไปยังไคลเอนต์new NotFound($name = '404', $data = [], $title = '', $headerName = '', $footerName = '') $name คือชื่อของมุมมองviews/header.php และ views/footer.phpResponseRedirect - อนุญาตให้เปลี่ยนเส้นทาง 302 ไปยังหน้าหรือเส้นทางอื่น ๆnew Redirect($redirectPath, $isInternalRedirect = true)$isInternalRedirect ใช้เพื่อเปลี่ยนเส้นทางไปยังเส้นทาง ภายในเว็บไซต์/ routes.php ข้อมูลปัจจุบัน php หากคุณต้องการเปลี่ยนเส้นทางไปยังเส้นทางภายในให้ใช้ Redirect แบบนี้: new Redirect('/route/name); (หมายเหตุการเริ่มต้น / ) ถ้าไม่ใช้ Redirect เช่นนี้: new Redirect('https://example.com', false); -View -ใช้สำหรับการคืนมุมมอง HTML ที่ใช้ PHPnew View($name, $data = [], $title = '', $headerName = '', $footerName = '') $name คือชื่อของมุมมองcompact ดู BlogController ของตัวอย่างviews/header.php และ views/footer.php หากคุณมีแนวคิดสำหรับประเภท Response เพิ่มเติมที่ควรรวมอยู่ใน YAMF โปรดเปิดคำขอคุณสมบัติ (ผ่านแท็บปัญหา) หรือเปิดคำขอดึง!
ตัวแปรหลักสองตัวถูกส่งไปยังวิธีการควบคุมของคุณจากเส้นทาง: $app และ $request โปรดทราบว่าเอาต์พุต View ทั้งหมดจะมี $app และ $request ที่ใช้งานได้ คุณไม่จำเป็นต้องส่งพวกเขาเป็นพารามิเตอร์ $data
AppConfig $app $app เป็นตัวแปรการกำหนดค่าส่วนใหญ่ที่คุณตั้งค่าใน config.php ตรวจสอบไฟล์นั้นเพื่อดูสิ่งที่มีอยู่อย่างรวดเร็ว บางรายการที่สำคัญกว่าคือ:
$app->db สำหรับการเชื่อมต่อฐานข้อมูลnull เพื่อหลีกเลี่ยงการใช้งานได้เลย นอกจากนั้นยังมีตัวแปรสองตัวที่ตั้งค่าใน init.php :
$app->isLocalHost ไม่ว่าแอปพลิเคชันจะทำงานบนโฮสต์ท้องถิ่น ( 127.0.0.1 หรือ ::1 )$app->basePath ไดเรกทอรีพื้นฐานสำหรับเว็บแอปพลิเคชันปัจจุบันของคุณ สามารถใช้เพื่ออนุญาตให้ใช้เว็บแอปพลิเคชันที่ซ้อนกันบนเว็บเซิร์ฟเวอร์ของคุณ ฉัน ขอ แนะนำให้ใช้ตัวแปรนี้ใน views ของคุณเมื่อทำลิงค์เว็บไซต์ในท้องถิ่นเพื่อที่ว่าหากคุณย้ายไฟล์ไปรอบ ๆ หรือย้ายสิ่งต่าง ๆ ไปยังโฟลเดอร์ย่อยทุกอย่างจะไม่แตก ในการเชื่อมโยงไปยังหน้าอื่นในเว็บไซต์ของคุณเพียงแค่ใช้ฟังก์ชั่น $app->yurl(string) (YAMF URL) เช่นนี้: <?= $app->yurl('/path/to/page') ?> $request $request จะมีข้อมูลทั้งหมดของคุณเกี่ยวกับเส้นทางของคุณและพารามิเตอร์ต่าง ๆ ที่มาพร้อมกับคำขอของคุณ เป็นประเภท yamf/Request มีสมาชิกสาธารณะเหล่านี้:
$request->route -สตริงเส้นทางดิบสำหรับคำขอนี้$request->controller -ชื่อสตริงของคอนโทรลเลอร์$request->function ชื่อสตริงของฟังก์ชันคอนโทรลเลอร์เพื่อโทร$request->routeParams พารามิเตอร์ใด ๆ ในเส้นทางเช่น {id} รูปแบบ: ['id' => ค่า]$request->get พารามิเตอร์ใด ๆ ที่พบใน URL-รูปแบบเดียวกับ $ _get (ไม่มีการประมวลผลเพิ่มเติม)$request->post -พารามิเตอร์โพสต์ใด ๆ-รูปแบบเดียวกับ $ _post (ไม่มีการประมวลผลเพิ่มเติม)$request->anchor ถ้าใช้ส่วน # ของ URL (ไม่มี #) เราเตอร์ฉลาดพอที่จะไม่ตรงกับ URL เช่น /blah/#/foo วิธีที่ง่ายที่สุดสำหรับคุณในการขยายกรอบนี้คือการได้รับจาก Response (หรือ Response อื่น ๆ ของคลาสเด็ก) และ/หรือสร้างคลาสหลักสำหรับคอนโทรลเลอร์ของคุณ ตัวอย่างเช่นโดยการรับมาจาก View คุณสามารถเปลี่ยนเอาต์พุตมุมมองเพื่อใช้เครื่องยนต์เทมเพลต Twig แทนเอาต์พุต PHP ง่ายๆ ด้วยการสร้างคลาสพาเรนต์สำหรับตัวควบคุมของคุณคุณสามารถเพิ่มสิ่งต่าง ๆ เช่นการตรวจสอบความถูกต้องหรือการประมวลผลข้อมูลพิเศษอื่น ๆ ที่เกิดขึ้นสำหรับเส้นทาง API ทั้งหมดของคุณเช่นการตรวจสอบชื่อผู้ใช้/รหัสผ่านหรือโทเค็น ตัวเลือกไม่มีที่สิ้นสุดและมีศักยภาพที่ยอดเยี่ยม!
มีตัวอย่างของการใช้กิ่งไม้แทน PHP ดิบในสาขากิ่งไม้!
หนึ่งในคุณสมบัติที่ดีที่ YAMF รองรับคือหน้าเว็บคงที่ที่ไม่ต้องการ route หรือ controller หากคุณต้องการ /about กับเพียงแค่หน้าง่าย ๆ ให้โยนหน้า about.php ใน views/static/ โฟลเดอร์และ - BAM! - /about ผลงานบนเว็บไซต์ของคุณ แล้วโฟลเดอร์ย่อยชอบ /blog/post-name ล่ะ? ใช้งานได้เช่นกัน! เพิ่ม views/static/blog/post-name.php และใช้งานได้ (TM)! คุณสามารถใช้สิ่งนี้เพื่อยังคงมี URL ที่สวยบนเว็บไซต์ของคุณโดยไม่ต้องกังวลกับการเพิ่มเส้นทางและตัวควบคุม
คุณสามารถกำหนดค่าตำแหน่งมุมมองแบบคงที่ใน config.php
โปรดทราบว่าเราเตอร์พยายามที่จะจับคู่เส้นทาง router.php ก่อนที่จะตรวจสอบหน้าคงที่
คุณสมบัติที่เราเตอร์รองรับที่ไม่ได้เปิดใช้งานทันทีคือการลด URL ให้สั้นลง-เช่น https://example.com/short-url ต้องใช้การเชื่อมต่อฐานข้อมูล แต่ถ้าคุณเพิ่มการเชื่อมต่อฐานข้อมูลและมีตารางฐานข้อมูลที่เหมาะสม (สคีมาอยู่ใน config.sample.php ) สามารถใช้การย่อ URL ได้หากคุณต้องการ คุณไม่จำเป็นต้องเปิดใช้งานคุณสมบัตินี้
ฉันได้รวมตรรกะเซสชันเริ่มต้นความคิดเห็นใน config.sample.php อย่าลังเลที่จะใช้มันปรับเปลี่ยนหรือโยนมันออกไป หากคุณมีคำแนะนำเกี่ยวกับวิธีการปรับปรุงฟังก์ชั่นนี้โปรดเปิดคำขอดึงหรือปัญหาเพื่อสร้างการสนทนาเพิ่มเติม
ดีใจที่ถาม! มีสิ่งต่าง ๆ ที่สามารถทำได้ในโครงการโอเพนซอร์ซ: แก้ไขข้อบกพร่องคุณสมบัติใหม่และอื่น ๆ อีกมากมาย! ตรวจสอบแท็บปัญหาของที่เก็บนี้และดูว่ามีการรายงานข้อบกพร่องใดและมีการร้องขอคุณสมบัติใด มีข้อมูลเพิ่มเติมเกี่ยวกับการมีส่วนร่วมในเอกสารที่มีส่วนร่วม
ใบอนุญาต MIT โปรดตรวจสอบให้แน่ใจว่าได้รวมใบอนุญาตสำหรับเฟรมเวิร์กนี้ (พร้อมกับลิงค์ GitHub หากคุณรู้สึกใจกว้าง!) เมื่อใช้งานบนเว็บไซต์ของคุณ ขอบคุณ! -
ขอขอบคุณเป็นพิเศษสำหรับ bootswatch สำหรับชุดรูปแบบกระดาษ bootstrap ที่ใช้ในตัวอย่าง