โครงสร้างโฟลเดอร์ CodeIgniter 3 และ 4

Sirichai Teerapattarasakul

Sirichai Teerapattarasakul / November 22, 2024

2 min read

พอดีมีต้องอัพเกรดโปรเจ็คจาก CodeIgniter เวอร์ชั่น 3 ไปเป็น เวอร์ชั่น 4 มาดูความแตกต่างของโครงสร้างโฟลเดอร์ (Directory Structure) กันว่าแต่ละโฟลเดอร์เปลี่ยนแปลงอย่างไรหรือใช้เก็บอะไรบ้างครับ

โครงสร้างของ CodeIgniter 3

project_root/
├── application/
│   ├── cache/
│   ├── config/
│   │   ├── autoload.php
│   │   ├── config.php
│   │   ├── database.php
│   │   ├── routes.php
│   │   └── ...
│   ├── controllers/
│   │   └── Welcome.php
│   ├── core/
│   ├── helpers/
│   ├── hooks/
│   ├── language/
│   ├── libraries/
│   ├── logs/
│   ├── models/
│   ├── third_party/
│   └── views/
├── system/
├── user_guide/
└── index.php

โครงสร้างของ CodeIgniter 4

project_root/
├── app/                     # แทนที่โฟลเดอร์ application/ ของเวอร์ชั้น 3
│   ├── Config/             # Configuration
│   │   ├── App.php
│   │   ├── Autoload.php
│   │   ├── Database.php
│   │   ├── Routes.php
│   │   └── ...
│   ├── Controllers/       # Controllers
│   ├── Database/
│   │   ├── Migrations/   # Database migrations
│   │   └── Seeds/        # Database seeders
│   ├── Filters/           # HTTP filters
│   ├── Helpers/           # Helper functions
│   ├── Language/          # Language files
│   ├── Libraries/         # Custom libraries
│   ├── Models/            # Models
│   ├── ThirdParty/        # Third-party libraries
│   └── Views/             # Views
├── public/                # Web root directory สำหรับเข้าเว็บ (ใหม่ในเวอร์ชั่น 4)
│   ├── index.php
│   ├── assets/
│   │   ├── css/
│   │   ├── js/
│   │   └── images/
│   └── .htaccess
├── system/
├── tests/                 # Testing directory
├── writable/              # แทนที่โฟลเดอร์ application/cache ของเวอร์ชั้น 3
│   ├── cache/
│   ├── logs/
│   └── sessions/
├── composer.json
├── env                   # Environment file
├── spark                 # CLI tool
└── phpunit.xml.dist

สรุปความแตกต่างที่สำคัญ:

โฟลเดอร์หลักของแอปพลิเคชัน

  • เวอร์ชั่น 3: ใช้โฟลเดอร์ application/
  • เวอร์ชั่น 4: เปลี่ยนเป็นโฟลเดอร์ app/

โฟลเดอร์สาธารณะ

  • เวอร์ชั่น 3: ไม่มีโฟลเดอร์สาธารณะโดยเฉพาะ
  • เวอร์ชั่น 4: มีโฟลเดอร์ public/ ใหม่สำหรับไฟล์ที่ต้องการให้เข้าถึงผ่านเว็บได้

การตั้งค่า (Configuration)

  • เวอร์ชั่น 3: เก็บเป็นไฟล์ PHP ใน application/config/
  • เวอร์ชั่น 4: เก็บเป็นคลาส PHP ใน app/Config/

โฟลเดอร์สำหรับไฟล์ที่ต้องเขียนได้

  • เวอร์ชั่น 3: อยู่ภายในโฟลเดอร์ application/ (เช่น cache, logs)
  • เวอร์ชั่น 4: แยกเป็นโฟลเดอร์ writable/ ต่างหาก

ฟีเจอร์ใหม่ใน เวอร์ชั่น 4

  • มีโฟลเดอร์ Database/Migrations/ และ Database/Seeds/ สำหรับจัดการฐานข้อมูล
  • มีโฟลเดอร์ Filters/ สำหรับตัวกรอง HTTP
  • มีโฟลเดอร์ tests/ สำหรับการทดสอบ
  • มีเครื่องมือ CLI ชื่อ spark
  • รองรับไฟล์ Environment (.env)
  • รองรับการใช้งาน Composer

การใช้ตัวพิมพ์ใหญ่-เล็ก

  • เวอร์ชั่น 3: ชื่อโฟลเดอร์ใช้ตัวพิมพ์เล็กทั้งหมด
  • เวอร์ชั่น 4: ใช้ Pascal Case (ตัวพิมพ์ใหญ่ตัวแรก) สำหรับโฟลเดอร์ที่เก็บ Class

หลักๆ ก็น่าจะประมาณนี้ครับ