Các lớp php hoạt động như thế nào?

Chúng ta có thể tưởng tượng vũ trụ của chúng ta được tạo thành từ các vật thể khác nhau như mặt trời, trái đất, mặt trăng, v.v. Tương tự, chúng ta có thể tưởng tượng chiếc ô tô của mình được làm từ các vật thể khác nhau như bánh xe, tay lái, bánh răng, v.v. Tương tự, có các khái niệm lập trình hướng đối tượng coi mọi thứ là một đối tượng và triển khai phần mềm bằng các đối tượng khác nhau

Khái niệm hướng đối tượng

Trước khi đi vào chi tiết, hãy định nghĩa các thuật ngữ quan trọng liên quan đến Lập trình hướng đối tượng

  • Lớp - Đây là kiểu dữ liệu do lập trình viên xác định, bao gồm các hàm cục bộ cũng như dữ liệu cục bộ. Bạn có thể coi một lớp như một khuôn mẫu để tạo ra nhiều thể hiện của cùng một loại [hoặc lớp] đối tượng

  • Đối tượng - Một thể hiện riêng lẻ của cấu trúc dữ liệu được xác định bởi một lớp. Bạn định nghĩa một lớp một lần và sau đó tạo nhiều đối tượng thuộc về nó. Các đối tượng còn được gọi là thể hiện

  • Biến thành viên - Đây là các biến được định nghĩa bên trong một lớp. Dữ liệu này sẽ ẩn đối với bên ngoài lớp và có thể được truy cập thông qua các hàm thành viên. Các biến này được gọi là thuộc tính của đối tượng khi đối tượng được tạo

  • Hàm thành viên - Đây là các hàm được định nghĩa bên trong một lớp và được sử dụng để truy cập dữ liệu đối tượng

  • Kế thừa - Khi một lớp được định nghĩa bằng cách kế thừa chức năng hiện có của lớp cha thì nó được gọi là kế thừa. Ở đây lớp con sẽ kế thừa tất cả hoặc một số hàm thành viên và biến của lớp cha

  • Lớp cha mẹ - Một lớp được kế thừa bởi một lớp khác. Đây còn được gọi là lớp cơ sở hoặc siêu lớp

  • Lớp con - Một lớp kế thừa từ một lớp khác. Đây còn được gọi là lớp con hoặc lớp dẫn xuất

  • Đa hình - Đây là một khái niệm hướng đối tượng trong đó cùng một chức năng có thể được sử dụng cho các mục đích khác nhau. Ví dụ: tên hàm sẽ giữ nguyên nhưng nó có số lượng đối số khác nhau và có thể thực hiện các tác vụ khác nhau

  • Quá tải - một loại đa hình trong đó một số hoặc tất cả các toán tử có cách triển khai khác nhau tùy thuộc vào loại đối số của chúng. Các chức năng tương tự cũng có thể bị quá tải với cách thực hiện khác nhau

  • Trừu tượng hóa dữ liệu - Bất kỳ biểu diễn dữ liệu nào trong đó các chi tiết triển khai bị ẩn [trừu tượng hóa]

  • Đóng gói - đề cập đến một khái niệm trong đó chúng ta đóng gói tất cả dữ liệu và các hàm thành viên lại với nhau để tạo thành một đối tượng

  • Constructor − đề cập đến một loại hàm đặc biệt sẽ được gọi tự động bất cứ khi nào có sự hình thành đối tượng từ một lớp

  • Hàm hủy − đề cập đến một loại hàm đặc biệt sẽ được gọi tự động bất cứ khi nào một đối tượng bị xóa hoặc vượt ra khỏi phạm vi

Định nghĩa các lớp PHP

Dạng chung để định nghĩa một lớp mới trong PHP như sau -

Dưới đây là mô tả của từng dòng -

  • Lớp dạng đặc biệt, theo sau là tên của lớp mà bạn muốn định nghĩa

  • Một tập hợp các dấu ngoặc nhọn kèm theo bất kỳ số lượng khai báo biến và định nghĩa hàm nào

  • Khai báo biến bắt đầu bằng dạng đặc biệt var, theo sau là tên biến $ thông thườ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ộ của lớp và sẽ được sử dụng để thiết lập và truy cập dữ liệu đối tượng

Ví dụ

Đây là một ví dụ định nghĩa một lớp loại Sách -

