โครงสร้างโฟลเดอร์ CodeIgniter 3 และ 4
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
หลักๆ ก็น่าจะประมาณนี้ครับ