บทช่วยสอนกรอบ PHP MVC

⚡ สรุปอย่างชาญฉลาด

การออกแบบเฟรมเวิร์ก PHP MVC แยกข้อมูลแอปพลิเคชันและตรรกะทางธุรกิจออกจากส่วนนำเสนอ โดยใช้โมเดล วิว และคอนโทรลเลอร์ CodeIgniter ทำให้รูปแบบนี้ใช้งานได้จริง ช่วยให้นักพัฒนา PHP สร้างเว็บแอปพลิเคชันที่ปลอดภัยและดูแลรักษาง่ายได้เร็วขึ้น

  • 🧩 รูปแบบ: MVC แบ่งแอปพลิเคชันออกเป็น Model (ข้อมูล), View (การแสดงผล) และ Controller (การจัดการคำขอ) เพื่อให้โค้ดสะอาดตามากขึ้น
  • 🚀 การผลิต: เฟรมเวิร์กมีไลบรารีสำเร็จรูปสำหรับการเข้าถึงฐานข้อมูล การตรวจสอบความถูกต้อง และการกรองข้อมูลขาเข้า ทำให้ทีมสามารถส่งมอบฟีเจอร์ต่างๆ ได้เร็วขึ้น
  • 🛠️ ตัวเลือก: CodeIgniter, CakePHP และ Laminas (เดิมชื่อ Zend) ยังคงเป็นตัวเลือกที่ใช้งานอยู่ ในขณะที่ Kohana ถูกยกเลิกไปในปี 2017
  • 🗄️ รุ่น: In CodeIgniter ใช้โมเดลที่ขยายจาก CI_Model และใช้วิธีการของ Query Builder เพื่อการดำเนินการกับฐานข้อมูลอย่างปลอดภัย
  • 🎮 ควบคุม: Controllers สืบทอดมาจาก CI_Controller โดยจะอ่านข้อมูลที่ผู้ใช้ป้อนผ่านคลาส input และโหลดมุมมองที่ถูกต้อง
  • 📈 ผลกระทบ: การแปลงแอปพลิเคชันโพลล์ PHP แบบธรรมดาให้เข้ากับโครงสร้าง MVC แสดงให้เห็นว่าโครงสร้าง MVC ช่วยลดการทำงานซ้ำซ้อนและทำให้การบำรุงรักษาในระยะยาวง่ายขึ้นได้อย่างไร

เฟรมเวิร์ก PHP MVC

กรอบงาน PHP MVC คืออะไร?

PHP MVC เป็นรูปแบบการออกแบบแอปพลิเคชันที่แยกข้อมูลแอปพลิเคชันและตรรกะทางธุรกิจ (โมเดล) ออกจากการนำเสนอ (มุมมอง) MVC ย่อมาจาก Model, View & Controller

ตัวควบคุมจะทำหน้าที่เป็นสื่อกลางระหว่างโมเดลและมุมมอง

คิดว่ารูปแบบการออกแบบ MVC เป็นรถยนต์และเป็นคนขับ

รถยนต์มีกระจกหน้ารถ (สำหรับการมองเห็น) ซึ่งคนขับ (ผู้ควบคุม) ใช้ในการตรวจสอบสภาพการจราจรข้างหน้า จากนั้นจึงเร่งความเร็วหรือเบรก (ตามแบบจำลอง) ขึ้นอยู่กับสิ่งที่เขาเห็นข้างหน้า

ต่อไป เรามาดูกันว่าทำไมเฟรมเวิร์กที่สร้างขึ้นบนรูปแบบนี้จึงคุ้มค่าแก่การใช้งาน

เหตุใดจึงต้องใช้ PHP MVC Framework?

เฟรมเวิร์ก PHP MVC ช่วยให้การทำงานกับเทคโนโลยีที่ซับซ้อนง่ายขึ้นโดย:

  • ซ่อนรายละเอียดการใช้งานที่ซับซ้อนทั้งหมด
  • จัดเตรียมวิธีการมาตรฐานที่เราสามารถใช้ในการสร้างแอปพลิเคชันของเรา
  • ช่วยเพิ่มประสิทธิภาพการทำงานของนักพัฒนา เนื่องจากฟังก์ชันพื้นฐานต่างๆ เช่น การเชื่อมต่อกับฐานข้อมูลและการตรวจสอบความถูกต้องของข้อมูลที่ผู้ใช้ป้อนเข้ามา ได้ถูกพัฒนาไว้แล้วบางส่วน
  • ส่งเสริมการปฏิบัติตามมาตรฐานการเขียนโค้ดอย่างมืออาชีพ

