Làm cách nào để xác định tên lớp trong PHP?

Lập trình hướng đối tượng là một cách tiếp cận lập trình trong đó các đối tượng và lớp được sử dụng. Ngày nay Java và C ++ chủ yếu được sử dụng cho lập trình hướng đối tượng. Phạm vi lập trình hướng đối tượng trong PHP 4 bị hạn chế, nhưng trong PHP 5, mô hình đối tượng đã được viết lại để có hiệu suất tốt hơn và nhiều tính năng hơn. Bây giờ PHP 5 có một mô hình đối tượng đầy đủ

nội dung

Đối tượng là gì?

Ý tưởng cơ bản đằng sau một ngôn ngữ hướng đối tượng là bao gồm một nhóm các biến và hàm thành một đơn vị duy nhất và giữ cho cả biến và hàm an toàn khỏi sự can thiệp và lạm dụng từ bên ngoài. Một đơn vị như vậy được gọi là đối tượng tác động lên dữ liệu. Cơ chế liên kết dữ liệu và chức năng với nhau được gọi là đóng gói. Tính năng này giúp dễ dàng sử dụng lại mã trong các dự án khác nhau. Các chức năng được khai báo trong một đối tượng cung cấp cách truy cập dữ liệu. Các chức năng của một đối tượng được gọi là các phương thức và tất cả các phương thức của một đối tượng đều có quyền truy cập vào các biến được gọi là các thuộc tính
Hình ảnh sau đây cho thấy các thành phần của một đối tượng

Làm cách nào để xác định tên lớp trong PHP?

 

Lớp học

Trong lập trình hướng đối tượng, một lớp là một cấu trúc hoặc nguyên mẫu mà từ đó các đối tượng được tạo ra. Một lớp định nghĩa các thành viên cấu thành cho phép các thể hiện của lớp có trạng thái và hành vi. Các thành viên trường dữ liệu cho phép một đối tượng lớp duy trì trạng thái và các phương thức cho phép hành vi của đối tượng lớp. Hình ảnh sau đây cho thấy các thành phần của một lớp

Làm cách nào để xác định tên lớp trong PHP?

 

PHP. Tạo các lớp và khởi tạo

  • Định nghĩa lớp bắt đầu bằng từ khóa lớp theo sau là tên lớp, sau đó là một tập hợp các dấu ngoặc nhọn ({}) bao quanh các hằng, biến (được gọi là "thuộc tính") và các hàm (được gọi là "phương thức") thuộc về lớp
  • Tên lớp hợp lệ (không bao gồm các từ dành riêng) bắt đầu bằng một chữ cái hoặc dấu gạch dưới, theo sau là bất kỳ số lượng chữ cái, số hoặc dấu gạch dưới nào
  • Tên lớp thường bắt đầu bằng một chữ hoa để phân biệt chúng với các định danh khác
  • Một thể hiện là một đối tượng đã được tạo ra từ một lớp hiện có
  • Tạo một đối tượng từ một lớp hiện có được gọi là khởi tạo đối tượng
  • Để tạo một đối tượng từ một lớp, phải sử dụng từ khóa mới
  • Các lớp nên được xác định trước khi khởi tạo

Ví dụ

<?php
class Myclass
{      
 // Add property statements here
 // Add the methods here
} 
?>

Trong ví dụ sau, từ khóa mới được sử dụng để khởi tạo một đối tượng. Ở đây $myobj đại diện cho một đối tượng của lớp Myclass

<?php    
$myobj = new MyClass; 
?>

Hãy xem nội dung của lớp Myclass sử dụng hàm var_dump() (hiển thị thông tin có cấu trúc (loại và giá trị) về một hoặc nhiều biến)

<?php    
class Myclass
{      
 // Add property statements here
 // Add the methods here
}
$myobj = new MyClass;
var_dump($myobj);
?>

đầu ra

object(Myclass)#1 (0) { }

Xem ví dụ trên trình duyệt

