Làm thế nào để tìm một lớp học trong php?

PHP có hằng số ma thuật ::class phân giải tên lớp thành tên lớp đủ điều kiện của nó. Khi được sử dụng với một tên lớp, các câu lệnh useuse as sẽ được giải quyết hoặc không gian tên hiện tại sẽ được thêm tiền tố khiến nó trở thành một tên lớp đủ điều kiện

Ví dụ


namespace App\Demos;

use Foo\Bar;
use Bar\Baz as BBaz;

class Demo {}

// `use` statement is resolved:
echo Bar::class; // "Foo\Bar"

// `use` X `as` Y is resolved:
echo BBaz::class; // "Bar\Baz"

// Current namespace is resolved:
echo Demo::class; // "App\Demos\Demo"

Cho đến PHP 8. 0, hằng số ma thuật ::class không được phép trên các đối tượng

$object = new Foo\Bar();
echo $object::class;

// Fatal error: Cannot use ::class with dynamic class name.

Với PHP8. 0, bây giờ bạn có thể sử dụng hằng số ::class trên các đối tượng và nó sẽ được giải quyết chính xác trong thời gian chạy

$object = new Foo\Bar();
echo $object::class;

// PHP 8.0+:
// "Foo\Bar"

Kết quả tương tự như $object = new Foo\Bar(); echo $object::class; // Fatal error: Cannot use ::class with dynamic class name.1

Hằng số ::class trên một đối tượng được khởi tạo sẽ trả về giá trị trả về chính xác giống như một lệnh gọi

$object = new Foo\Bar();
echo $object::class;

// Fatal error: Cannot use ::class with dynamic class name.
1

get_class($object) === $object::class;

Không phải đối tượng không được phép

Không được phép sử dụng ::class trên một đối tượng không phải đối tượng

$object = array();
$object::class;

// Fatal error: Uncaught TypeError: Cannot use ::class on value of type array in ...:...

Nếu bạn cần lấy kiểu của bất kỳ biến nào, PHP 8. 0 đi kèm với một hàm

$object = new Foo\Bar();
echo $object::class;

// Fatal error: Cannot use ::class with dynamic class name.
5 mới mà bạn có thể gọi để lấy tên lớp, loại vô hướng, loại tài nguyên, v.v. tất cả từ một hàm tiện dụng

Tác động tương thích ngược

Trong các phiên bản PHP trước 8. 0, sử dụng ::class trên một đối tượng sẽ gây ra lỗi nghiêm trọng. Bởi vì PHP 8. 0 đang nới lỏng lỗi này, điều này sẽ không tạo ra bất kỳ sự cố BC mới nào. Tuy nhiên, điều này sẽ làm cho mã của bạn yêu cầu PHP 8. 0 để chạy mà không có cách nào để bổ sung chức năng này cho các phiên bản cũ hơn

Đôi khi bạn cần lấy tên lớp hoặc tên lớp cha của một đối tượng trong PHP để làm điều gì đó có điều kiện, v.v. Bài đăng này xem xét làm thế nào để làm điều này

Các hàm có liên quan là get_class() và get_parent_class() và cả hai đều có thể được chuyển qua một thể hiện của đối tượng. Hàm get_parent_class() cũng có thể được truyền vào tên lớp. Cả hai sau đó sẽ trả về tên của lớp dưới dạng một chuỗi

Ví dụ, chúng ta có hai lớp sau

________số 8_______

Sau đó, chúng tôi tạo một thể hiện của thanh

$bar = new bar;

Chúng ta có thể lấy tên lớp và tên lớp cha như vậy

echo get_class($bar); // will echo 'bar'
echo get_parent_class($bar); // will echo 'foo'
echo get_parent_class('bar'); // will also echo 'foo'

Lưu ý rằng việc chuyển tên lớp dưới dạng chuỗi tới get_class() sẽ không trả về tên lớp. Bạn đã biết tên lớp nếu bạn chuyển nó dưới dạng một chuỗi nên sẽ không có nhiều điểm khi gọi nó

Nếu bạn đang gọi các hàm từ chính lớp đó, bạn có thể chuyển nó $this. Ví dụ, chúng ta sẽ định nghĩa lại các lớp trên như sau

Hàm get_class() lấy tên lớp của một đối tượng. Nó trả về FALSE nếu đối tượng không phải là đối tượng. Nếu đối tượng bị loại trừ khi ở trong một lớp, tên của lớp đó được trả về

cú pháp

get_class(object)

Thông số

  • đối tượng  − Đối tượng được thử nghiệm. Bạn có thể tránh tham số này bên trong cass

Trở lại

Hàm get_class() trả về tên lớp của một đối tượng. Nó trả về FALSE nếu đối tượng không phải là đối tượng. Nếu đối tượng bị loại trừ khi ở trong một lớp, tên của lớp đó được trả về

Hướng dẫn này sẽ thảo luận về cách lấy tên lớp PHP với độ phân giải tên lớp, PHP

YourNameSpace\HelloClassName
2 hằng số và phương thức
YourNameSpace\HelloClassName
3. Bạn sẽ học cách sử dụng nó để phân giải tên lớp trong và ngoài lớp

