Hướng dẫn when to use abstract class in php - khi nào sử dụng lớp trừu tượng trong php

Lợi thế nếu tôi sử dụng lớp trừu tượng trong PHP là gì? Tôi không thể tìm thấy bất cứ điều gì tốt về điều đó. Tôi nghĩ rằng tôi có thể dễ dàng thực hiện tất cả các công việc mà bằng cách sử dụng lớp trừu tượng?

Bạn có thể, một cách tự nhiên. Tuy nhiên, nếu có nhiều đối tượng có cùng loại, nó có thể giúp trích xuất chức năng chung vào một lớp "cơ sở", điều đó có nghĩa là bạn không phải sao chép logic đó.

Thực tế có hai lý do mặc dù. Lý do đầu tiên, đối với tôi, là tất cả các hậu duệ của lớp trừu tượng của bạn có cùng loại và cả hai đều tuân thủ cùng một giao diện. Điều đó có nghĩa là một tài liệu PDF chẳng hạn sẽ có giao diện giống như tài liệu DOCX và mã máy khách không phải quan tâm đến đối tượng nào nó đang xử lý. Ví dụ ngắn (trong PHP).same type, and both adhere to the exact same interface. That means that a PDF document for example will have the same interface as a docx document, and the client code doesn't have to care which object it's handling. Short example (in PHP).

author = $author;
    }

    abstract public function render( );

    public function author( ) {
        return $this->author;
    }
}

class PdfDocument extends Document {
    public function render( ) {
        // do something PDF specific here.
    }
}

class DocxDocument extends Document {
    public function render( ) {
        // do something DOCX specific here.
    }
}


class DocumentHandler {
    public function handle( Document $document ) {
        $this->log( 'Author has been read ' . $document->author( ) );
        return $document->render( );
    }
}

Đầu tiên; Hãy chú ý rằng lớp DocumentHandler không có kiến ​​thức về loại tài liệu nào mà nó thực sự xử lý. Nó thậm chí không quan tâm. Nó không biết gì. Tuy nhiên, nó biết phương thức nào có thể được yêu cầu, bởi vì giao diện giữa hai loại tài liệu là như nhau. Điều này được gọi là đa hình, và có thể dễ dàng đạt được với việc thực hiện giao diện tài liệu.

Phần thứ hai là; Nếu mỗi và mọi tài liệu có một tác giả và tác giả đó luôn được yêu cầu, bạn có thể sao chép phương thức này vào pdfdocument cũng như tài liệu, nhưng bạn sẽ tự sao chép. Chẳng hạn, nếu bạn quyết định rằng bạn muốn tác giả được viết bằng thủ đô và bạn sẽ thay đổi trả về $ this-> tác giả thành ucwords ($ this-> tác giả), bạn sẽ phải làm điều đó nhiều lần như bạn ' Ve sao chép phương pháp đó. Sử dụng một lớp trừu tượng, bạn có thể xác định hành vi, trong khi đánh dấu bản thân lớp là không đầy đủ. Điều này đến rất tiện dụng.

Hy vọng điều đó sẽ giúp.


Tại sao chúng ta sử dụng trừu tượng trong PHP?

Trừu tượng trong bản tóm tắt dữ liệu PHP là các tính năng quan trọng nhất của bất kỳ ngôn ngữ lập trình OOPS nào. Nó chỉ hiển thị thông tin hữu ích, còn lại là hình thức ẩn người dùng cuối. Trừu tượng là bất kỳ đại diện nào của dữ liệu trong đó các chi tiết thực hiện được ẩn (trừu tượng hóa).

Lợi ích của việc sử dụng lớp trừu tượng là gì?

Lớp trừu tượng trong Java cho phép cách tốt nhất để thực hiện quá trình trừu tượng hóa dữ liệu bằng cách cung cấp cho các nhà phát triển tùy chọn ẩn triển khai mã. Nó cũng trình bày người dùng cuối với một mẫu giải thích các phương pháp liên quan.

PHP - Các lớp và phương pháp trừu tượng là gì?

Các lớp và phương pháp trừu tượng là khi lớp cha có một phương thức được đặt tên, nhưng cần (các) lớp con của nó để điền vào các nhiệm vụ.
abstract class ParentClass {
  abstract public function someMethod1();
  abstract public function someMethod2($name, $color);
  abstract public function someMethod3() : string;
}
?>

Một lớp trừu tượng là một lớp chứa ít nhất một phương pháp trừu tượng. Một phương pháp trừu tượng là một phương thức được khai báo, nhưng không được thực hiện trong mã.