Đặt thuộc tính

  • Các biến thành viên của lớp được gọi là thuộc tính. Đôi khi chúng được gọi là thuộc tính hoặc trường
  • Các thuộc tính chứa dữ liệu cụ thể và liên quan đến lớp mà nó đã được xác định
  • Khai báo một thuộc tính trong một lớp là một nhiệm vụ dễ dàng, sử dụng một trong các từ khóa công khai, được bảo vệ hoặc riêng tư theo sau là khai báo biến thông thường. Nếu khai báo bằng var (tương thích với PHP 4) thì thuộc tính sẽ được định nghĩa là public
    • công cộng. Thuộc tính có thể được truy cập từ bên ngoài lớp, bằng tập lệnh hoặc từ lớp khác
    • riêng tư. Không có quyền truy cập nào được cấp từ bên ngoài lớp, bởi tập lệnh hoặc từ một lớp khác
    • được bảo vệ. Không có quyền truy cập nào được cấp từ bên ngoài lớp trừ một lớp là con của lớp có thuộc tính hoặc phương thức được bảo vệ
  • nowdocs ( kể từ PHP 5. 3. 0) có thể được sử dụng trong bất kỳ ngữ cảnh dữ liệu tĩnh nào, bao gồm cả khai báo thuộc tính

Ví dụ

Sau khi một đối tượng được khởi tạo, bạn có thể truy cập thuộc tính của một lớp bằng toán tử đối tượng và ->. Bất kỳ thành viên nào được khai báo với từ khóa "riêng tư" hoặc "được bảo vệ" đều không thể được truy cập bên ngoài phương thức của lớp

<?php   
class Myclass
{
 public $font_size =10;
}
$f = new MyClass;
echo $f->font_size;
?>

đầu ra

10

Xem ví dụ trên trình duyệt

Ghi chú. Có một lỗi phổ biến là sử dụng nhiều hơn một ký hiệu đô la khi truy cập các biến. Trong ví dụ trên sẽ không có ký hiệu $ trước font_size ( echo $f->font_size ).

Sau khi xác định các phương thức, chúng ta sẽ thảo luận về một ví dụ với các thuộc tính lớp công khai, riêng tư và được bảo vệ

Phương pháp cài đặt

  • Các hàm được khai báo trong một lớp được gọi là các phương thức
  • Một phương thức lớp hoàn toàn giống với các hàm PHP
  • Khai báo một phương thức trong một lớp là một nhiệm vụ dễ dàng, sử dụng một trong các từ khóa công khai, được bảo vệ hoặc riêng tư theo sau là tên phương thức
    • công cộng. Phương thức có thể được truy cập từ bên ngoài lớp
    • riêng tư. Không có quyền truy cập được cấp từ bên ngoài lớp học
    • được bảo vệ. Không có quyền truy cập nào được cấp từ bên ngoài lớp trừ một lớp là con của lớp có thuộc tính hoặc phương thức được bảo vệ
  • Tên phương thức hợp lệ bắt đầu bằng một chữ cái hoặc dấu gạch dưới, theo sau là bất kỳ số lượng chữ cái, số hoặc dấu gạch dưới nào
  • Phần thân của phương thức được đặt trong một cặp dấu ngoặc nhọn chứa mã. Dấu ngoặc nhọn mở ( { ) biểu thị phần đầu của mã phương thức và dấu ngoặc nhọn đóng ( } ) biểu thị phần cuối của phương thức
  • Nếu phương thức không được xác định bởi công khai, được bảo vệ hoặc riêng tư thì mặc định là công khai
  • Có thể truy cập các thuộc tính và phương thức của phiên bản hiện tại bằng cách sử dụng $this (Định dạng $this->property) cho thuộc tính không tĩnh

Ví dụ

Sau khi một đối tượng được khởi tạo, bạn có thể truy cập phương thức của một lớp bằng toán tử đối tượng và ->. Trong ví dụ sau, phương thức custom_print() sẽ in một chuỗi có kích thước và màu phông chữ cụ thể trong một phần tử đoạn html với sự trợ giúp của câu lệnh php echo

<?php   
class Myclass
{
 public $font_size ="18px";
 public $font_color = "blue";
 public $string_name = "w3resource";
 public function customize_print()
 {
 echo "<p style=font-size:".$this->font_size.";color:".$this->font_color.";>".$this->string_name."</p>";
 }
}
$f = new MyClass;
echo $f->customize_print();
?>