รูปแบบการออกแบบ PHP MVC

ตอนนี้เรามาพูดคุยกันสั้น ๆ เกี่ยวกับแต่ละองค์ประกอบของรูปแบบการออกแบบ MVC

รุ่น – ส่วนนี้เกี่ยวข้องกับตรรกะทางธุรกิจและข้อมูลแอปพลิเคชัน สามารถใช้ในการตรวจสอบข้อมูล ประมวลผลข้อมูล และจัดเก็บข้อมูลได้ ข้อมูลสามารถมาจาก;

  • ไฟล์แบน
  • ฐานข้อมูล
  • เอกสาร XML
  • แหล่งข้อมูลที่ถูกต้องอื่นๆ

ตัวควบคุม – ส่วนนี้เป็นส่วนที่จัดการคำขอของผู้ใช้ในการขอทรัพยากรจากเซิร์ฟเวอร์

ตัวอย่างเช่น เมื่อผู้ใช้ร้องขอ URL …/index.php?products=listตัวควบคุมจะโหลดโมเดลผลิตภัณฑ์เพื่อดึงข้อมูลผลิตภัณฑ์ จากนั้นแสดงผลลัพธ์ในมุมมองรายการ

โดยสรุป คอนโทรลเลอร์จะเชื่อมโยงโมเดลและมุมมองเข้าด้วยกัน ขึ้นอยู่กับทรัพยากรที่ร้องขอ

เข้าชม – ส่วนนี้เกี่ยวกับการนำเสนอข้อมูลแก่ผู้ใช้ ซึ่งโดยปกติจะอยู่ในรูปแบบของหน้าเว็บ HTML

ประเภทของเฟรมเวิร์ก PHP MVC

การเลือกเฟรมเวิร์ก PHP ที่ดีที่สุดถือเป็นความท้าทาย

คุณไม่จำเป็นต้องเขียนเฟรมเวิร์กของคุณเองเพื่อรับประโยชน์จากข้อดีของ MVC

คุณควรพยายามสร้างการออกแบบแอปพลิเคชันที่เกี่ยวข้องกับ MVC ของคุณเองเพื่อทำความเข้าใจวิธีการทำงานของกรอบงาน MVC

เมื่อคุณพอใจกับวิธีการทำงานของกรอบงาน MVC แล้ว คุณควรก้าวไปสู่กรอบงานที่สมบูรณ์และผ่านการทดสอบแล้ว

ตารางด้านล่างนี้อธิบายโดยย่อเกี่ยวกับเฟรมเวิร์ก PHP ยอดนิยมบางส่วนและคุณสมบัติที่แต่ละเฟรมเวิร์กนำเสนอ

กรอบ Descriptไอออน

Codeเครื่องทำให้ลุกไหม้


Codeเครื่องทำให้ลุกไหม้


https://codeigniter.com/

เป็นหนึ่งในเฟรมเวิร์ก PHP MVC ที่ได้รับความนิยมมากที่สุด ปัจจุบันอยู่ในเวอร์ชันหลักที่สี่แล้ว (CodeIgniter 4) เป็นไลบรารีที่มีน้ำหนักเบาและเรียนรู้ได้เร็ว มีไลบรารีมากมายที่ช่วยสร้างเว็บไซต์และแอปพลิเคชันได้อย่างรวดเร็ว ผู้ใช้ที่มีความรู้ด้านการเขียนโปรแกรมเชิงวัตถุ (OOP) จำกัดก็สามารถใช้งานได้ แอปพลิเคชันที่สร้างด้วย Igniter 4 นั้นมีประสิทธิภาพสูง Codeส่วนประกอบที่จุดประกายไฟ ได้แก่;

  • https://www.pyrocms.com/ (เวอร์ชันแรกๆ; ต่อมา PyroCMS ย้ายไปใช้ Laravel)

โคฮานะ


โคฮานะ


http://kohanaframework.org

