Skip to content

PlusMagi's Blog By Pitt Phunsanit

Plus emotional magic to the knowledge of logic.

  • About’s Pitt
Close Button

PHP: จาก 5 มา 8 ต้องปรับตัวอะไรบ้างPHP: จาก 5 มา 8 ต้องปรับตัวอะไรบ้าง

2022-08-142022-08-14| phunsanitphunsanit| 0 Comment | 07:00

ข้อดีของ PHP 5 คือ ถ้าเขียนตามคำแนะนำในยุคนั้น ๆ update PHP ขึ้นเป็น 1 version, 2 version ได้ไม่ซับซ้อนนัก แต่พอทิ้งมันไปนานใช้แต่ WordPress แล้วมาเขียนเป็น Native PHP 8 ใหม่ ๆ มันก็มีเรื่องที่ควรจะรู้เพิ่ม เพื่อให้เขียนง่ายขึ้น (เขียนแบบเดิมมันก็ได้นะ แต่มันเสียโอกาส)

การก้าวกระโดดจาก PHP 4 – 5 มาสู่ PHP 8 ถือเป็นการเปลี่ยนผ่านจากยุค “Scripting Language” แบบดั้งเดิม ไปสู่ยุค “Modern Enterprise Language” ที่มีความยืดหยุ่น ปลอดภัย และทำงานได้รวดเร็วขึ้นมหาศาลครับ

โค้ดที่เคยเขียนในยุค PHP 4 / 5 หลายอย่างถูกถอดถอนออกไปแล้ว (Deprecated/Removed) สิ่งที่จำเป็นต้องศึกษาเพิ่มสามารถสรุปแบ่งเป็นกลุ่มหลัก ๆ ได้ดังนี้ครับ


Type System & Strict Types (ระบบ Type ที่เข้มงวด)

ในยุค PHP 4/5 ภาษา PHP เป็นแบบ Loose Type มากๆ แต่ใน PHP 8 มีระบบ Type Safety ที่แข็งแกร่งขึ้นมาก ช่วยลด Bug ได้ตั้งแต่ตอนเขียนโค้ด

  • declare(strict_types=1);: การเปิดโหมดบังคับ Type ป้องกันการแปลง Data Type โดยอัตโนมัติแบบผิด ๆ
  • Scalar Type Hinting: การระบุ Type ให้กับ Argument และ Return Value ของ Function (เช่น int, string, float, bool, void)
  • Union Types (PHP 8.0): กำหนดให้รับได้มากกว่าหนึ่ง Type เช่น int|float
  • Intersection Types (PHP 8.1): กำหนดให้ต้องเป็นไปตาม Interface ทั้งคู่ เช่น Iterator&Countable
  • Mixed Type: การระบุ mixed เมื่อตัวแปรนั้นสามารถเป็นอะไรก็ได้จริง ๆ

Modern OOP Features (ฟีเจอร์ Object-Oriented ยุคใหม่)

การเขียน Class ใน PHP 8 สะดวกและกระชับขึ้นกว่ายุค PHP 5 มาก ลดโค้ด Boilerplate ลงไปได้เยอะ

  • Constructor Property Promotion (PHP 8.0): ยุบการประกาศ Property และการ Assign ค่าใน Constructor ให้เหลือบรรทัดเดียว
    // ยุคก่อนต้องประกาศตัวแปรด้านบน แล้วมา assign ใน {}
    // PHP 8+ เขียนแบบนี้ได้เลย:
    public function __construct(
        public string $name,
        private int $age
    ) {}
    
  • Readonly Properties (PHP 8.1) & Readonly Classes (PHP 8.2): กำหนดให้ Property หรือ Class นั้น ๆ ใส่ค่าได้ครั้งเดียวตอนสร้าง Object หลังจากนั้นจะแก้ไขไม่ได้ (Immutable)
  • Enums (PHP 8.1): มีระบบ Enumerations แท้ ๆ ให้ใช้แล้ว ไม่ต้องใช้ class Constants แบบเดิมอีกต่อไป
  • Attributes (PHP 8.0): มาแทนการเขียน Docblock คอมเมนต์ (/ @Annotation */) เพื่อกำหนด Metadata ทำให้ระบบอย่าง Routing หรือ ORM อ่านค่าได้ง่ายขึ้น

New Operators & Syntax Sugar (ไวยากรณ์ใหม่ ๆ ที่ช่วยให้ชีวิตง่ายขึ้น)

