Instanceof php là gì?
Trong một số trường hợp bạn cần phải kiểm tra lớp cha hoặc lớp của một đối tượng nào đó, PHP cung cấp hai cách cơ bản là sử dụng hàm is_a() và sử dụng từ khóa instanceof, kết quả trả về là true/false
Để kiểm tra phương thức có tồn tại không ta có hàm method_exists(), hàm này có đối số thứ nhất là đối tượng, đối số thứ hai là tên phương thức cần kiểm tra, kết quả trả về là true/false Để kiểm tra thuộc tính có tồn tại không ta có hàm property_exists(), hàm này có đối số thứ nhất là đối tượng, đối số thứ hai là tên thuộc tính cần kiểm tra, kết quả trả về là true/false Cần lưu ý rằng nếu sử dụng 2 hàm method_exists() và property_exists() bên ngoài lớp thì phương thức hoặc thuộc tính cần kiểm tra phải có phạm vi là public Sau đây sẽ là ví dụ về cách sử dụng hàm is_a() và instanceof là một()bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given6 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given7 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given8 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given9 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given7 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given1 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given2 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given8 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given4 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given5 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given70 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given71 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given72 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given73 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given74 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given75 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given76 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given75 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given5 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given79 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given80 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given81 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given82 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given83 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given84 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given80 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given86 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given82 Hàm is_a() có 2 đối số là đối tượng và tên lớp muốn kiểm tra, tên lớp trong hàm không phân biệt kiểu viết hoa hay thường dụ củabool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given6 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given89 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given70 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given71 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given92 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given9 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given74 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given75 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given89 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given97 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given4 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given99____180_______171 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given72 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given73 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given74 instanceof có chức năng cũng như các đối tượng tự như function is_a() chỉ có sự khác biệt, cụ thể là instanceof có thể kiểm tra được giao diện còn is_a() thì không bool(true) bool(true) bool(false) bool(true)1 cũng có thể được sử dụng để xác định xem một biến có phải là đối tượng khởi tạo của một lớp kế thừa từ lớp cha hay không Ví dụ #2 Sử dụng bool(true) bool(true) bool(false) bool(true)1 với các lớp kế thừa bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given0 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given1 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given2 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given3 Ví dụ trên sẽ xuất ra Để kiểm tra xem một đối tượng có phải là một thể hiện của một lớp hay không, có thể sử dụng toán tử logic bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given4 Ví dụ #3 Sử dụng bool(true) bool(true) bool(false) bool(true)1 để kiểm tra xem đối tượng có phải là một thể hiện của một lớp không bool(true) bool(true) bool(false) bool(true)4 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given7 Ví dụ trên sẽ xuất ra Cuối cùng, bool(true) bool(true) bool(false) bool(true)1 cũng có thể được sử dụng để xác định xem một biến có phải là một đối tượng khởi tạo của một lớp thực hiện một giao diện hay không Ví dụ #4 Sử dụng bool(true) bool(true) bool(false) bool(true)1 với các giao diện bool(true) bool(true) bool(false) bool(true)0 bool(true) bool(true) bool(false) bool(true)1 bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given2 bool(true) bool(true) bool(false) bool(true)3 Ví dụ trên sẽ xuất ra Mặc dù bool(true) bool(true) bool(false) bool(true)1 thường được sử dụng với tên lớp theo nghĩa đen, nhưng nó cũng có thể được sử dụng với một đối tượng khác hoặc một biến chuỗi Ví dụ #5 Sử dụng bool(true) bool(true) bool(false) bool(true)1 với các biến khác bool(true) bool(true) bool(false) bool(true)0 bool(true) bool(true) bool(false) bool(true)1 bool(true) bool(true) bool(false) bool(true)8 bool(true) bool(true) bool(false) bool(true)9 Ví dụ trên sẽ xuất ra bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given4 instanceof không đưa ra bất kỳ lỗi nào nếu biến đang được kiểm tra không phải là một đối tượng, nó chỉ trả về bool(true) bool(true) bool(false) bool(true)10. Tuy nhiên, các hằng số không được phép trước PHP 7. 3. 0 Ví dụ #6 Sử dụng bool(true) bool(true) bool(false) bool(true)1 để kiểm tra các biến khác bool(true) bool(true) bool(false) bool(true)12 Ví dụ trên sẽ xuất ra bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given Kể từ PHP 7. 3. 0, các hằng số được phép ở phía bên trái của toán tử bool(true) bool(true) bool(false) bool(true)1 Ví dụ #7 Sử dụng bool(true) bool(true) bool(false) bool(true)1 để kiểm tra hằng số bool(true) bool(true) bool(false) bool(true)15 Đầu ra của ví dụ trên trong PHP 7. 3 Kể từ PHP 8. 0. 0, bool(true) bool(true) bool(false) bool(true)1 hiện có thể được sử dụng với các biểu thức tùy ý. Biểu thức phải được đặt trong dấu ngoặc đơn và tạo ra một chuỗi |