đầu ra

Làm cách nào để xác định tên lớp trong PHP?

 

Xem ví dụ trên trình duyệt

Bây giờ hãy thay đổi giá trị của font_size, font_color và chuỗi, đồng thời kiểm tra xem phương thức custimize_print() trả về kết quả gì.

<?php   
class Myclass
{
 public $font_size ="18px";
 public $font_color = "blue";
 public $string_name = "w3resource";
 public function customize_print()
 {
 echo "<p style=font-size:".$this->font_size.";color:".$this->font_color.";>".$this->string_name."</p>";
 }
}
$f = new MyClass;
$f->font_size = "20px";
$f->font_color = "red";
$f->string_name = "Object Oriented Programming";
echo $f->customize_print();
?>

đầu ra

Làm cách nào để xác định tên lớp trong PHP?

 

Xem ví dụ trên trình duyệt

PHP. Toán tử phân giải phạm vi (. )

Trong PHP, toán tử phân giải phạm vi còn được gọi là Paamayim Nekudotayim có nghĩa là "dấu hai chấm" hoặc "chấm kép hai lần" trong tiếng Do Thái. Dấu hai chấm (. ), là mã thông báo cho phép truy cập vào các thuộc tính hoặc phương thức tĩnh, hằng và bị ghi đè của một lớp

PHP. Hằng số lớp

  • Một thực thể đặc biệt vẫn cố định trên cơ sở lớp riêng lẻ
  • Tên hằng không có dấu đô la ($) đứng trước như khai báo biến thông thường
  • Các giao diện cũng có thể bao gồm các hằng số
  • Khi gọi một hằng số lớp bằng cách sử dụng $classname. cú pháp không đổi, tên lớp thực sự có thể là một biến
  • Kể từ PHP 5. 3, bạn có thể truy cập hằng số lớp tĩnh bằng tham chiếu biến (Ví dụ. tên lớp. $varConstant)

Định nghĩa và sử dụng hằng số

________số 8_______

Hiểu các thuộc tính công cộng, riêng tư, được bảo vệ

Các thuộc tính có thể là công khai, riêng tư hoặc được bảo vệ. Công khai có nghĩa là các thuộc tính có thể được truy cập ở mọi nơi, riêng tư có nghĩa là các thuộc tính có thể được truy cập bởi lớp xác định thành viên và được bảo vệ có nghĩa là các thuộc tính chỉ có thể được truy cập trong chính lớp đó và bởi các lớp cha và kế thừa

Ví dụ

<?php
// Define a class
class Myclass
{
 // Declare $font_size as Public property
 public $font_size ="18px"; 
 // Declare $font_color as Private property
 private $font_color = "blue"; 
 // Declare $string_name as Protected property
 protected $string_name = "w3resource"; 
 // Declare a method to print properties value. This is public.
 function property_print()
 {
 echo $this->font_size;
 echo $this->font_color;
 echo $this->string_name;
 }
}
$obj = new MyClass;
echo $obj->font_size; //Display 18px 
echo $obj->font_color; //Fatal error: Cannot access private property Myclass::$font_color in F:\wamp\..
echo $obj->string_name; //Fatal error: Cannot access protected property Myclass::$string_name in F:\wamp\. 
$obj->property_print(); //Display 18pxbluew3resource
?>

Hiểu các phương thức công khai, riêng tư, được bảo vệ

Các phương thức có thể là công khai, riêng tư hoặc được bảo vệ. Công khai có nghĩa là các phương thức có thể được truy cập ở mọi nơi, riêng tư có nghĩa là các phương thức có thể được truy cập bởi lớp xác định thành viên và được bảo vệ có nghĩa là các phương thức chỉ có thể được truy cập trong chính lớp đó và bởi các lớp kế thừa và lớp cha

<?php    
$myobj = new MyClass; 
?>
0

Ghi chú. PHP sử dụng tính kế thừa trong mô hình đối tượng của nó và khi bạn mở rộng một lớp, lớp con sẽ kế thừa tất cả các phương thức công khai và được bảo vệ từ lớp cha. Khi chúng ta thảo luận về thừa kế, bạn sẽ có thêm thông tin về các thuộc tính và phương thức được bảo vệ