เป็นเฟรมเวิร์กแบบ Hierarchical Model View Controller (HMVC) ที่ปลอดภัยและมีน้ำหนักเบา หมายเหตุ Kohana ถูกยุติการพัฒนาอย่างเป็นทางการในปี 2017 โดยเวอร์ชันเสถียรสุดท้ายคือ 3.3.6 (กรกฎาคม 2016) ส่วน Koseven ซึ่งเป็นเวอร์ชันที่พัฒนาต่อยอดจาก Kohana นั้นยังคงใช้โค้ดเบสเดิมอยู่ บริษัทที่เคยใช้ Kohana ได้แก่;


CakePHP


CakePHP


www.cakephp.org

มันถูกสร้างขึ้นโดยอิงตาม Ruby on Rails และยังคงได้รับการดูแลรักษาอย่างต่อเนื่อง (เวอร์ชัน 5.x) เป็นที่รู้จักในด้านแนวคิดต่างๆ เช่น รูปแบบการออกแบบซอฟต์แวร์, การใช้ข้อตกลงแทนการกำหนดค่า, ActiveRecord เป็นต้น CakePHP แอพพลิเคชั่นที่ขับเคลื่อนได้แก่;


Zend

https://getlaminas.org/


Zend (ปัจจุบันคือ Laminas)

มันเป็นกรอบการทำงานที่ทรงพลังนั่นคือ

  • ปลอดภัย เชื่อถือได้ รวดเร็ว และปรับขนาดได้
  • รองรับการสร้างเว็บเซอร์วิสและ API

เหมาะอย่างยิ่งสำหรับการพัฒนาping แอปพลิเคชันทางธุรกิจ ในปี 2020 Zend Framework ได้เปลี่ยนไปใช้ Laminas Project ซึ่งเป็นโอเพนซอร์ส แอปพลิเคชันที่ใช้ Zend/Laminas ได้แก่:

  • พิมคอร์ ซีเอ็มเอส,
  • ดอทเคอร์เนล.

บริษัทต่างๆ ที่ใช้กรอบการทำงาน Zend ได้แก่:

  • บีบีซี
  • Cisco
  • Webex
  • Offers.com

เฟรมเวิร์ก PHP MVC เทียบกับ PHP ธรรมดา: ความแตกต่างที่สำคัญ

เฟรมเวิร์กเปลี่ยนแปลงอะไรในทางปฏิบัติบ้าง? PHP แบบธรรมดาให้คุณมีอิสระอย่างเต็มที่ แต่สุดท้ายแล้วทุกโปรเจ็กต์ก็ต้องสร้างระบบการกำหนดเส้นทาง การตรวจสอบความถูกต้อง และการเข้าถึงฐานข้อมูลขึ้นมาใหม่ทั้งหมด เฟรมเวิร์ก PHP MVC จะทำให้งานที่ซ้ำซากเหล่านี้เป็นมาตรฐาน ทำให้โค้ดของคุณมีความสม่ำเสมอในทุกโปรเจ็กต์และทุกทีม

แง่มุม PHP ธรรมดา เฟรมเวิร์ก PHP MVC
Code organizacja การผสมผสาน HTML, SQL และตรรกะไว้ในไฟล์เดียว แบ่งออกเป็นโมเดล มุมมอง และตัวควบคุม
การเข้าถึงฐานข้อมูล คำถามที่เขียนด้วยลายมือในทุกหน้า ตัวสร้างแบบสอบถามในตัวหรือ ORM ที่มีการผูกพารามิเตอร์
⁠ความปลอดภัย นักพัฒนาต้องไม่ลืมมาตรการป้องกันทุกอย่าง รวมถึงการกรองข้อมูลขาเข้า การป้องกัน XSS และ CSRF
ซ่อมบำรุง การเปลี่ยนแปลงต่างๆ ส่งผลกระทบต่อไฟล์ต่างๆ อย่างคาดเดาไม่ได้ แต่ละชั้นสามารถเปลี่ยนแปลงได้อย่างอิสระ

💡 เคล็ดลับ: สร้างโปรเจ็กต์ PHP ขนาดเล็กธรรมดาๆ ขึ้นมาก่อน เช่นแบบสำรวจความคิดเห็นด้านล่าง ความยุ่งยากของการเขียนโค้ดแบบผสมจะทำให้เห็นคุณค่าของการแยกส่วน MVC อย่างชัดเจน

การย้ายแอปพลิเคชันสำรวจความคิดเห็นไปยัง Codeเครื่องทำให้ลุกไหม้