Sử dụng Độ phân giải tên lớp để lấy tên lớp trong PHP

Bạn có thể lấy tên lớp thông qua độ phân giải tên lớp khi bạn có một không gian tên trong mã của mình. Kết quả là Tên Lớp Đủ Điều kiện (FQCN)

Tính năng này có sẵn trong PHP là

YourNameSpace\HelloClassName
4. Nó rất hữu ích khi bạn có một không gian tên trong PHP của mình

Trong ví dụ mã sau, phân giải tên lớp thông qua

YourNameSpace\HelloClassName
4 sẽ trả về tên lớp của lớp được liên kết


đầu ra

YourNameSpace\HelloClassName

Nếu bạn muốn sử dụng tính năng này trong phương thức lớp, bạn có thể lấy tên lớp thông qua phương thức tĩnh. Bạn sẽ viết cái này là

YourNameSpace\HelloClassName
6

Ví dụ mã tiếp theo cho thấy cách lấy tên lớp trong phương thức lớp

getClassName();
?>

đầu ra

YourNameSpace\HelloClassName

Sử dụng hằng số YourNameSpace\HelloClassName 2 để lấy tên lớp trong PHP

Hằng số

YourNameSpace\HelloClassName
2 là một phần của hằng số được xác định trước trong PHP. Bạn có thể sử dụng nó trong một lớp để lấy tên lớp

Đoạn mã sau sẽ lấy tên lớp thông qua hằng số

YourNameSpace\HelloClassName
2

HelloName();
?>

đầu ra

Sử dụng hàm YourNameSpace\HelloClassName 3 để lấy tên lớp trong PHP

PHP cung cấp một hàm

YourNameSpace\HelloClassName
3. Hàm này sẽ trả về tên lớp. Bạn có thể sử dụng nó trong lập trình thủ tục và hướng đối tượng. Đầu tiên, chúng ta sẽ xem xét phong cách thủ tục

Khối mã tiếp theo định nghĩa một lớp với một chức năng duy nhất. Hàm bên trong lớp sẽ trả về tên lớp khi đối số của nó là từ khóa

getClassName();
?>
2

Để lấy tên lớp, bạn tạo một đối tượng từ lớp;

class_name();

    // Also, you can get the class name
    // via an external call
    // echo get_class($new_hello_object);
?>

đầu ra

Lúc đầu, đối với kiểu OOP, bạn có thể trả về hàm

YourNameSpace\HelloClassName
3 từ một lớp tĩnh

	

đầu ra

Phương pháp này có những hạn chế của nó bởi vì khi bạn mở rộng lớp, lớp mở rộng sẽ trả về tên của lớp cha chứ không phải lớp mở rộng. Để giải quyết vấn đề này, bạn có thể sử dụng

getClassName();
?>
5

Hàm

getClassName();
?>
6 dựa trên liên kết tĩnh muộn. Với chức năng này, PHP sẽ trả về tên của lớp gọi. Nó giải quyết tình huống lớp mở rộng trả về tên của lớp cha chứ không phải tên của chính nó


đầu ra

Hello class name: Hello
Extended Hello class name: ExtendHello
Extended Hello parent class name: Hello

Sử dụng Lớp phản chiếu để lấy tên lớp trong PHP

Reflection Class là một cách ngắn gọn để lấy tên lớp trong PHP. Bạn tạo một lớp;

Lớp Reflection nên đặt đối số của nó thành

getClassName();
?>
7. Sau đó, bạn có thể lấy tên lớp thông qua phương thức
getClassName();
?>
8 có sẵn với lớp Reflection

getShortName();
        }
    }

    // Create a new class name
    $hello_class_name = new Hello();

    // Get the class name
    echo $hello_class_name->HelloClassName();
?>

đầu ra

Sử dụng getClassName(); ?> 9 trên đối tượng để lấy tên lớp trong PHP

Tính năng

getClassName();
?>
9 hoạt động trên các lớp trước PHP 8. Kể từ PHP, khi bạn tạo một đối tượng từ một lớp, bạn có thể lấy tên lớp từ đối tượng đã tạo bằng
getClassName();
?>
9

Làm cách nào để kiểm tra lớp của một đối tượng trong PHP?

Từ khóa instanceof dùng để kiểm tra xem một đối tượng có thuộc một lớp hay không. Phép so sánh trả về true nếu đối tượng là một thể hiện của lớp, nó trả về false nếu không phải.

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

Tên lớp có thể là bất kỳ nhãn hợp lệ nào, miễn là nó không phải là từ dành riêng cho PHP. Tên lớp hợp lệ bắt đầu bằng một chữ cái hoặc dấu gạch dưới, theo sau là một số chữ cái, số hoặc dấu gạch dưới bất kỳ . Là một biểu thức chính quy, nó sẽ được thể hiện như vậy. ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$.

Các lớp trong PHP là gì?

Các lớp là bản thiết kế của các đối tượng . Một trong những điểm khác biệt lớn giữa hàm và lớp là lớp chứa cả dữ liệu (biến) và hàm tạo thành một gói được gọi là. 'sự vật'. 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à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ó.