Các phương thức Trình xây dựng PHP

  • Hàm tạo là một phương thức tích hợp đặc biệt, được thêm vào PHP 5, cho phép các nhà phát triển khai báo cho các lớp
  • Hàm tạo cho phép khởi tạo thuộc tính đối tượng ( i. e. các giá trị của thuộc tính) khi một đối tượng được tạo
  • Các lớp có phương thức khởi tạo tự động thực thi khi một đối tượng được tạo
  • Phương thức 'xây dựng' bắt đầu bằng hai dấu gạch dưới (__)
  • Hàm tạo không bắt buộc nếu bạn không muốn chuyển bất kỳ giá trị thuộc tính nào hoặc thực hiện bất kỳ hành động nào khi đối tượng được tạo
  • PHP chỉ gọi một hàm tạo

Cú pháp chung để khai báo hàm tạo như sau

hàm __construct([đối số1, đối số2,. , đối sốN])
{
/* Mã khởi tạo lớp */
}
Loại đối số1, đối số2,. , đối sốN được trộn lẫn

Ví dụ

<?php    
$myobj = new MyClass; 
?>
1

đầu ra

Làm cách nào để xác định tên lớp trong PHP?

 

Xem ví dụ trên trình duyệt

Thêm ví dụ về hàm tạo

Giống như các thuộc tính, các hàm tạo có thể gọi các phương thức của lớp hoặc các hàm khác. Trong ví dụ sau, không cần gọi riêng phương thức (sau khi tạo đối tượng và truyền tham số, xem ví dụ trước) vì nó đã được khai báo trong hàm tạo. Xem ví dụ sau

<?php    
$myobj = new MyClass; 
?>
2

đầu ra

Làm cách nào để xác định tên lớp trong PHP?

 

Xem ví dụ trên trình duyệt

Các phương thức hàm hủy PHP

  • Hàm hủy là đối tác của hàm tạo
  • Hàm hủy được gọi khi đối tượng bị hủy
  • Hàm hủy sẽ dọn sạch mọi tài nguyên được phân bổ cho một đối tượng sau khi đối tượng bị hủy
  • Hàm hủy thường được gọi theo hai cách. Khi một tập lệnh kết thúc hoặc xóa thủ công một đối tượng bằng hàm unset()
  • Phương thức 'hàm hủy' bắt đầu bằng hai dấu gạch dưới (__)

Cú pháp chung để khai báo hàm hủy như sau

chức năng __destroy
{
/* Mã khởi tạo lớp */
}
Loại đối số1, đối số2,. , đối sốN được trộn lẫn

Ví dụ

<?php    
$myobj = new MyClass; 
?>
3

đầu ra

<?php    
$myobj = new MyClass; 
?>
4

Xem ví dụ trên trình duyệt

PHP. Sử dụng nhiều phiên bản của cùng một lớp

Trong ví dụ sau, chúng tôi đã tạo nhiều đối tượng (thể hiện) của cùng một lớp và chuyển các giá trị khác nhau

<?php    
$myobj = new MyClass; 
?>
5

đầu ra

Làm cách nào để xác định tên lớp trong PHP?

 

Xem ví dụ trên trình duyệt

PHP. spl_autoload_register()

Nhiều nhà phát triển viết các ứng dụng hướng đối tượng tạo một tệp nguồn PHP cho mỗi định nghĩa lớp. Một trong những điều khó chịu nhất là phải viết một danh sách dài các mục cần thiết ở đầu mỗi tập lệnh (một mục cho mỗi lớp). Theo truyền thống, hàm __autoload() được sử dụng để tự động tải các lớp. Kể từ PHP 5. 1. 2 một hàm mới spl_autoload_register() được giới thiệu cung cấp một giải pháp thay thế linh hoạt hơn cho các lớp tự động tải. Vì lý do này, việc sử dụng __autoload() không được khuyến khích và có thể không được dùng nữa hoặc bị xóa trong tương lai

cú pháp

<?php    
$myobj = new MyClass; 
?>
6

Tham số