ช่วยให้เขียนโค้ดสั้นลง และอ่านง่ายขึ้นอย่างเห็นได้ชัด

  • Nullsafe Operator (?->): บอกลาการครอบ if (is_null(...)) ซ้อนกันหลายชั้น ถ้าตัวแปรข้างหน้าเป็น null มันจะส่งกลับ null ทันทีโดยไม่เกิด Error เช่น $country = $session?->user?->getAddress()?->country;
  • Match Expression (PHP 8.0): ร่างพัฒนาของ switch-case ที่ทำงานแบบ Strict Comparison (===), ส่งค่ากลับ (Return Value) ได้เลย และไม่ต้องเขียน break;
  • Named Arguments (PHP 8.0): ส่ง Parameter เข้า Function โดยระบุชื่อตัวแปรได้เลย ไม่จำเป็นต้องเรียงตามลำดับ เช่น setcookie(name: 'test', expires: time() + 3600);
  • Null Coalescing Operator (??): (เริ่มมีตั้งแต่ PHP 7 แต่จำเป็นมาก) ใช้เช็คค่า isset() และกำหนด Default Value ในตัว เช่น $username = $_GET['user'] ?? 'anonymous';

Error Handling & Performance (การจัดการ Error และประสิทธิภาพ)

  • Internal Errors as Exceptions: ใน PHP 8 ฟังก์ชันภายในระบบส่วนใหญ่จะ Throw Exception หรือ Error ออกมาแทนที่จะพ่นแค่ Notice หรือ Warning แล้วปล่อยให้สคริปต์รันต่อ ทำให้ต้องปรับแนวคิดมาใช้ try-catch ครอบจุดสำคัญ
  • JIT (Just-In-Time) Compilation: ฟีเจอร์เด่นของ PHP 8 ที่ช่วยคอมไพล์โค้ดเป็น Machine Code โดยตรง ช่วยเพิ่มความเร็วในงานประเภทคํานวณ (CPU-bound tasks)
  • OPcache: ศึกษาการตั้งค่า OPcache เพื่อทำ Preloading โค้ดเข้า Memory (ช่วยให้เว็บเร็วขึ้นมากใน Production)

Ecosystem & Modern Tools (เลิกใช้เครื่องมือยุคเก่า)

ถ้ามาจากยุค PHP 4-5 เครื่องมือรอบตัวเปลี่ยนไปทั้งหมดแล้วครับ

เรื่องยุค PHP 4 – 5 (ที่เลิกใช้แล้ว)ยุค PHP 8 (มาตรฐานปัจจุบัน)
Database Accessmysql_* functions (ลบออกไปแล้ว)PDO หรือ MySQLi (แนะนำ PDO)
Package Managementโหลดไฟล์ .zip มา include เอง / PEARComposer (ต้องศึกษาตัวนี้เป็นอันดับแรกๆ)
Autoloading__autoload()PSR-4 Autoloading ผ่าน Composer
Coding StandardเขียนตามใจชอบPSR-12 / PER Coding Style
Frameworksโค้ดดิ้งแบบดิบ ๆ / CodeIgniter 1.x / JoomlaLaravel หรือ Symfony (เน้นสถาปัตยกรรมแบบ MVC / Dependency Injection)
Web Server Interfacemod_php บน ApacheNginx + PHP-FPM หรือใช้ Server ยุคใหม่อย่าง FrankenPHP (รองรับ HTTP/3)

💡 คำแนะนำสำหรับการเริ่มต้น

  1. ติดตั้ง Composer: สละเวลาศึกษาตัวจัดการ Package ตัวนี้ เพราะเป็นหัวใจของ PHP ยุคใหม่
  2. ปรับพื้นฐาน PDO: ฝึกเขียนต่อฐานข้อมูลแบบ Prepared Statements เพื่อความปลอดภัยจาก SQL Injection
  3. ลองใช้ Framework ยุคใหม่: แนะนำให้ลองจับ Laravel ดูสักโปรเจกต์เล็ก ๆ มันจะบังคับให้เราได้ใช้ฟีเจอร์ใหม่ ๆ ของ PHP 8 ทั้งหมดโดยอัตโนมัติครับ

อ่านเพิ่มเติม

  • PHP: ให้ปลอดภัยและไร้บั๊กด้วย Strict Types
  • Laravel
  • MariaDB: install (MySQL )
Read MoreRead More

Posts pagination

ก่อนหน้า 1 … 406 407 408 … 4,532 ถัดไป

Projects

  • Statement Columns Mapping Helper
  • PlusMagi Blocks
  • PlusMagi Site Search
  • PlusMagi Tags Reindex
  • jQuery Plus Repeater

Recent Posts

  • RustDesk: Remote Desktop
  • CORS
  • GANTZ
  • เดธโน้ต (Death Note)
  • Trivy: ตัวสแกนหาช่องโหว่ความปลอดภัย

Archives