ในการนี​​้ เกี่ยวกับการสอนเราได้สร้างแอปพลิเคชันโพลล์ด้วย PHP และต่อไปนี้เราจะแปลงโค้ดนั้นไปใช้กับ... Codeเครื่องทำให้ลุกไหม้

  • ดาวน์โหลด รุ่นล่าสุดของ Codeจุดประกายจากพวกเขา เว็บไซต์.
  • Extracคัดลอกเนื้อหาของไฟล์ซิปไปยังไดเร็กทอรีการพัฒนาของคุณในไดเร็กทอรีเว็บเซิร์ฟเวอร์ ในบทเรียนนี้เราจะใช้ชื่อโฟลเดอร์ว่า ciopinionpoll
  • เรียกดูไฟล์ URL http://localhost/ciopinionpoll/

Codeหน้าต้อนรับของ Igniter จะแสดงหลังจาก extracการกำหนดกรอบ

การขอ Codeหน้าต้อนรับของ Igniter ด้านบนยืนยันว่าเฟรมเวิร์กได้รับการติดตั้งอย่างถูกต้องแล้ว ตอนนี้เราจะทำการย้ายแอปพลิเคชันแบบสำรวจความคิดเห็นของเราไปยัง Igniter Codeตัวจุดประกาย โปรดจำไว้ว่าแอปพลิเคชันของเราแบ่งออกเป็นสามส่วนหลัก ได้แก่;

  • ตัวควบคุมด้านหน้า – นี่คือส่วนที่ตอบสนองต่อ URL ส่งคำขอและส่งคืนหน้าเว็บที่ร้องขอ โค้ดนี้จะอยู่ในคอนโทรลเลอร์
  • โมเดล – นี่คือโค้ดที่ตอบสนองต่อคำขอข้อมูลและส่งคืนข้อมูลที่ร้องขอ โค้ดนี้จะอยู่ในส่วนของโมเดล
  • มุมมอง – นี่คือโค้ดที่รับผิดชอบในการจัดรูปแบบและการแสดงข้อมูล รหัสนี้จะเข้าสู่มุมมอง

การตั้งค่าการกำหนดค่าฐานข้อมูล

วิธีการตั้งค่าการเชื่อมต่อฐานข้อมูล:

  • เข้าไปที่โฟลเดอร์ ciopinionpoll
  • เปิด ฐานข้อมูล.php ไฟล์ดังกล่าวอยู่ในไดเร็กทอรี application/config
  • ค้นหาบรรทัดโค้ดต่อไปนี้

การตั้งค่าการกำหนดค่าฐานข้อมูลใน Codeไฟล์ database.php ของ Igniter

  • ตั้งชื่อผู้ใช้เป็นรูท
  • ตั้งรหัสผ่านเป็นรหัสผ่าน root ของ localhost ของคุณ
  • ตั้งชื่อฐานข้อมูลเป็น opinion_poll โปรดทราบว่าเราจะใช้ฐานข้อมูลที่สร้างไว้ในบทเรียนก่อนหน้านี้
  • บันทึกการเปลี่ยนแปลงและปิดไฟล์

การสร้างแบบจำลองของเรา

ต่อไปเราจะสร้างโมเดลของเราที่จะขยายโมเดล CI_Model CI_Model เป็นส่วนหนึ่งของ... Codeไลบรารี Igniter โมเดลจะอยู่ในโฟลเดอร์ application/models comment_poll_model.php

<?php
class Opinion_poll_model extends CI_Model
{
    public function __construct()
    {
        parent::__construct();
        $this->load->database();
    }

    public function total_votes()
    {
        $query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries');
        return $query->row()->choices_count;
    }

    public function get_results()
    {
        $libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow");
        $table_rows = '';

        for ($i = 1; $i < 5; $i++)
        {
            $query = $this->db->select('COUNT(choice) as choices_count')
                              ->where('choice', $i)
                              ->get('js_libraries');

            $table_rows .= "<tr><td>" . $libraries[$i] . " Got:</td><td><b>" . $query->row()->choices_count . "</b> votes</td></tr>";
        }

        return $table_rows;
    }

    public function add_vote($choice)
    {
        $ts = date("Y-m-d H:i:s");
        $data = array('choice' => $choice, 'ts' => $ts);
        $this->db->insert('js_libraries', $data);
    }
}
?>