NameDescriptionautoload_functionChức năng autoload đang được đăng ký. Nếu không có tham số nào được cung cấp, thì việc triển khai mặc định của spl_autoload() sẽ được đăng ký. throwThông số này chỉ định liệu spl_autoload_register() có ném ngoại lệ khi không thể đăng ký autoload_function hay không. prependNếu đúng, spl_autoload_register() sẽ thêm bộ nạp tự động vào ngăn xếp tự động nạp thay vì nối thêm vào

Giá trị trả về

Trả về TRUE nếu thành công hoặc FALSE nếu thất bại

Bạn có thể sử dụng hàm spl_autoload_register() theo cách sau

<?php    
$myobj = new MyClass; 
?>
7

Ví dụ

Lúc đầu, chúng tôi sẽ tạo hai lớp và lưu trữ chúng trong đường dẫn /php/classes-objects/resource

lớp 1. php

<?php    
$myobj = new MyClass; 
?>
8

lớp 2. php

<?php    
$myobj = new MyClass; 
?>
9

Bây giờ, hãy tạo một chuỗi in tệp. php và lưu nó vào /php/classes-objects

<?php    
class Myclass
{      
 // Add property statements here
 // Add the methods here
}
$myobj = new MyClass;
var_dump($myobj);
?>
0

Trong ví dụ trên, chúng tôi đang cố gắng tạo hai đối tượng, trong đó tên lớp là 'lớp 1' (lưu trong /php/classes-objects/resource/class 1. php) và 'class2' (lưu trong /php/classes-objects/resource/class2. php). PHP chuyển tên này dưới dạng một chuỗi tới spl_autoload_register(), cho phép bạn chọn biến và sử dụng nó để "bao gồm" lớp/tệp thích hợp

đầu ra

Làm cách nào để xác định tên lớp trong PHP?

 

Xem ví dụ trên trình duyệt

PHP. Di sản

  • Kế thừa là một nguyên tắc lập trình được thiết lập tốt
  • Kế thừa cho phép các lớp tạo thành một hệ thống phân cấp giống như cây gia đình
  • Cho phép các lớp con chia sẻ các phương thức và thuộc tính (công khai hoặc được bảo vệ) của lớp cha của nó
  • Lớp cha là lớp cha
  • Một lớp con có thể thêm các thuộc tính và phương thức
  • Kế thừa cho phép sử dụng lại mã
Làm cách nào để xác định tên lớp trong PHP?

 

Ví dụ

Trong lớp con ví dụ sau, 'Mysubclass' kế thừa tất cả các thuộc tính được bảo vệ và phương thức công khai từ lớp 'Myclass'. Ngoài ra, chúng tôi thêm thuộc tính text-decoration trong câu lệnh echo trong phân lớp 'Mysubclass'

<?php    
class Myclass
{      
 // Add property statements here
 // Add the methods here
}
$myobj = new MyClass;
var_dump($myobj);
?>
1

đầu ra

Làm cách nào để xác định tên lớp trong PHP?

 

Xem ví dụ trên trình duyệt

PHP. giao diện

  • Cung cấp các phương pháp để thực hiện
  • Các lớp dẫn xuất có thể triển khai nhiều hơn một giao diện
  • Các giao diện có thể kế thừa từ các giao diện khác bằng cách sử dụng từ khóa mở rộng
  • Tất cả các phương thức được coi là công khai trong định nghĩa giao diện có thể được định nghĩa rõ ràng là công khai hoặc ngầm định
  • Khi một lớp thực hiện nhiều giao diện, không thể có bất kỳ xung đột đặt tên nào giữa các phương thức được định nghĩa trong các giao diện khác nhau

cú pháp

<?php    
class Myclass
{      
 // Add property statements here
 // Add the methods here
}
$myobj = new MyClass;
var_dump($myobj);
?>
2