Categories

  • .net core (16)
  • AI (52)
  • business (35)
  • Businesses (33)
  • cd (59)
  • ci (62)
  • culture (2)
  • data (5)
  • Design (161)
    • UX/UI (23)
  • devops (200)
  • devsecops (35)
  • dotnet (58)
  • envoy (2)
  • Histories (23)
  • history (2)
  • ios (4)
  • Life (1,219)
    • Books (62)
    • Cartoon (15)
    • Mindset (41)
    • Movies (36)
    • Philosophy (4)
    • Psychology (3)
    • Sci-Fi (56)
    • Tips and Tricks (67)
    • ปรัชญา (268)
    • พัฒนาตนเอง (883)
    • พุทธ (70)
    • สิ่งแวดล้อม (47)
  • mobile (1)
  • mystery (8)
  • net core (10)
  • Network (356)
    • Apache HTTP Server (19)
    • IOT (24)
    • Nginx (41)
    • Stalwart (6)
  • networking (131)
  • Operating Systems (450)
    • Unix-like (315)
      • Android (25)
        • F-Droid (6)
      • Homebrew (24)
      • iPhone (13)
      • Linux (197)
      • macOS (137)
        • OrbStack (12)
      • Oh My ZSH (4)
      • Shell Script (81)
      • SSH (15)
    • Windows (164)
      • PowerShell (28)
      • WSL (25)
  • Programming (1,728)
    • .NET (70)
      • .NET Core EF (7)
      • C# (62)
    • API (146)
      • REST (54)
      • Swagger (13)
    • Database (412)
      • DBeaver (5)
      • MariaDB (38)
      • MySql (81)
      • Oracle Database (8)
        • 10g (3)
      • PostgreSQL (30)
      • RDBMS (78)
      • SQL Server (91)
        • SSMS (10)
        • T-SQL (30)
      • SQLite (2)
    • PowerBuilder (20)
    • Python (27)
    • Rust (45)
    • System Analyst (SA) (98)
    • Testing (110)
      • Automated Testing (45)
        • Playwright (11)
    • UML (53)
    • Web (911)
      • Backend (590)
        • Golang (2)
        • Java (113)
          • Spring Boot (27)
        • Node.js (12)
        • PHP (281)
          • Laravel (60)
          • Yii (5)
      • Frontend (291)
        • CSS (28)
          • Tailwind CSS (6)
        • JavaScript (230)
          • Angular (4)
          • jQuery (70)
          • Tabulator (28)
          • Vue.js (7)
      • WordPress (28)
  • Programs (113)
    • Excel (20)
  • r (2)
  • science (10)
  • script (3)
  • SecDevOps (201)
    • CI/CD (12)
    • Docker (92)
    • GIT (61)
    • SVN (18)
  • Security (378)
  • sistema (1)
  • social (2)
  • system (376)
  • system analyst (31)
  • technology (927)
  • technologyระบบ (101)
  • technologyและระบบ (3)
  • typescript (10)
  • ui (63)
  • Uncategorized (8)
  • ux (58)
  • กฎหมาย (306)
  • การจัดการ (606)
  • การจัดการข้อมูล (351)
  • การจัดการข้อมูลและองค์ความรู้ (3)
  • การพัฒนาตนเอง (12)
  • การออกแบบ (77)
  • ข้อมูล (2)
  • คณิตศาสตร์ (31)
  • ความคิด (110)
  • ความปลอดภัย (224)
  • จริยธรรม (85)
  • จิตวิทยา (887)
  • ชีวิต (115)
  • ทั่วไป (16)
  • ธุรกิจ (622)
  • บุคคล (35)
  • บุคลากร (10)
  • บุคลิก (88)
  • ประวัติศาสตร์ (39)
  • ปัญญาประดิษฐ์ (28)
  • พฤติกรรม (168)
  • ภาษาศาสตร์คอมพิวเตอร์ (28)
  • ระบบ (359)
  • วัฒนธรรม (52)
  • วิชาการ (87)
  • วิชาการข้อมูล (64)
  • วิทยาการข้อมูล (162)
  • วิทยาการข้อมูลและภาษาศาสตร์คอมพิวเตอร์ (1)
  • วิทยาศาสตร์ (166)
  • วิทยาศาสตร์ข้อมูล (28)
  • สังคม (338)
  • สุขภาพ (210)
  • หนังสือ (2)
  • องค์ความรู้ (187)
  • ออกแบบ (18)
  • เทคโนโลยี (292)
  • เทคโนโลยีระบบ (156)
  • 기술 (1)
  • 사회 (1)
  • 시스템 (1)
  • 철학 (1)

Sirat WordPress Theme By VWThemes

Scroll Up
Go to mobile version