Một lớp hoặc phương thức trừu tượng được xác định với từ khóa abstract:

  • Cú pháp
  • Phương pháp lớp con phải được xác định với cùng hoặc một công cụ sửa đổi truy cập ít bị hạn chế
  • Khi kế thừa từ một lớp trừu tượng, phương thức lớp con phải được xác định cùng tên và cùng một công cụ sửa đổi truy cập bị hạn chế. Vì vậy, nếu phương thức trừu tượng được định nghĩa là được bảo vệ, phương pháp lớp con phải được định nghĩa là được bảo vệ hoặc công khai, nhưng không riêng tư. Ngoài ra, loại và số lượng các đối số cần thiết phải giống nhau. Tuy nhiên, các lớp trẻ có thể có các đối số tùy chọn ngoài ra.

Vì vậy, khi một lớp trẻ được kế thừa từ một lớp trừu tượng, chúng ta có các quy tắc sau:

Thí dụ

Tên = $ name; & nbsp; } & nbsp; Tóm tắt chức năng công cộng giới thiệu (): Chuỗi; }
// Parent class
abstract class Car {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract public function intro() : string;
}

lớp ChildLass mở rộng ParentClass {& nbsp; // lớp con có thể xác định các đối số tùy chọn không nằm trong phương thức trừu tượng của cha mẹ & nbsp; hàm công khai prefixName ($ name, $ sleelator = ".", $ greet = "dEg") if ($ name == "John Doe") {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ prefix = "mr"; & nbsp; & nbsp; & nbsp; } otherif ($ name == "jane doe") {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ prefix = "mrs"; & nbsp; & nbsp; & nbsp; } other {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ prefix = ""; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; & nbsp; return "{$ greet} {$ prefix} {$ slearator} {$ name}"; & nbsp; }}
class Audi extends Car {
  public function intro() : string {
    return "Choose German quality! I'm an $this->name!";
  }
}

Khi nào các lớp trừu tượng nên được sử dụng?
  public function intro() : string {
    return "Proud to be Swedish! I'm a $this->name!";
  }
}

Một lớp trừu tượng được sử dụng nếu bạn muốn cung cấp một chức năng phổ biến, được triển khai trong số tất cả các triển khai của thành phần. Các lớp trừu tượng sẽ cho phép bạn thực hiện một phần lớp của mình, trong khi các giao diện sẽ không có việc triển khai cho bất kỳ thành viên nào.
  public function intro() : string {
    return "French extravagance! I'm a $this->name!";
  }
}

Tại sao chúng ta sử dụng trừu tượng trong PHP?
$audi = new audi("Audi");
echo $audi->intro();
echo "
";

Trừu tượng trong bản tóm tắt dữ liệu PHP là các tính năng quan trọng nhất của bất kỳ ngôn ngữ lập trình OOPS nào. Nó chỉ hiển thị thông tin hữu ích, còn lại là hình thức ẩn người dùng cuối. Trừu tượng là bất kỳ đại diện nào của dữ liệu trong đó các chi tiết thực hiện được ẩn (trừu tượng hóa).
echo $volvo->intro();
echo "
";

Lợi ích của việc sử dụng lớp trừu tượng là gì?
echo $citroen->intro();
?>

Hãy tự mình thử »

Lớp trừu tượng trong Java cho phép cách tốt nhất để thực hiện quá trình trừu tượng hóa dữ liệu bằng cách cung cấp cho các nhà phát triển tùy chọn ẩn triển khai mã. Nó cũng trình bày người dùng cuối với một mẫu giải thích các phương pháp liên quan.

PHP - Các lớp và phương pháp trừu tượng là gì?

Các lớp và phương pháp trừu tượng là khi lớp cha có một phương thức được đặt tên, nhưng cần (các) lớp con của nó để điền vào các nhiệm vụ.



Một lớp trừu tượng là một lớp chứa ít nhất một phương pháp trừu tượng. Một phương pháp trừu tượng là một phương thức được khai báo, nhưng không được thực hiện trong mã.

Một lớp hoặc phương thức trừu tượng được xác định với từ khóa abstract:

Thí dụ

Tên = $ name; & nbsp; } & nbsp; Tóm tắt chức năng công cộng giới thiệu (): Chuỗi; }
abstract class ParentClass {
  // Abstract method with an argument
  abstract protected function prefixName($name);
}

