PHP hỗ trợ lập trình hướng đối tượng (OOP)

Ngày đăng: 03/07/2024   -    Cập nhật: 04/07/2024

Lập trình hướng đối tượng là một phương pháp lập trình được sử dụng để tổ chức và viết mã theo cách mô phỏng các đối tượng trong thế giới thực. Trong bài viết này, chúng ta sẽ tìm hiểu xem PHP có hỗ trợ lập trình hướng đối tượng hay không và cách sử dụng tính năng này như thế nào.

PHP và lập trình hướng đối tượng


 

PHP là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới và được sử dụng rộng rãi trong việc xây dựng các ứng dụng web. Một trong những tính năng quan trọng của PHP là khả năng hỗ trợ lập trình hướng đối tượng (OOP). 

Khái niệm lập trình hướng đối tượng

Lập trình hướng đối tượng (OOP) là một phương pháp lập trình dựa trên khái niệm về đối tượng, lớp và các tương tác giữa chúng. Các đối tượng là các thực thể trong chương trình, chúng có các thuộc tính (dữ liệu) và phương thức (hành vi). Các lớp là những khuôn mẫu để tạo ra các đối tượng với những thuộc tính và phương thức tương tự.


OOP tập trung vào bốn nguyên lý chính:

  1. Đóng gói (Encapsulation): đóng gói dữ liệu và phương thức xử lý dữ liệu đó trong một đối tượng, giúp đảm bảo tính toàn vẹn và bảo mật của dữ liệu.
  2. Kế thừa (Inheritance): cho phép một lớp kế thừa các thuộc tính và phương thức từ một lớp khác, giúp tái sử dụng mã hiệu quả.
  3. Đa hình (Polymorphism): cho phép các đối tượng khác nhau phản hồi theo cách khác nhau với cùng một thông điệp hoặc phương thức.
  4. Trừu tượng (Abstraction): cho phép tạo ra các lớp trừu tượng, chỉ định giao diện và trì hoãn việc triển khai chi tiết cho các lớp con.

PHP hỗ trợ lập trình hướng đối tượng

PHP là một ngôn ngữ hướng đối tượng hoàn chỉnh, hỗ trợ tất cả các tính năng của OOP. Từ phiên bản PHP 5 trở đi, OOP đã trở thành một phần quan trọng của PHP. PHP cung cấp các khái niệm OOP như lớp, đối tượng, kế thừa, đa hình, trừu tượng và giao diện.

Tính năng hỗ trợ lập trình hướng đối tượng trong PHP

Lớp và đối tượng

Trong PHP, bạn có thể định nghĩa một lớp bằng cách sử dụng từ khóa class. Một lớp chứa các thuộc tính (biến) và phương thức (hàm). Bạn có thể tạo một đối tượng từ lớp đó bằng cách sử dụng từ khóa new.


class NhanVien {

    public $ten;

    public $tuoi;

    public $chucVu;


    public function thongTin() {

        echo "Tên: " . $this->ten . "<br>";

        echo "Tuổi: " . $this->tuoi . "<br>";

        echo "Chức vụ: " . $this->chucVu . "<br>";

    }

}


$nhanVien1 = new NhanVien();

$nhanVien1->ten = "Nguyễn Văn A";

$nhanVien1->tuoi = 30;

$nhanVien1->chucVu = "Nhân viên";

$nhanVien1->thongTin();

Kế thừa

Trong PHP, bạn có thể tạo một lớp con kế thừa từ một lớp cha bằng cách sử dụng từ khóa extends. Lớp con sẽ kế thừa tất cả các thuộc tính và phương thức của lớp cha, và cũng có thể thêm các thuộc tính và phương thức mới của riêng nó.


class NhanVienVanPhong extends NhanVien {

    public $phongBan;


    public function thongTinChiTiet() {

        $this->thongTin();

        echo "Phòng ban: " . $this->phongBan . "<br>";

    }

}


$nhanVienVanPhong1 = new NhanVienVanPhong();

$nhanVienVanPhong1->ten = "Nguyễn Văn B";

$nhanVienVanPhong1->tuoi = 35;