price = $par;
      }
      
      function getPrice[]{
         echo $this->price ."
"; } function setTitle[$par]{ $this->title = $par; } function getTitle[]{ echo $this->title ."
"; } } ?>

Biến $this là một biến đặc biệt và nó đề cập đến cùng một đối tượng tức là. chính nó

Tạo đối tượng trong PHP

Khi bạn đã xác định lớp của mình, thì bạn có thể tạo bao nhiêu đối tượng tùy thích cho loại lớp đó. Sau đây là ví dụ về cách tạo đối tượng bằng toán tử new

$physics = new Books;
$maths = new Books;
$chemistry = new Books;

Ở đây chúng tôi đã tạo ba đối tượng và các đối tượng này độc lập với nhau và chúng sẽ tồn tại riêng biệt. Tiếp theo chúng ta sẽ xem cách truy cập hàm thành viên và xử lý các biến thành viên

Gọi hàm thành viên

Sau khi tạo các đối tượng của mình, bạn sẽ có thể gọi các hàm thành viên liên quan đến đối tượng đó. Một hàm thành viên sẽ chỉ có thể xử lý biến thành viên của đối tượng liên quan

Ví dụ sau cho thấy cách đặt tiêu đề và giá cho ba cuốn sách bằng cách gọi các hàm thành viên

$physics->setTitle[ "Physics for High School" ];
$chemistry->setTitle[ "Advanced Chemistry" ];
$maths->setTitle[ "Algebra" ];

$physics->setPrice[ 10 ];
$chemistry->setPrice[ 15 ];
$maths->setPrice[ 7 ];

Bây giờ bạn gọi một hàm thành viên khác để lấy các giá trị được đặt trong ví dụ trên -

$physics->getTitle[];
$chemistry->getTitle[];
$maths->getTitle[];
$physics->getPrice[];
$chemistry->getPrice[];
$maths->getPrice[];

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

Physics for High School
Advanced Chemistry
Algebra
10
15
7

Hàm xây dựng

Hàm xây dựng là loại hàm đặc biệt được gọi tự động bất cứ khi nào một đối tượng được tạo. Vì vậy, chúng tôi tận dụng tối đa hành vi này, bằng cách khởi tạo nhiều thứ thông qua hàm tạo

PHP cung cấp một hàm đặc biệt gọi là __construct[] để định nghĩa một hàm tạo. Bạn có thể chuyển bao nhiêu đối số tùy thích vào hàm tạo

Ví dụ sau sẽ tạo một hàm tạo cho lớp Books và nó sẽ khởi tạo giá và tiêu đề cho cuốn sách tại thời điểm tạo đối tượng

function __construct[ $par1, $par2 ] {
   $this->title = $par1;
   $this->price = $par2;
}

Bây giờ chúng ta không cần gọi riêng hàm set để đặt giá và tiêu đề. Chúng ta chỉ có thể khởi tạo 2 biến thành viên này tại thời điểm tạo đối tượng. Kiểm tra ví dụ sau bên dưới -

$physics = new Books[ "Physics for High School", 10 ];
$maths = new Books [ "Advanced Chemistry", 15 ];
$chemistry = new Books ["Algebra", 7 ];

/* Get those set values */
$physics->getTitle[];
$chemistry->getTitle[];
$maths->getTitle[];

$physics->getPrice[];
$chemistry->getPrice[];
$maths->getPrice[];

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

________số 8

Kẻ hủy diệt

Giống như hàm tạo, bạn có thể định nghĩa hàm hủy bằng cách sử dụng hàm __desturation[]. Bạn có thể giải phóng tất cả các tài nguyên trong một hàm hủy

Di sản

Định nghĩa lớp PHP có thể tùy chọn kế thừa từ định nghĩa lớp cha bằng cách sử dụng mệnh đề mở rộng. Cú pháp như sau -

class Child extends Parent {
   
}

Ảnh hưởng của tính kế thừa là lớp con [hoặc lớp con hoặc lớp dẫn xuất] có các đặc điểm sau -

  • Tự động có tất cả các khai báo biến thành viên của lớp cha

  • Tự động có tất cả các chức năng thành viên giống như cha mẹ, mà [theo mặc định] sẽ hoạt động giống như các chức năng đó trong cha mẹ

Ví dụ sau kế thừa lớp Books và thêm nhiều chức năng hơn dựa trên yêu cầu

price = $par;
      }
      
      function getPrice[]{
         echo $this->price ."
"; } function setTitle[$par]{ $this->title = $par; } function getTitle[]{ echo $this->title ."
"; } } ?>
0

Bây giờ ngoài các chức năng kế thừa, lớp Novel giữ thêm hai chức năng thành viên

Ghi đè chức năng

Các định nghĩa hàm trong các lớp con ghi đè các định nghĩa có cùng tên trong các lớp cha. Trong lớp con, chúng ta có thể sửa đổi định nghĩa của một hàm kế thừa từ lớp cha

Trong ví dụ sau, các hàm getPrice và getTitle được ghi đè để trả về một số giá trị

price = $par;
      }
      
      function getPrice[]{
         echo $this->price ."
"; } function setTitle[$par]{ $this->title = $par; } function getTitle[]{ echo $this->title ."
"; } } ?>
1

Thành viên công khai

Trừ khi bạn chỉ định khác, các thuộc tính và phương thức của một lớp là công khai. Điều đó có nghĩa là, chúng có thể được truy cập trong ba tình huống có thể xảy ra -

  • Từ bên ngoài lớp mà nó được khai báo

  • Từ bên trong lớp mà nó được khai báo

  • Từ bên trong một lớp khác thực hiện lớp mà nó được khai báo

Cho đến bây giờ chúng tôi đã xem tất cả các thành viên là thành viên công khai. Nếu bạn muốn giới hạn khả năng truy cập của các thành viên trong lớp thì bạn xác định các thành viên của lớp là riêng tư hoặc được bảo vệ

thành viên riêng tư

Bằng cách chỉ định một thành viên riêng tư, bạn giới hạn khả năng truy cập của nó đối với lớp mà nó được khai báo. Thành viên private không thể được tham chiếu từ các lớp kế thừa lớp mà nó được khai báo và không thể truy cập từ bên ngoài lớp

Một thành viên lớp có thể được đặt ở chế độ riêng tư bằng cách sử dụng từ khóa riêng trước mặt thành viên

price = $par;
      }
      
      function getPrice[]{
         echo $this->price ."
"; } function setTitle[$par]{ $this->title = $par; } function getTitle[]{ echo $this->title ."
"; } } ?>
2

Khi lớp MyClass được lớp khác kế thừa bằng cách sử dụng phần mở rộng, myPublicFunction[] sẽ hiển thị, $driver cũng vậy. Lớp mở rộng sẽ không có bất kỳ nhận thức hoặc quyền truy cập nào vào myPrivateFunction và $car, vì chúng được khai báo là riêng tư

Thành viên được bảo vệ

Thuộc tính hoặc phương thức được bảo vệ có thể truy cập được trong lớp mà nó được khai báo, cũng như trong các lớp mở rộng lớp đó. Các thành viên được bảo vệ không có sẵn bên ngoài hai loại lớp đó. Một thành viên lớp có thể được bảo vệ bằng cách sử dụng từ khóa được bảo vệ trước thành viên

Đây là phiên bản khác của MyClass -

price = $par;
      }
      
      function getPrice[]{
         echo $this->price ."
"; } function setTitle[$par]{ $this->title = $par; } function getTitle[]{ echo $this->title ."
"; } } ?>
3

giao diện

Các giao diện được xác định để cung cấp một tên hàm chung cho những người triển khai. Những người triển khai khác nhau có thể triển khai các giao diện đó theo yêu cầu của họ. Có thể nói, giao diện là bộ xương được các nhà phát triển triển khai

Kể từ PHP5, có thể định nghĩa một giao diện, như thế này -

price = $par;
      }
      
      function getPrice[]{
         echo $this->price ."
"; } function setTitle[$par]{ $this->title = $par; } function getTitle[]{ echo $this->title ."
"; } } ?>
4

Sau đó, nếu một lớp khác triển khai giao diện đó, như thế này -

price = $par;
      }
      
      function getPrice[]{
         echo $this->price ."
"; } function setTitle[$par]{ $this->title = $par; } function getTitle[]{ echo $this->title ."
"; } } ?>
5

hằng số

Một hằng số giống như một biến, ở chỗ nó giữ một giá trị, nhưng thực sự giống một hàm hơn vì một hằng số là bất biến. Khi bạn khai báo một hằng số, nó không thay đổi

Việc khai báo một hằng số rất dễ dàng, như đã được thực hiện trong phiên bản MyClass này -

price = $par;
      }
      
      function getPrice[]{
         echo $this->price ."
"; } function setTitle[$par]{ $this->title = $par; } function getTitle[]{ echo $this->title ."
"; } } ?>
6

Trong lớp này, requiredMargin là một hằng số. Nó được khai báo với từ khóa const và trong mọi trường hợp, nó không thể thay đổi thành bất kỳ thứ gì khác ngoài 1. 7. Lưu ý rằng tên của hằng số không có $ ở đầu, giống như tên biến

Các lớp trừu tượng

Lớp trừu tượng là lớp không thể khởi tạo mà chỉ được kế thừa. Bạn khai báo một lớp trừu tượng với từ khóa trừu tượng, như thế này -

Khi kế thừa từ một lớp trừu tượng, tất cả các phương thức được đánh dấu là trừu tượng trong phần khai báo của lớp cha phải được định nghĩa bởi lớp con;

price = $par;
      }
      
      function getPrice[]{
         echo $this->price ."
"; } function setTitle[$par]{ $this->title = $par; } function getTitle[]{ echo $this->title ."
"; } } ?>
7

Lưu ý rằng các định nghĩa hàm bên trong một lớp trừu tượng cũng phải được đặt trước từ khóa trừu tượng. Không hợp pháp khi có các định nghĩa hàm trừu tượng bên trong một lớp không trừu tượng

Từ khóa tĩnh

Khai báo các thành viên hoặc phương thức của lớp là tĩnh giúp chúng có thể truy cập được mà không cần khởi tạo lớp. Một thành viên được khai báo là tĩnh không thể được truy cập bằng một đối tượng lớp được khởi tạo [mặc dù một phương thức tĩnh có thể]

Hãy thử ví dụ sau -

price = $par;
      }
      
      function getPrice[]{
         echo $this->price ."
"; } function setTitle[$par]{ $this->title = $par; } function getTitle[]{ echo $this->title ."
"; } } ?>
8

từ khóa cuối cùng

PHP 5 giới thiệu từ khóa cuối cùng, từ khóa này ngăn các lớp con ghi đè một phương thức bằng cách thêm tiền tố vào định nghĩa bằng từ khóa cuối cùng. Nếu bản thân lớp đang được định nghĩa cuối cùng thì nó không thể được mở rộng

Ví dụ sau dẫn đến lỗi nghiêm trọng. Không thể ghi đè phương thức cuối cùng BaseClass. thêmThử nghiệm[]

price = $par;
      }
      
      function getPrice[]{
         echo $this->price ."
"; } function setTitle[$par]{ $this->title = $par; } function getTitle[]{ echo $this->title ."
"; } } ?>
9

Gọi các nhà xây dựng cha mẹ

Thay vì viết một hàm tạo hoàn toàn mới cho lớp con, hãy viết nó bằng cách gọi hàm tạo của cha mẹ một cách rõ ràng và sau đó làm bất cứ điều gì cần thiết ngoài việc khởi tạo lớp con. Đây là một ví dụ đơn giản -

$physics = new Books;
$maths = new Books;
$chemistry = new Books;
0

Trong ví dụ này, chúng ta có một lớp cha [Name], có một hàm tạo hai đối số và một lớp con [NameSub1], có một hàm tạo ba đối số. Hàm tạo của các hàm NameSub1 bằng cách gọi rõ ràng hàm tạo chính của nó bằng cách sử dụng. cú pháp [chuyển hai đối số của nó] và sau đó thiết lập một trường bổ sung. Tương tự, NameSub1 định nghĩa hàm toString[] không phải hàm tạo của nó theo hàm cha mà nó ghi đè

LƯU Ý - Một hàm tạo có thể được định nghĩa với cùng tên với tên của một lớp. Nó được định nghĩa trong ví dụ trên

Làm thế nào chúng ta sử dụng một lớp trong PHP?

Các lớp không là gì nếu không có đối tượng. Chúng ta có thể tạo nhiều đối tượng từ một lớp. Mỗi đối tượng có tất cả các thuộc tính và phương thức được định nghĩa trong lớp, nhưng chúng sẽ có các giá trị thuộc tính khác nhau. Các đối tượng của một lớp được tạo bằng từ khóa new

Lớp học trong PHP giải thích nó bằng ví dụ là gì?

Lớp là kiểu dữ liệu do lập trình viên định nghĩa, bao gồm các phương thức cục bộ và biến cục bộ . Lớp là tập hợp các đối tượng. Đối tượng có thuộc tính và hành vi.

Lớp là gì và cách viết lớp trong PHP?

Các khía cạnh chính của lớp PHP .
Định nghĩa một lớp với từ khóa “class” theo sau là tên của lớp
Xác định phương thức khởi tạo bằng cách sử dụng “__construct” theo sau là các đối số. Sau đó, đối tượng của lớp có thể được khởi tạo bằng cách sử dụng “Tên lớp mới [đối số_danh sách]”
Xác định các biến lớp. .
Xác định các phương thức sử dụng từ khóa “hàm”

Làm cách nào để chèn một lớp trong PHP?

Bao gồm ví dụ về lớp với từ khóa sử dụng từ Giao diện dòng lệnh. .
Tạo một thư mục mới /home/el/bin
Tạo một tệp mới có tên namespace_example. .
Tạo một tệp khác có tên mylib. .
Chạy nó từ dòng lệnh như thế này. el@apollo. ~/bin$ php namespace_example. php

Chủ Đề