lớp ChildLass mở rộng ParentClass {& nbsp; // lớp con có thể xác định các đối số tùy chọn không nằm trong phương thức trừu tượng của cha mẹ & nbsp; hàm công khai prefixName ($ name, $ sleelator = ".", $ greet = "dEg") if ($ name == "John Doe") {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ prefix = "mr"; & nbsp; & nbsp; & nbsp; } otherif ($ name == "jane doe") {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ prefix = "mrs"; & nbsp; & nbsp; & nbsp; } other {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ prefix = ""; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; & nbsp; return "{$ greet} {$ prefix} {$ slearator} {$ name}"; & nbsp; }}
  public function prefixName($name) {
    if ($name == "John Doe") {
      $prefix = "Mr.";
    } elseif ($name == "Jane Doe") {
      $prefix = "Mrs.";
    } else {
      $prefix = "";
    }
    return "{$prefix} {$name}";
  }
}

$ class = new ChildClass; echo $ class-> prefixName ("john doe"); echo ""; echo $ class-> prefixName ("jane doe");?>
echo $class->prefixName("John Doe");
echo "
";
echo $class->prefixName("Jane Doe");
?>

Hãy tự mình thử »

Chúng ta hãy xem xét một ví dụ khác trong đó phương pháp trừu tượng có một đối số và lớp con có hai đối số tùy chọn không được xác định trong phương pháp trừu tượng của cha mẹ:

Thí dụ

abstract class ParentClass {
  // Abstract method with an argument
  abstract protected function prefixName($name);
}

lớp ChildLass mở rộng ParentClass {& nbsp; // lớp con có thể xác định các đối số tùy chọn không nằm trong phương thức trừu tượng của cha mẹ & nbsp; hàm công khai prefixName ($ name, $ sleelator = ".", $ greet = "dEg") if ($ name == "John Doe") {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ prefix = "mr"; & nbsp; & nbsp; & nbsp; } otherif ($ name == "jane doe") {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ prefix = "mrs"; & nbsp; & nbsp; & nbsp; } other {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ prefix = ""; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; & nbsp; return "{$ greet} {$ prefix} {$ slearator} {$ name}"; & nbsp; }}
  // The child class may define optional arguments that are not in the parent's abstract method
  public function prefixName($name, $separator = ".", $greet = "Dear") {
    if ($name == "John Doe") {
      $prefix = "Mr";
    } elseif ($name == "Jane Doe") {
      $prefix = "Mrs";
    } else {
      $prefix = "";
    }
    return "{$greet} {$prefix}{$separator} {$name}";
  }
}

$ class = new ChildClass; echo $ class-> prefixName ("john doe"); echo ""; echo $ class-> prefixName ("jane doe");?>
echo $class->prefixName("John Doe");
echo "
";
echo $class->prefixName("Jane Doe");
?>

Hãy tự mình thử »



Khi nào các lớp trừu tượng nên được sử dụng?

Một lớp trừu tượng được sử dụng nếu bạn muốn cung cấp một chức năng phổ biến, được triển khai trong số tất cả các triển khai của thành phần.Các lớp trừu tượng sẽ cho phép bạn thực hiện một phần lớp của mình, trong khi các giao diện sẽ không có việc triển khai cho bất kỳ thành viên nào.if you want to provide a common, implemented functionality among all the implementations of the component. Abstract classes will allow you to partially implement your class, whereas interfaces would have no implementation for any members whatsoever.

Tại sao chúng ta sử dụng trừu tượng trong PHP?

Trừu tượng trong bản tóm tắt dữ liệu PHP là các tính năng quan trọng nhất của bất kỳ ngôn ngữ lập trình OOPS nào.Nó chỉ hiển thị thông tin hữu ích, còn lại là hình thức ẩn người dùng cuối.Trừu tượng là bất kỳ đại diện nào của dữ liệu trong đó các chi tiết thực hiện được ẩn (trừu tượng hóa).It shows only useful information, remaining are hidden form the end user. Abstraction is the any representation of data in which the implementation details are hidden (abstracted).

Lợi ích của việc sử dụng lớp trừu tượng là gì?

Lớp trừu tượng trong Java cho phép cách tốt nhất để thực hiện quá trình trừu tượng hóa dữ liệu bằng cách cung cấp cho các nhà phát triển tùy chọn ẩn triển khai mã.Nó cũng trình bày người dùng cuối với một mẫu giải thích các phương pháp liên quan.enables the best way to execute the process of data abstraction by providing the developers with the option of hiding the code implementation. It also presents the end-user with a template that explains the methods involved.