ที่นี่

  • “class Opinion_poll_model ขยาย CI_Model…” เป็นโมเดลของเราที่ขยาย CI_Model
  • “parent::__construct();” เรียกใช้คอนสตรัคเตอร์ของ CI_Model
  • “$นี่->โหลด->ฐานข้อมูล();” โหลดไลบรารีฐานข้อมูลเพื่อให้แอปพลิเคชันของเราสามารถโต้ตอบกับฐานข้อมูลได้
  • “$this->db->” คือ Codeประวัติการทำงานของ Igniter ตรวจสอบได้ที่นี่ ลิงค์ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับบันทึกที่ใช้งานอยู่

การสร้างคอนโทรลเลอร์ของเรา

ตอนนี้เรามาสร้างคอนโทรลเลอร์กัน เราจะใช้ค่าเริ่มต้น Codeตัวควบคุม Igniter อยู่ในไฟล์ application/controllers/welcome.php แทนที่โค้ดต้นฉบับด้วยโค้ดต่อไปนี้

<?php

if (!defined('BASEPATH'))  exit('No direct script access allowed');

class Welcome extends CI_Controller {

    public function __construct() {

        parent::__construct();

        $this->load->model('opinion_poll_model');

    }

    public function index() {

        if ($this->input->post('submitbutton') && !$this->input->post('vote')) {

            echo "<script>alert('You did not vote!');</script>";

        }

        if ($this->input->post('vote')) {

            $this->opinion_poll_model->add_vote($this->input->post('vote'));

            $data['total_votes'] = $this->opinion_poll_model->total_votes();

            $data['rows'] = $this->opinion_poll_model->get_results();

            $this->load->view('results', $data);

        } else {

            $this->load->view('opinion_poll_form');

        }

    }

}

/* End of file welcome.php */

/* Location: ./application/controllers/welcome.php */
?>

ที่นี่

  • “ถ้า (!กำหนด('BASEPATH')) exit('ไม่อนุญาตให้เข้าถึงสคริปต์โดยตรง');” ตรวจสอบให้แน่ใจว่าผู้ใช้ไม่ได้เข้าถึงคลาสคอนโทรลเลอร์โดยตรง
  • “ยินดีต้อนรับคลาสขยาย CI_Controller…” คอนโทรลเลอร์ของเราขยายคลาส CI_Controller
  • “public function __construct()” เรียกเมธอด constructor ของคลาส CI_Controller และโหลดโมเดล Opinion_poll_model ของเรา
  • “public function index()…” คือฟังก์ชันที่เชื่อมโยงกับไฟล์ index.php โดยใช้ Codeคลาส input ของ Igniter ใช้สำหรับตรวจสอบว่ามีการส่งคะแนนโหวตแล้วหรือไม่ หากใช่ จะเพิ่มข้อมูลลงในฐานข้อมูล จากนั้นจึงแสดงผลลัพธ์ ถ้าอาร์เรย์ post ของคลาส input ว่างเปล่า ระบบจะโหลดหน้าโหวต
  • “$this->input->post('…')” คือ Codeคลาสอินพุตของ Igniter ที่ดึงค่าจากตัวแปรส่วนกลาง $_POST
  • “$this->opinion_poll_model->add_vote($this->input->post('vote'))” เรียกเมธอด add_vote ของโมเดลเพื่อเพิ่มการโหวตลงในฐานข้อมูล

การสร้างมุมมองของเรา

จากตัวอย่างก่อนหน้านี้ เราได้สร้างหน้า HTML สองหน้า หน้าหนึ่งสำหรับลงคะแนน และอีกหน้าหนึ่งสำหรับแสดงผลลัพธ์ เราจะใช้โค้ด HTML เดียวกันนี้ โดยมีการแก้ไขเพียงเล็กน้อย เพื่อสร้างหน้าแสดงผล (views) สร้างไฟล์ต่อไปนี้ในไดเร็กทอรี application/views

opinion_poll_form.php
<html>
<head>
    <title>
        JavaScript Libraries - Opinion Poll
    </title>
</head>

<body>
    <h2>JavaScript Libraries - Opinion Poll</h2>
    <p><b>What is your favorite JavaScript Library?</b></p>
    <form method="POST" action="index.php">
        <p>
            <input type="radio" name="vote" value="1" /> JQuery
            <br />
            <input type="radio" name="vote" value="2" /> MooTools
            <br />
            <input type="radio" name="vote" value="3" /> YUI Library
            <br />
            <input type="radio" name="vote" value="4" /> Glow </p>
        <p>
            <input type="submit" name="submitbutton" value="OK" />
        </p>
    </form>
