Phương pháp lớp php

Để hiểu được phần hướng dẫn này, bạn nên hiểu các biến căn bản về hàm, biến, cấu trúc điều kiện và vòng lặp. Bài hướng dẫn về lập trình hướng đối tượng với php được trình bày từ bước 18 đến bước 22.  

Bước 18. Thừa kế – sử dụng lại mã lệnh

Thừa kế là một trong những tính năng quan trọng trong OOP, nơi mà bạn có thể sử dụng một lớp như là lớp cơ sở đặc biệt cho một hoặc nhiều lớp khác

Tại sao cần phải làm điều đó?

Điều này cho phép bạn sử dụng lại mã hiệu đã có trong lớp cơ sở

Bạn muốn tạo một lớp mới là Nhân viên. Chúng ta có thể hiểu rằng Nhân viên là một kiểu của Người trong lớp, Người trong lớp chia sẻ một số thuộc tính và phương thức

Trong trường hợp này, việc thừa kế có thể làm cho mã của bạn nhẹ nhàng hơn … bởi vì bạn đang sử dụng cùng một mã trong hai lớp khác nhau

Please see after code

// 'extends' là từ khóa sử dụng trong khai báo kế thừa.
class Employee extends Person
{
     function __construct($Employee_name) {
            $this->set_name($Employee_name);
     }
}

Bước 19. Sử dụng lại mã với kế thừa – phần 2

Lớp Nhân viên được tạo dựa trên Lớp Người, do đó Lớp Nhân viên sẽ được sử dụng tất cả các thuộc tính và phương thức được khai báo là công khai và được bảo vệ bởi Lớp Người

Lưu ý. Có thể hiểu Nhân viên là một kiểu người

Mã lệnh

class Employee extends Person
{
    function __construct($Employee_name){
         $this->set_name($Employee_name);
    }
}

Please quan sát cách chúng ta sử dụng phương thức set_name() trong Layer Employee, mặc dù chúng ta không khai báo phương thức đó trong Layer Employee. Đó là bởi vì chúng ta đã tạo ra set_name() trong Person lớp

Lưu ý. Lớp Person được gọi là lớp cơ sở hoặc lớp cha vì đó là lớp mà lớp Nhân viên được tạo ra dựa trên nó. Sự phân cấp này sẽ trở nên quan trọng khi ứng dụng của bạn trở nên phức tạp hơn

Bước 20. Sử dụng lại mã với kế thừa – phần 3

Như bạn có thể thấy trong đoạn mã bên dưới, chúng ta có thể gọi phương thức get_name thông qua đối tượng $james của Lớp nhân viên

Mã lệnh

get_name();
     $james = new Employee("Johnny Fingers");
     echo "---> " . $james->get_name();
?>

Đây là một ví dụ điển hình về cách OOP có thể giảm số lượng dòng lệnh (tức là không phải viết lại phương thức get_name() trong Lớp nhân viên) và dễ dàng hơn nhiều việc bảo đảm mã lệnh

Bước 21. Ghi đè phương thức (overriding methods)

Trong kế thừa, đôi khi bạn cần phải thay đổi cách một phương thức hoạt động từ lớp cơ sở

Ví dụ, giả sử dụng phương thức set_name() trong Lớp Nhân viên, phải làm một điều gì đó khác với những gì nó làm trong Lớp Người

Chúng ta cần ‘ghi đè’ phương thức set_name() của lớp bằng cách khai báo phương thức đó ngay trong nhân viên chính của lớp

Mã lệnh

name = strtoupper($new_name);
        }
    }
}
class Employee extends Person{    
     protected function set_name($new_name) {                                               
       if ($new_name == "Stefan Sucks"){ 
          $this->name = $new_name;                                               
       }                                
     }                
} ?>

Lưu ý. Cách hoạt động của phương thức set_name() trong lớp Nhân viên khác với cách hoạt động của phương thức set_name() trong lớp Người

Bước 22. Ghi đè phương thức – phần 2

Khi bạn cần truy cập vào phương thức của lớp cha từ phương thức của lớp con, hãy sử dụng ký hiệu

Trong ví dụ trước, chúng tôi đã cài đặt lại phương thức set_name() trong lớp Nhân viên. Chúng ta sử dụng command after để truy cập vào phương thức set_name() của layer cha from layer con

Người. set_name($new_name);

Mã lệnh

name = $Persons_name;
     }
     public function get_name() {
         return $this->name;                                 
     }     
             
     // các phương thức và thuộc tính khi được khai báo là protected và protected                               
     // nhằm hạn chế truy xuất                                 
     protected function set_name($new_name) {                                                
         if ($this->name !=  "Jimmy Two Guns") 
         {                                                              
            $this->name = strtoupper($new_name);                                             
         }                                
     }                
}        
        
// từ khóa extends được sử dụng khi khai báo kế thừa
class Employee extends Person                
{                                
      protected function set_name($new_name) {                                
          if ($new_name ==  "Stefan Sucks") {                                               
             $this->name = $new_name;                                
          }                               
          else if ($new_name ==  "Johnny Fingers") {              
             Person::set_name($new_name);                                
          }                
      }  
              
      function __construct($Employee_name)                
      {                                
           $this->set_name($Employee_name);                
      } 
} ?>

Lưu ý. Use symbol. allow you access to the method of a layer

Person::set_name()

Cho phép truy cập vào phương thức set_name() của Layer Person

Một cách khác để truy xuất các phương thức của lớp cha từ lớp con được sử dụng khi sử dụng từ khóa cha mẹ

Mã lệnh

protected function set_name($new_name)
{           
     if ($new_name ==  "Stefan Sucks") {
          $this->name = $new_name; 
     }           
     else if ($new_name ==  "Johnny Fingers") {
          parent::set_name($new_name);           
     }            
} 

Kết luận

Trong phần này chỉ đề cập đến các vấn đề cơ bản của OOP trong PHP. Hãy nhớ rằng cách tốt nhất để hiểu rõ về vấn đề là cần viết mã

Hãy tạo ra 10 đối tượng đơn giản từ các lớp đã xây dựng ở trên, sau đó sử dụng các đối tượng này để thao tác với các thuộc tính và phương thức, bạn cần xem kết quả trên trang php