PHP. Nhân bản đối tượng

  • Nhân bản được sử dụng để tạo một bản sao của một đối tượng
  • Một bản sao đối tượng được tạo bằng cách sử dụng từ khóa clone
  • Khi một đối tượng được nhân bản, PHP 5 sẽ thực hiện một bản sao nông của tất cả các thuộc tính của đối tượng
  • Bất kỳ thuộc tính nào là tham chiếu đến các biến khác, sẽ vẫn là tham chiếu
  • PHP cung cấp một phương thức đặc biệt __clone để sao chép một đối tượng
  • Khi quá trình nhân bản hoàn tất, nếu một phương thức __clone() được xác định, thì phương thức __clone() của đối tượng mới được tạo sẽ được gọi, để cho phép bất kỳ thuộc tính cần thiết nào cần được thay đổi

Ví dụ

Trong PHP, nhân bản đối tượng được thực hiện bằng cách sử dụng từ khóa clone. Đây là một ví dụ về nhân bản đối tượng

Ví dụ. Nhân bản đối tượng bằng phương pháp ma thuật __clone

<?php    
class Myclass
{      
 // Add property statements here
 // Add the methods here
}
$myobj = new MyClass;
var_dump($myobj);
?>
3

đầu ra

<?php    
class Myclass
{      
 // Add property statements here
 // Add the methods here
}
$myobj = new MyClass;
var_dump($myobj);
?>
4

Xem ví dụ trên trình duyệt

PHP. phương pháp ma thuật

Tên hàm __construct(), __destroy(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke() . PHP bảo lưu tất cả các tên hàm bắt đầu bằng __ như một điều kỳ diệu

Chúng ta đã thảo luận về các phương thức __construct(), __destroy() và __clone()

Dưới đây là các phương pháp ma thuật khác

__gọi()

__call() được kích hoạt khi gọi các phương thức không thể truy cập trong ngữ cảnh đối tượng

cú pháp. __call hỗn hợp công khai ( chuỗi $name , mảng $arguments )

__callStatic()

__callStatic() được kích hoạt khi gọi các phương thức không thể truy cập trong ngữ cảnh tĩnh

cú pháp. __call hỗn hợp công khai ( chuỗi $name , mảng $arguments )

__lấy()

__get() được sử dụng để đọc dữ liệu từ các thuộc tính không thể truy cập

cú pháp. __get hỗn hợp công khai ( chuỗi $name )

__bộ()

__set() được chạy khi ghi dữ liệu vào các thuộc tính không thể truy cập

cú pháp. public void __set ( string $name , hỗn hợp $value )

__isset()

__isset() được kích hoạt bằng cách gọi isset() hoặc empty() trên các thuộc tính không thể truy cập

cú pháp. bool công khai __isset ( chuỗi $name )

__unset()

__unset() được gọi khi unset() được sử dụng trên các thuộc tính không thể truy cập

cú pháp. khoảng trống công khai __unset ( chuỗi $name )

__ngủ()

__sleep() được sử dụng để chuyển giao dữ liệu đang chờ xử lý hoặc thực hiện các tác vụ dọn dẹp tương tự. Ngoài ra, chức năng này rất hữu ích nếu bạn có các đối tượng rất lớn không cần phải lưu hoàn toàn

cú pháp. mảng công khai __sleep ( void )

__thức dậy()

__wakeup() được sử dụng để thiết lập lại bất kỳ kết nối cơ sở dữ liệu nào có thể đã bị mất trong quá trình tuần tự hóa và thực hiện các tác vụ khởi tạo lại khác

Làm cách nào để lấy tên lớp trong PHP?

Hàm get_class() là một hàm có sẵn trong PHP được sử dụng để trả về tên lớp của một đối tượng.

Cách xác định thuộc tính lớp trong PHP?

Các lớp có thể có các biến bên trong nó. Các biến đó được gọi là thuộc tính. Một thuộc tính là một biến PHP bình thường ở bất kỳ kiểu dữ liệu nào (số nguyên, chuỗi, mảng, đối tượng, v.v.). Trong các lớp, trước khi khai báo một biến, chúng ta nên thêm từ khóa khả năng hiển thị để xác định vị trí của biến đó .

Làm cách nào để lấy tên lớp PHP mà không có không gian tên?

Bạn có thể sử dụng ReflectionClass. getShortName lấy tên của lớp mà không có không gian tên của nó.

Làm cách nào để chạy lớp trong PHP?

lớp php MyClass { hàm công khai Sum($a, $b) { $sum = $a+$b; . $funcName'