PHP lấy tên lớp từ đối tượng

Giả sử chúng ta có một lớp tên là Fruit. Một Trái cây có thể có các thuộc tính như tên, màu sắc, trọng lượng, v.v. Chúng ta có thể định nghĩa các biến như $name, $color và $weight để giữ các giá trị của các thuộc tính này

Khi các đối tượng riêng lẻ (táo, chuối, v.v.). ) được tạo ra, chúng kế thừa tất cả các thuộc tính và hành vi từ lớp, nhưng mỗi đối tượng sẽ có các giá trị khác nhau cho các thuộc tính


Xác định một lớp

Một lớp được định nghĩa bằng cách sử dụng từ khóa class, theo sau là tên của lớp và một cặp dấu ngoặc nhọn ({}). Tất cả các thuộc tính và phương thức của nó đi vào bên trong dấu ngoặc nhọn

cú pháp

lớp trái cây {
// mã ở đây
}
?>

Dưới đây chúng ta khai báo một lớp có tên là Fruit bao gồm hai thuộc tính ($name và $color) và hai phương thức set_name() và get_name() để thiết lập và lấy thuộc tính $name

lớp trái cây {
// Của cải
tên $ công khai;
$color công khai;

// Phương thức
hàm set_name($name) {
$this->name = $name;
}
hàm get_name() {
trả về $this->name;
}
}
?>

Ghi chú. Trong một lớp, các biến được gọi là thuộc tính và hàm được gọi là phương thức


Xác định đối tượng

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

Trong ví dụ dưới đây, $apple và $banana là các thể hiện của lớp Fruit

Thí dụ

lớp trái cây {
// Của cải
tên $ công khai;
$color công khai;

// Phương thức
hàm set_name($name) {
$this->name = $name;
}
hàm get_name() {
trả về $this->name;
}
}

$apple = trái cây mới();
$ chuối = trái cây mới();
$apple->set_name('Apple');
$banana->set_name('Banana');

tiếng vang $apple->get_name();
tiếng vang"
“;
echo $banana->get_name();
?>

Tự mình thử »

Trong ví dụ bên dưới, chúng tôi thêm hai phương thức nữa vào lớp Fruit, để thiết lập và nhận thuộc tính $color

class foo {
    function name()
    {
        echo "My name is " , get_class($this) , "\n";
    }
}

// create an object
$bar = new foo();

// external call
echo "Its name is " , get_class($bar) , "\n";

// internal call
$bar->name();

?>

Chúng ta có thể lấy tên lớp không gian tên đủ điều kiện của một đối tượng bằng cách sử dụng hàm ________ 39 _______. Giả sử rằng lớp đối tượng của chúng ta có ít nhất một không gian tên. Nếu chúng ta chỉ muốn lấy tên lớp, chúng ta có thể sử dụng lớp phản chiếu để lấy tên viết tắt của lớp

>>> get_class($obj);
=> "App\Models\Project"
>>> (new \ReflectionClass($obj))->getShortName();
=> "Project"

Một tùy chọn khác là thực sự lấy tên lớp được đặt tên đủ điều kiện của đối tượng và lấy tên lớp thông qua thao tác chuỗi

>>> end(explode('\\', get_class($obj)));
=> "Project"

Xin lưu ý rằng chúng ta cần thoát khỏi dấu gạch chéo ngược

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, hằng số PHP

YourNameSpace\HelloClassName
2 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