$nhanVienVanPhong1->chucVu = "Nhân viên văn phòng";

$nhanVienVanPhong1->phongBan = "Hành chính";

$nhanVienVanPhong1->thongTinChiTiet();

Đa hình

Đa hình trong PHP được thực hiện thông qua ghi đè phương thức (method overriding) và khái niệm giao diện (interface).


class NhanVienSanXuat extends NhanVien {

    public function thongTin() {

        echo "Tên: " . $this->ten . "<br>";

        echo "Tuổi: " . $this->tuoi . "<br>";

        echo "Chức vụ: " . $this->chucVu . " (Nhân viên sản xuất)" . "<br>";

    }

}


$nhanVienSanXuat1 = new NhanVienSanXuat();

$nhanVienSanXuat1->ten = "Nguyễn Văn C";

$nhanVienSanXuat1->tuoi = 40;

$nhanVienSanXuat1->chucVu = "Nhân viên";

$nhanVienSanXuat1->thongTin();

Trừu tượng và giao diện

Trong PHP, bạn có thể sử dụng lớp trừu tượng (abstract class) và giao diện (interface) để định nghĩa các giao diện chung và buộc các lớp con phải triển khai các phương thức nhất định.


abstract class NhanVienAbstract {

    public $ten;

    public $tuoi;

    public $chucVu;


    abstract public function thongTin();

}


class NhanVienKinhDoanh extends NhanVienAbstract {

    public $doanhSo;


    public function thongTin() {

        echo "Tên: " . $this->ten . "<br>";

        echo "Tuổi: " . $this->tuoi . "<br>";

        echo "Chức vụ: " . $this->chucVu . " (Nhân viên kinh doanh)" . "<br>";

        echo "Doanh số: " . $this->doanhSo . "<br>";

    }

}


$nhanVienKinhDoanh1 = new NhanVienKinhDoanh();

$nhanVienKinhDoanh1->ten = "Nguyễn Văn D";

$nhanVienKinhDoanh1->tuoi = 45;

$nhanVienKinhDoanh1->chucVu = "Nhân viên";

$nhanVienKinhDoanh1->doanhSo = 1000000000;

$nhanVienKinhDoanh1->thongTin();

Các ví dụ minh họa về lập trình hướng đối tượng trong PHP

Ví dụ 1: Quản lý sinh viên

Trong ví dụ này, chúng ta sẽ xây dựng một hệ thống đơn giản để quản lý thông tin sinh viên sử dụng lập trình hướng đối tượng.


Lớp SinhVien

class SinhVien {

    public $maSinhVien;

    public $hoTen;

    public $ngaySinh;

    public $diemTrungBinh;


    public function __construct($maSinhVien, $hoTen, $ngaySinh, $diemTrungBinh) {

        $this->maSinhVien = $m aSinhVien;

        $this->hoTen = $hoTen;

        $this->ngaySinh = $ngaySinh;

        $this->diemTrungBinh = $diemTrungBinh;

    }


    public function hienThiThongTin() {

        echo "Mã sinh viên: " . $this->maSinhVien . "<br>";

        echo "Họ tên: " . $this->hoTen . "<br>";

        echo "Ngày sinh: " . $this->ngaySinh . "<br>";

        echo "Điểm trung bình: " . $this->diemTrungBinh . "<br>";

    }

}



####  Lớp QuanLySinhVien

php class QuanLySinhVien {

private $danhSachSinhVien = array();

public function themSinhVien($sinhVien) {

    $this->danhSachSinhVien[] = $sinhVien;

}

public function hienThiDanhSachSinhVien() {

    foreach ($this->danhSachSinhVien as $sinhVien) {

        $sinhVien->hienThiThongTin();

        echo "<br>";

    }

}

}



####  Sử dụng lớp

php $sinhVien1 = new SinhVien("SV001", "Nguyễn Văn A", "1995-05-15", 8.5); $sinhVien2 = new SinhVien("SV002", "Trần Thị B", "1997-02-20", 7.8);

$quanLySinhVien = new QuanLySinhVien(); $quanLySinhVien->themSinhVien($sinhVien1); $quanLySinhVien->themSinhVien($sinhVien2);


echo "Danh sách sinh viên:<br>"; $quanLySinhVien->hienThiDanhSachSinhVien();

Ví dụ 2: Quản lý nhân viên

Trong ví dụ này, chúng ta sẽ xây dựng một hệ thống đơn giản để quản lý thông tin nhân viên sử dụng lập trình hướng đối tượng, bao gồm kế thừa và đa hình.


####  Lớp NhanVien

php abstract class NhanVien {

protected $maNhanVien;

protected $hoTen;

protected $ngayVaoLam;

protected $luongCoBan;

public function __construct($maNhanVien, $hoTen, $ngayVaoLam, $luongCoBan) {

    $this->maNhanVien = $maNhanVien;

    $this->hoTen = $hoTen;

    $this->ngayVaoLam = $ngayVaoLam;

    $this->luongCoBan = $luongCoBan;

}

public function hienThiThongTin() {

    echo "Mã nhân viên: " . $this->maNhanVien . "<br>";

    echo "Họ tên: " . $this->hoTen . "<br>";

    echo "Ngày vào làm: " . $this->ngayVaoLam . "<br>";

}

abstract public function tinhLuong();

}

Lớp NhanVienVanPhong

class NhanVienVanPhong extends NhanVien {

    private $phuCapVanPhong;


    public function __construct($maNhanVien, $hoTen, $ngayVaoLam, $luongCoBan, $phuCapVanPhong) {

        parent::__construct($maNhanVien, $hoTen, $ngayVaoLam, $luongCoBan);

        $this->phuCapVanPhong = $phuCapVanPhong;

    }


    public function tinhLuong() {

        return $this->luongCoBan + $this->phuCapVanPhong;

    }


    public function hienThiThongTin() {

        parent::hienThiThongTin();

        echo "Lương: " . $this->tinhLuong() . "<br>";

    }

}



####  Lớp NhanVienSanXuat

php class NhanVienSanXuat extends NhanVien {

private $soSanPhamLam;

private $donGiaSanPham;

public function __construct($maNhanVien, $hoTen, $ngayVaoLam, $luongCoBan, $soSanPhamLam, $donGiaSanPham) {

    parent::__construct($maNhanVien, $hoTen, $ngayVaoLam, $luongCoBan);

    $this->soSanPhamLam = $soSanPhamLam;

    $this->donGiaSanPham = $donGiaSanPham;

}

public function tinhLuong() {

    return $this->luongCoBan + ($this->soSanPhamLam * $this->donGiaSanPham);

}

public function hienThiThongTin() {

    parent::hienThiThongTin();

    echo "Lương: " . $this->tinhLuong() . "<br>";

}

}

Sử dụng lớp

$nhanVienVanPhong = new NhanVienVanPhong("NV001", "Nguyễn Văn A", "2015-01-01", 5000000, 1000000);

$nhanVienSanXuat = new NhanVienSanXuat("NV002", "Trần Thị B", "2018-03-15", 4000000, 100, 50000);


echo "Thông tin nhân viên văn phòng:<br>";

$nhanVienVanPhong->hienThiThongTin();

echo "<br>";


echo "Thông tin nhân viên sản xuất:<br>";

$nhanVienSanXuat->hienThiThongTin();

Trong ví dụ này, chúng ta đã tạo một lớp trừu tượng NhanVien và hai lớp con NhanVienVanPhong và NhanVienSanXuat kế thừa từ lớp NhanVien. Mỗi lớp con triển khai phương thức tinhLuong() theo cách riêng của mình, minh họa cho tính đa hình.


Kết luận: PHP hoàn toàn hỗ trợ lập trình hướng đối tượng (OOP) với đầy đủ các tính năng như lớp, đối tượng, kế thừa, đa hình, trừu tượng và giao diện. Sử dụng OOP trong PHP giúp tổ chức mã nguồn một cách có hệ thống, dễ dàng bảo trì và mở rộng. Với PHP, bạn có thể tận dụng triệt để các lợi ích của lập trình hướng đối tượng để xây dựng các ứng dụng web mạnh mẽ, dễ mở rộng và bảo trì.


Bình luận Facebook
Khóa học liên quan đến bài viết

KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS

56 giờ
Học Lập trình Front end hiện đại với ReactJS. Học làm chủ HTML, CSS, JS và thư viện JavaScript phổ biến nhất hiện nay. Sẵn sàng đi thực tập / đi làm ngay sau khóa học.

LẬP TRÌNH JAVA WEB VỚI FRAME WORK

40 giờ
Khóa học Lập trình JAVA Web với Framework giúp học viên nắm vững các kiến thức hiện nay như: JSF, Hibernate, Spring Boot. Sử dụng tốt một Framework rất nổi tiếng hiện nay là Spring Boot ... Biết cách kết hợp giữa Spring Boot với các công nghệ khác như: JPA, Hibernate, Restful WebServices.

Lập trình Web với Django

30
Khóa học giúp học viên sử dụng thành thạo ngôn ngữ Lập trình Python (3x). Hiểu và phát triển được Ứng dụng Web với Django Framework. Học thực hành với Giảng viên cao cấp.

Khóa học PHP Full stack [2023] cho người mới bắt đầu

96 giờ
Khóa học Lập trình PHP Full stack, phiên bản cập nhật lần thứ 8. Dạy Lập trình PHP bài bản từ Front end đến Back end + Laravel. Hướng dẫn làm 2 Dự Án Web lớn

KHÓA HỌC LẬP TRÌNH PHP WEB

54 giờ
NIIT - ICT Hà Nội cung cấp Khóa học Lập trình Web Fullstack với PHP, phiên bản cập nhật lần thứ 5 (T8/2019). Dạy Lập trình PHP bài bản, chi tiết (từ Front-end đến Back-end)

Khóa học Lập trình Game Unity

40 giờ
Nắm vững các kiến thức C# hướng đối tượng, Có khả năng xây dựng và phát tiển các ý tường game của bản thân. Hiểu được những khái niệm và các vận hành của các tựa Game

KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG

50 giờ
Khóa học giúp học viên sử dụng thành thạo ngôn ngữ Lập trình Python (3x). Hiểu và phát triển được Ứng dụng Web với Django Framework. Học thực hành với Giảng viên cao cấp.

FRONT-END VỚI REACTJS VÀ REACT NATIVE

95h (5,5 tháng)
Khóa học duy nhất tại Hà Nội giúp bạn trang bị kiến thức đa nền tảng về Front-end. Với khóa học này, bạn hoàn toàn có thể làm chủ công nghệ phát triển ứng dụng mobile với React Native đồng thời xây dựng được các Trang Web bằng ReactJS...

Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM

5 buổi
Khai giảng Khóa học C&B Excel tại TP HCM. Khóa học Tiền lương, Bảo hiểm xã hội, Phúc lợi... Sử dụng Excel giải quyết bài toán tính thuế TNCN, quy tình tính bảo hiểm...

Lập trình PHP với Laravel Framework

42 giờ
Khóa học Lập trình PHP với Laravel Framework được NIIT - ICT HÀ NỘI xây dựng nhằm hoàn thiện kỹ năng lập trình web các các bạn đã biết Lập trình Web PHP thuần.

Khóa học Java Full stack (IJFD)

104 giờ
Học lập trình Java Fullstack với khóa học được xây dựng theo lộ trình bài bản, từ JAVA CƠ BẢN đến JAVA WEB và nâng cao về JAVA FRAMEWORK như: Spring Boot, Hibernate

KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)

48 giờ
Khóa học Angular & TypeScript (Front end) sẽ giúp bạn làm chủ được nền tảng Angular từ đó phát triển được các ứng dụng mạnh mẽ, đa nền tảng.

Lập trình Android Nâng cao

56 giờ
Khóa học Android nâng cao cung cấp kiến thức và kỹ năng chuyên sâu về lập trình Android. Phát triển ứng dụng tiên triến như: Lập trình giao diện tùy biến, xử lý dữ liệu nâng cao
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!