Tìm hiểu Abstract trong PHP (ok)

https://viblo.asia/p/tim-hieu-abstract-trong-php-jqEGqpJoznv

*Chào các bạn, * Hôm nay chúng ta cùng tìm hiểu về Abstract Class trong PHP nhé!

I/ Abstract Class là gì ?

Lớp trừu tượng trước tiên nó chính là 1 lớp, nhưng nó được gọi là lớp trừu tượng bởi vì:

– Lớp này sẽ chứa các phương thức trừa tượng.

– Các lớp khác khi kế thừa lớp trừu tượng sẽ phải định nghĩa các phương thức trừu tượng ấy.

– Một class chỉ có thể kế thừa 1 lớp trừu tượng.

Cú pháp để khai báo 1 abstract class:

abstract class Database
{
     abstract protected function checkExistUser();
     abstract protected function updateUser();
}

Một số lưu ý khi sử dụng Abstract class

abstract class Database
{
     abstract protected function checkExistUser()
     {
     /*
      * - Dùng thế này là sai bởi:
      *   function checkExistUser là abstract function nên không code trong đó
     */
         echo 'check exist user';
     }
}
abstract class Database
{
     abstract protected function checkExistUser();
}
$db = new Database();
/*
* Khởi tạo đối tượng từ một Abstract class là sai
*
*/
abstract class Database
{
    public $table; // Đúng
    abstract public $rules; //Sai, vì thuộc tính không thể để dạng Abstract
    
     abstract protected function checkExistUser(); //Đúng 
     abstract private function updateUser(); //Sai, Abstract function không thể private
}
abstract class Database
{
     public $table;
    
     abstract protected function checkExistUser();
}

class User extends Database
{
    protected function checkExistUser()
    {
        //Tất cả các lớp kế thừa từ Abstract class đều phải định nghĩa lại các method của Abstract Class
    }
}

II/ Vai trò của Abstract Class trong PHP

– Đó là, trong lập trình, khi bạn (hoặc một người nào đó) xây dựng một hệ thống website, và trong quá trình xây dựng (code) lên hệ thống ấy, bạn muốn ép buộc người lập trình phải tuân thủ theo một số các phương thức và các phương thức này đã được định nghĩa sẵn những thứ cơ bản, để giúp cho lập trình viên có thể kế thừa các phương thức này và phát triển lớp con của họ.

III/ Ví dụ

  • Sau đây mình xin giới thiệu các bạn một Abstract class và 1 class extends từ Abstract class cho các bạn dễ hiểu

abstract class Person
{
    private $givenName;
    private $familyName;
    
    public function setGivenName($gn)
    {
        $this->givenName = $gn;
    }
    
    public function getGivenName()
    {
        return $this->givenName;
    }
    
    public function setFamilyName($fn)
    {
        $this->familyName = $fn;
    }
    
    public function getFamilyName()
    {
        return $this->familyName;
    }
     
    public function sayHello()
    {
        echo("Hello, I am ");
        $this->introduceSelf();
    }
    
    abstract public function introduceSelf();
    
}

class Employee extends Person
{
    private $role;
    
    public function setRole($r)
    {
        $this->role = $r; 
    }
    
    public function getRole()
    {
        return $this->role;
    }
    
    public function introduceSelf()
    {
        echo($this->getRole() . " " . $this->getGivenName() . " " . 
            $this->getFamilyName());
    }
}

Tới đây, Chắc hẳn các bạn đã hiểu được phần nào về Abstract class rồi đúng không nào. Trong chủ đề tiếp theo mình sẽ giới thiệu về Interface trong PHP. Chào các bạn!

Last updated