⊗ppMVDFmCn 28 of 35 menu

ตัวควบคุมใน MVC Framework ของเราใน PHP

ดังที่คุณทราบแล้ว ตัวควบคุมทั้งหมดใน framework ของเรามีเมธอด render ซึ่งจำเป็นต้องเรียกใช้เพื่อส่งข้อมูลไปยัง view เมธอดนี้ถูกสืบทอดโดยตัวควบคุมของผู้ใช้จากคลาสแม่ Controller ที่อยู่ในส่วน core มาเริ่มสร้างคลาสนี้กัน:

<?php namespace Core; class Controller { protected function render($view, $data) { } } ?>

คุณจะเห็นว่า เมธอด render รับพารามิเตอร์เป็นชื่อ view และข้อมูลสำหรับแสดงผล กำหนดให้เมธอดนี้ส่งคืนอ็อบเจ็กต์ของคลาสพิเศษ Page ซึ่งจะมีข้อมูลเกี่ยวกับการแสดงผลของการกระทำ (action) ของตัวควบคุม ในคลาสนี้จะมีชื่อ view, ข้อมูล รวมถึง title ของหน้าและชื่อไฟล์ layout ของเว็บไซต์:

<?php namespace Core; class Page { private $layout; private $title; private $view; private $data; public function __construct($layout, $title, $view, $data) { $this->layout = $layout; $this->title = $title; $this->view = $view; $this->data = $data; } public function __get($property) { return $this->$property; } } ?>

ดังนั้นโค้ดของเมธอด render ของเราจะมีหน้าตาดังนี้:

<?php namespace Core; class Controller { protected $layout = 'default'; protected function render($view, $data) { return new Page($this->layout, $this->title, $view, $data); } } ?>

อธิบายสิ่งที่เกิดขึ้นตรงนี้ ชื่อ view และข้อมูลถูกส่งผ่านมาเป็นพารามิเตอร์ของเมธอด อย่างไรก็ตาม ในตัวควบคุมของผู้ใช้ยังมีการกำหนด title ของหน้าโดยการกำหนดค่าให้กับพร็อพเพอร์ตี้ title ดังนั้นใน $this->title จะมี title ที่เราจะส่งต่อไปยัง constructor ของคลาส Page

นอกจากนี้ยังมีรายละเอียดเกี่ยวกับ layout อย่างที่คุณทราบ Framework ของเราใช้ layout จากไฟล์ default.php อันที่จริงแต่ละ action อาจมี layout อื่นก็ได้ สำหรับสิ่งนี้ ต้องกำหนดชื่อ layout อื่นให้กับพร็อพเพอร์ตี้ layout ใน action นั้นเอง

วิธีการทำเช่นนี้: ตัวควบคุมแม่ของเรามีพร็อพเพอร์ตี้ layout ซึ่งค่าเริ่มต้นคือ 'default.php' นี่จะเป็น layout มาตรฐาน อย่างไรก็ตาม หาก action ของตัวควบคุมผู้ใช้เปลี่ยนแปลงค่าของพร็อพเพอร์ตี้ layout นี้ layout ก็จะเปลี่ยนไปด้วย

คัดลอกโค้ดคลาส Controller ของฉันและวางไว้ในไฟล์ /core/Controller.php

คัดลอกโค้ดคลาส Page ของฉันและวางไว้ในไฟล์ /core/Page.php

ไทย
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣTürkmenTürkçeЎзбекOʻzbekTiếng Việt
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