</body>
</html>

ตอนนี้เรามาสร้างหน้าผลลัพธ์ results.php กันดีกว่า

<html>
    <head>
        <title>JavaScript Libraries - Opinion Poll Results</title>
    </head>
    <body>

        <h2>JavaScript Libraries - Opinion Poll Results</h2>

        <p><b>What is your favorite JavaScript Library?</b></p>

        <p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p>

        <p><table><tr><td>

            <?php print($rows); ?>

        </tr></td></table></p>

        <p><a href="#">Return to voting page</a></p>
</body>
</html>

การทดสอบแอปพลิเคชันของเรา

สมมติว่าไดเร็กทอรีหลักของแอปพลิเคชันของคุณคือ ciopinionpoll ให้เข้าไปที่ http://localhost/ciopinionpoll/

แบบฟอร์มลงคะแนนสำรวจความคิดเห็นที่จัดทำโดย Codeแอปพลิเคชัน Igniter

หน้าลงคะแนนด้านบนมาจากมุมมอง opinion_poll_form ของเรา คลิกตกลงโดยไม่ต้องเลือกตัวเลือกใดๆ แล้วคุณจะเห็นข้อความแจ้งเตือนต่อไปนี้

ข้อความแจ้งเตือนการตรวจสอบจะแสดงขึ้นเมื่อไม่มีการเลือกโหวต

โหวตให้ห้องสมุดที่คุณชื่นชอบ จากนั้นคลิก ตกลง คุณจะเห็นหน้าผลลัพธ์ดังต่อไปนี้

หน้าแสดงผลการสำรวจความคิดเห็นที่แสดงจำนวนคะแนนโหวตต่อ... Javaไลบรารีสคริปต์

สิ่งนี้ยืนยันว่าทั้งสามส่วนทำงานร่วมกัน: ตัวควบคุมรับคะแนนโหวต โมเดลจัดเก็บและนับคะแนน และส่วนแสดงผลแสดงผลรวม

คำถามที่พบบ่อย

HMVC (Hierarchical Model View Controller) จัดระเบียบแอปพลิเคชันเป็นกลุ่มสามส่วนอิสระแบบ MVC ที่สามารถเรียกใช้งานได้ซึ่งกันและกัน เฟรมเวิร์กต่างๆ เช่น โคฮานะ HMVC เป็นที่นิยมเพราะช่วยในการแบ่งแอปพลิเคชันขนาดใหญ่เป็นโมดูลย่อย

ใช่. Laravel ปัจจุบันเป็นเฟรมเวิร์ก PHP MVC ที่ได้รับความนิยมมากที่สุด มันใช้โครงสร้างการแยก Model-View-Controller เช่นเดียวกับที่อธิบายไว้ที่นี่ แต่เพิ่มเครื่องมือต่างๆ เช่น Eloquent ORM และเทมเพลต Blade เข้ามา

ใช่ เครื่องมือเช่น นักบิน GitHub สามารถสร้างโครงสร้างพื้นฐานของโมเดล คอนโทรลเลอร์ และวิวจากข้อความแจ้งเตือนได้ อย่างไรก็ตาม คุณควรตรวจสอบโค้ดที่สร้างขึ้นเพื่อหาปัญหาด้านความปลอดภัย เช่น การแสดงผลที่ไม่ได้รับการหลีกเลี่ยง และการโจมตีด้วย SQL injection

ไม่เลย ผู้ช่วย AI ช่วยให้เขียนโค้ดได้เร็วขึ้น แต่เฟรมเวิร์กยังคงให้โครงสร้างที่ผ่านการทดสอบแล้ว การตั้งค่าความปลอดภัยเริ่มต้น และข้อกำหนดต่างๆ ที่ทำให้แอปพลิเคชันสามารถบำรุงรักษาได้ ทั้งสองอย่างทำงานร่วมกันได้ดีที่สุด

ลำดับ Codeเครื่องทำให้ลุกไหม้ เหมาะสำหรับนักพัฒนาที่มีประสบการณ์ด้านการเขียนโปรแกรมเชิงวัตถุไม่มากนัก ความรู้พื้นฐานเกี่ยวกับคลาส เมธอด และการสืบทอดก็เพียงพอที่จะปฏิบัติตามรูปแบบโมเดลและคอนโทรลเลอร์ได้

สรุปโพสต์นี้ด้วย: