PHP – Classes and Objects

Khái niệm về lớp và đối tượng là trung tâm của phương pháp lập trình hướng đối tượng trong PHP. Một **lớp** là mô tả mẫu của các đối tượng của nó. Nó bao gồm các thuộc tính và các hàm xử lý các thuộc tính. Một **đối tượng** là thể hiện của lớp của nó. Nó được đặc trưng bởi các thuộc tính và hàm được định nghĩa trong lớp.

Classes and Objects

Defining a Class in PHP

Để định nghĩa một lớp, PHP có từ khóa "class". Tương tự, PHP cung cấp từ khóa "new" để khai báo một đối tượng của bất kỳ lớp nào.

Cách tổng quát để định nghĩa một lớp mới trong PHP như sau −

<?php
   class phpClass {
      var $var1;
      var $var2 = "constant string";

      function myfunc ($arg1, $arg2) {
         [..]
      }
      [..]
   }
?>

Từ khóa class được theo sau bởi tên của lớp mà bạn muốn định nghĩa. Tên lớp tuân theo cùng quy tắc đặt tên như được sử dụng cho một biến PHP. Nó được theo sau bởi một cặp dấu ngoặc nhọn bao gồm bất kỳ số lượng khai báo biến (thuộc tính) và định nghĩa hàm nào.

Các khai báo biến bắt đầu bằng một từ khóa dự trữ khác var , theo sau là một tên $variable thông thường; chúng cũng có thể có một gán ban đầu cho một giá trị hằng.

Các định nghĩa hàm trông giống như các hàm PHP độc lập nhưng là cục bộ cho lớp và sẽ được sử dụng để thiết lập và truy cập dữ liệu đối tượng. Các hàm bên trong một lớp cũng được gọi là phương thức.

Example

Dưới đây là một ví dụ định nghĩa một lớp kiểu Sách −

class Book {

   /* Member variables */
   var $price;
   var $title;

   /* Member functions */
   function setPrice($par){
      $this->price = $par;
   }

   function getPrice(){
      echo $this->price ."<br/>";
   }

   function setTitle($par){
      $this->title = $par;
   }

   function getTitle(){
      echo $this->title ." <br/>";
   }
}

Biến giả $this có sẵn khi một phương thức được gọi từ trong ngữ cảnh của một đối tượng. $this đề cập đến đối tượng đang gọi.

Lớp Book có hai member variables (hoặc thuộc tính) - $title $price . Các biến thành viên (cũng đôi khi được gọi là biến thể hiện) thường có giá trị khác nhau cho mỗi đối tượng; như mỗi cuốn sách có tiêu đề và giá khác nhau so với cuốn khác.

Lớp Book có các hàm (các hàm được định nghĩa bên trong lớp được gọi là methods ) setTitle() và setPrice(). Các hàm này được gọi với tham chiếu đến một đối tượng và một tham số, được sử dụng để thiết lập giá trị cho các biến thành viên title và price tương ứng.

Lớp Book cũng có các phương thức getTitle() getPrice() . Khi được gọi, chúng trả về tiêu đề và giá của đối tượng mà tham chiếu được truyền vào.

Khi một lớp được định nghĩa, bạn có thể khai báo một hoặc nhiều đối tượng, sử dụng toán tử new.

$b1 = new Book;
$b2 = new Book;

Toán tử new cấp phát bộ nhớ cần thiết cho các biến thành viên và phương thức của mỗi đối tượng. Ở đây, chúng ta đã tạo ra hai đối tượng và các đối tượng này độc lập với nhau và sẽ có sự tồn tại riêng biệt.

Mỗi đối tượng có quyền truy cập vào các biến thành viên và phương thức của nó bằng toán tử " -> ". Ví dụ, thuộc tính " $title " của đối tượng " b1 " là " $b1->title " và để gọi phương thức setTitle(), hãy sử dụng câu lệnh " $b1->setTitle() ".

Để đặt tiêu đề và giá của đối tượng b1 ,

$b1->setTitle("PHP Programming");
$b1->setPrice(450);

Tương tự, các câu lệnh sau đây lấy tiêu đề và giá của cuốn sách b1

echo $b1->getPrice();
echo $b1->getTitle();

Example

Dưới đây là đoạn mã PHP hoàn chỉnh định nghĩa lớp Book, khai báo hai đối tượng và gọi các hàm thành viên.

<?php
   class Book {
   
      /* Member variables */
      var $price;
      var $title;

      /* Member functions */
      function setPrice($par){
         $this->price = $par;
      }

      function getPrice(){
         echo $this->price ."\n";
      }

      function setTitle($par){
         $this->title = $par;
      }

      function getTitle(){
         echo $this->title ."\n";
      }
   }

   $b1 = new Book;
   $b2 =new Book;

   $b1->setTitle("PHP Programming");
   $b1->setPrice(450);
   $b2->setTitle("PHP Fundamentals");
   $b2->setPrice(275);
   $b1->getTitle();
   $b1->getPrice();
   $b2->getTitle();
   $b2->getPrice();
?>

Nó sẽ tạo ra output

PHP Programming
450
PHP Fundamentals
275