Tại sao chúng ta sử dụng hàm tạo trong php

Trong thuật ngữ lập trình hướng đối tượng, hàm tạo là một phương thức được định nghĩa bên trong một lớp được gọi tự động tại thời điểm tạo đối tượng. Mục đích của phương thức khởi tạo là khởi tạo đối tượng. Trong PHP, một phương thức có tên đặc biệt __construct hoạt động như một hàm tạo

cú pháp

__construct [[ mixed $args = "" [, $.. ]] ] : void

Ví dụ về hàm tạo

Ví dụ này cho thấy hàm tạo được thực thi tự động khi đối tượng được khai báo

Thí dụ

Bản thử trực tiếp

đầu ra

Điều này sẽ tạo ra kết quả sau. -

object initialized

Hàm tạo có đối số

Các thuộc tính của lớp được khởi tạo bởi hàm tạo với các đối số

Thí dụ

Bản thử trực tiếp

height=$arg1;
      $this->width=$arg2;
   }
   function show[]{
      echo "Height=$this->height Width=$this->width";
   }
}
$obj=new rectangle[10,20];
$obj->show[];
?>

đầu ra

Điều này sẽ tạo ra kết quả sau. -

Height=10 Width=20

Constructor trong thừa kế

Nếu lớp cha có hàm tạo được định nghĩa trong nó, nó có thể được gọi trong hàm tạo của lớp con bởi cha. __xây dựng. Tuy nhiên, nếu lớp con không định nghĩa một hàm tạo, thì nó sẽ kế thừa cái tương tự từ lớp cơ sở

Thí dụ

Bản thử trực tiếp

";
   }
}
class b extends a{
   function __construct[]{
      parent::__construct[];
      echo "this a constructor class b
";    } } class c extends a {    // } $a=new a[]; $b=new b[]; $c=new c[]; ?>

đầu ra

Điều này sẽ tạo ra kết quả sau. -

this is a constructor of base class
this is a constructor of base class
this a constructor class b
this is a constructor of base class

Destructor là một phương thức tự động ngay khi trình thu gom rác phát hiện ra rằng một đối tượng cụ thể không còn tham chiếu nào nữa. Trong PHP, phương thức hàm hủy được đặt tên là __destroy. Trong trình tự tắt máy, các đối tượng sẽ bị phá hủy. Phương thức hàm hủy không nhận bất kỳ đối số nào, cũng không trả về bất kỳ kiểu dữ liệu nào

Bạn sẽ thấy các hàm tạo lớp hoạt động như thế nào trong PHP, điều gì xảy ra với tính kế thừa lớp và một tính năng mới của PHP 8 có tên là “xúc tiến đối số”

nội dung

  • Trình xây dựng lớp PHP là gì?
  • Danh sách đối số của hàm tạo
  • Constructor và kế thừa lớp
  • các nhà xây dựng bị cấm. riêng tư và trừu tượng
  • Quảng cáo đối số PHP 8

Trình xây dựng lớp PHP là gì?

Trong lập trình hướng đối tượng, các đối tượng là các biến của một lớp cụ thể

Ví dụ


class Circle
{
   public $radius;
   public $color;
   public $thickness;
}
$myCircle = new Circle[];

Ở đây, $myCircle là một biến của lớp Circle

Khi bạn tạo một đối tượng lớp, PHP sẽ xem xét định nghĩa lớp để tìm kiếm hàm tạo của lớp

Hàm tạo của lớp là một phương thức lớp đặc biệt có tên __construct[]. Phương thức này được thực thi ngay sau khi tạo một đối tượng của lớp đó

Vì vậy, hãy thêm một hàm tạo vào lớp Circle của chúng ta


class Circle
{
   public $radius;
   public $color;
   public $thickness;
   
   public function __construct[] {
      $this->radius = 5;
      $this->color = 'black';
      $this->thickness = 1;
   }
}

Hàm tạo của chúng tôi gán một số giá trị cho các thuộc tính của lớp

Vì hàm tạo được thực thi ngay khi một đối tượng mới được tạo, nên các giá trị này sẽ là giá trị mặc định cho mọi đối tượng mới

Bạn có thể thử và xem cho chính mình


$myCircle = new Circle[];
echo $myCircle->radius . '
'; echo $myCircle->color . '
'; echo $myCircle->thickness . '
';

Output:
5
black
1

 

Các nhà xây dựng không bị giới hạn trong việc thiết lập các thuộc tính của lớp. Họ cũng có thể gọi các phương thức lớp khác, thực thi các lệnh như tiếng vang, kết nối với cơ sở dữ liệu, v.v.

Thông thường, bạn muốn sử dụng hàm tạo để

  • Khởi tạo các thuộc tính lớp thành giá trị mặc định của chúng
  • Thực hiện kiểm tra xác thực đối số đầu vào hoặc biến toàn cục
  • Khởi tạo tài nguyên lớp, chẳng hạn như kết nối cơ sở dữ liệu và tệp nhật ký

Ví dụ: đây là cách bạn có thể tạo một lớp bao bọc cơ sở dữ liệu tùy chỉnh tự động kết nối với cơ sở dữ liệu ngay khi bạn tạo một đối tượng mới

object initialized
0

Danh sách đối số của hàm tạo

Các hàm tạo của lớp hỗ trợ các đối số giống như bất kỳ phương thức thông thường nào

Danh sách đối số của hàm tạo có thể bao gồm các đối số đã nhập, đối số có độ dài thay đổi và giá trị mặc định

Ví dụ

object initialized
1

 

Khi bạn tạo một đối tượng mới, bạn phải tuân theo các yêu cầu về danh sách đối số của hàm tạo lớp

Ví dụ: bạn không thể tạo một đối tượng của lớp Circle mà không có đối số [vì đối số $radius là bắt buộc và không có giá trị mặc định] hoặc với một chuỗi làm đối số đầu tiên [vì nó phải là một kiểu int]

object initialized
2

 

Lưu ý rằng hàm tạo của lớp không thể trả về bất kỳ giá trị nào

Lý do là các hàm tạo có nghĩa là trả về đối tượng mới, vì vậy sẽ không có ý nghĩa gì khi trả lại bất kỳ thứ gì khác

Constructor và kế thừa lớp

Bây giờ hãy xem cách các hàm tạo của lớp hoạt động với tính kế thừa của lớp

Giả sử bạn có một lớp cha và một lớp con

object initialized
3

 

Khi bạn tạo một đối tượng của lớp con, PHP sẽ thực thi hàm tạo của lớp con. Tuy nhiên, phương thức khởi tạo của lớp cha không được thực thi tự động

object initialized
4

 

Như đã giải thích trong hướng dẫn kế thừa PHP này, nếu bạn muốn hàm tạo của lớp cha được thực thi, thì bạn cần gọi nó một cách rõ ràng từ hàm tạo của lớp con

Như thế này

object initialized
5

class Circle
{
   public $radius;
   public $color;
   public $thickness;
   
   public function __construct[] {
      $this->radius = 5;
      $this->color = 'black';
      $this->thickness = 1;
   }
}
0

 

Hàm tạo của lớp con không cần có danh sách đối số tương thích với hàm tạo của lớp cha

Nói cách khác, bạn có thể đặt bất kỳ danh sách đối số nào cho hàm tạo của lớp con, bất kể hàm tạo của lớp cha lấy đối số nào.

các nhà xây dựng bị cấm. riêng tư và trừu tượng

Có hai trường hợp khi bạn không thể gọi hàm tạo của lớp

trường hợp đầu tiên. bạn không thể gọi một hàm tạo trừu tượng của một lớp trừu tượng, giống như bạn không thể gọi bất kỳ phương thức trừu tượng nào

Ví dụ


class Circle
{
   public $radius;
   public $color;
   public $thickness;
   
   public function __construct[] {
      $this->radius = 5;
      $this->color = 'black';
      $this->thickness = 1;
   }
}
1

class Circle
{
   public $radius;
   public $color;
   public $thickness;
   
   public function __construct[] {
      $this->radius = 5;
      $this->color = 'black';
      $this->thickness = 1;
   }
}
2

 

Nhưng bạn có thể gọi một hàm tạo không trừu tượng từ lớp cha, ngay cả khi bản thân lớp đó là trừu tượng


class Circle
{
   public $radius;
   public $color;
   public $thickness;
   
   public function __construct[] {
      $this->radius = 5;
      $this->color = 'black';
      $this->thickness = 1;
   }
}
3

 

trường hợp thứ hai. nếu bạn đặt khả năng hiển thị của hàm tạo thành được bảo vệ hoặc riêng tư, thì bạn không thể tạo đối tượng của lớp đó


class Circle
{
   public $radius;
   public $color;
   public $thickness;
   
   public function __construct[] {
      $this->radius = 5;
      $this->color = 'black';
      $this->thickness = 1;
   }
}
4

class Circle
{
   public $radius;
   public $color;
   public $thickness;
   
   public function __construct[] {
      $this->radius = 5;
      $this->color = 'black';
      $this->thickness = 1;
   }
}
5

 

Bây giờ, bạn có thể tự hỏi. tại sao bạn muốn ngăn các đối tượng được tạo?

Chà, trong một số trường hợp, bạn muốn chỉ có thể tạo các đối tượng lớp từ chính lớp đó bằng cách sử dụng các phương thức tĩnh

Một trong những trường hợp như vậy là khi bạn muốn mô phỏng nhiều hàm tạo. Nếu bạn muốn biết thêm, bạn có thể tìm thêm chi tiết tại đây [trong phần Phương pháp tạo tĩnh]

Quảng cáo đối số PHP 8

PHP 8 đã giới thiệu một cách mới để tự động xác định các thuộc tính của lớp trực tiếp từ hàm tạo

Đây là ý tưởng

Đối với mỗi đối số hàm tạo, bạn có thể tự động biến đối số đó thành thuộc tính lớp bằng cách thêm công cụ sửa đổi khả năng hiển thị

Tính năng này được gọi là khuyến mãi nhà xây dựng

Ví dụ


class Circle
{
   public $radius;
   public $color;
   public $thickness;
   
   public function __construct[] {
      $this->radius = 5;
      $this->color = 'black';
      $this->thickness = 1;
   }
}
6

 

Các đối số $radius và $color có công cụ sửa đổi khả năng hiển thị công khai, do đó chúng được hàm tạo tự động chuyển thành thuộc tính lớp công khai

Bạn cũng có thể xác định các đối số được bảo vệ và riêng tư và chúng sẽ lần lượt được chuyển thành các thuộc tính được bảo vệ và riêng tư

Khi bạn sử dụng cú pháp này, bạn không cần tạo các thuộc tính một cách rõ ràng trong lớp

Mặt khác, đối số $thickness không có công cụ sửa đổi khả năng hiển thị trong danh sách đối số. Do đó, bạn cần định nghĩa nó một cách rõ ràng trong lớp

Sự kết luận

Trong hướng dẫn này, bạn đã học cách thức hoạt động của hàm tạo lớp PHP

Chúng ta đã xem xét danh sách đối số của hàm tạo, quy tắc kế thừa lớp và hai trường hợp khi bạn không thể gọi trực tiếp hàm tạo của lớp

Mục đích của nhà xây dựng là gì?

Trong Java, hàm tạo là thuật ngữ mô tả một dòng mã được sử dụng để tạo một thể hiện của đối tượng lớp . Vì một lớp Java phục vụ như một bản thiết kế cho một đối tượng có thể tái sử dụng, các nhà phát triển ngôn ngữ Java đã tạo ra một cách để xây dựng một bản sao của các đối tượng lớp.

Hàm tạo có cần thiết trong PHP không?

Trình tạo là một phần thiết yếu của lập trình hướng đối tượng . Nó là một phương thức của một lớp được gọi tự động khi một đối tượng của lớp đó được khai báo. Mục đích chính của phương thức này là khởi tạo đối tượng.

Việc sử dụng hàm tạo và hàm hủy trong PHP là gì?

Trình xây dựng. Constructor được gọi khi một đối tượng được tạo từ một lớp . Kẻ hủy diệt. Các hàm hủy được gọi khi một đối tượng bị hủy. Thông thường, đó là khi kịch bản kết thúc.

Lợi thế của việc sử dụng hàm tạo là gì?

Một trong những lợi ích của việc sử dụng hàm tạo so với phương thức là bạn có thể yên tâm rằng hàm tạo đã được gọi và công việc trong hàm tạo đã được thực hiện. The language specifies that to construct an object a constructor must be called.

Chủ Đề