Saya mencoba mengimplementasikan Type Hinting of PHP5 di salah satu kelas saya,
class ClassA {
public function method_a (ClassB $b)
{}
}
class ClassB {}
class ClassWrong{}
Penggunaan yang benar:
$a = new ClassA;
$a->method_a(new ClassB);
menghasilkan kesalahan:
$a = new ClassA;
$a->method_a(new ClassWrong);
Kesalahan fatal yang dapat ditangkap: Argumen 1 yang diteruskan ke ClassA :: method_a () harus berupa turunan dari ClassB, turunan ClassWrong diberikan ...
Apakah mungkin untuk menangkap kesalahan itu (karena dikatakan "dapat ditangkap")? dan jika ya, bagaimana?
php
fatal-error
type-hinting
hoball
sumber
sumber
E_RECOVERABLE_ERROR
dapat ditangkap " ( ) karena ini ditangkap dimulai dengan PHP 7 ..Jawaban:
Pembaruan: Ini bukan lagi kesalahan fatal yang bisa ditangkap di php 7. Sebaliknya sebuah "pengecualian" dilemparkan. Sebuah "pengecualian" (dalam tanda kutip ketakutan) yang tidak berasal dari Exception tetapi Error ; itu masih dapat dilempar dan dapat ditangani dengan blok coba-tangkap normal. lihat https://wiki.php.net/rfc/throwable-interface
Misalnya
cetakan
Jawaban lama untuk versi pra-php7:
http://docs.php.net/errorfunc.constants mengatakan:
lihat juga: http://derickrethans.nl/erecoverableerror.html
misalnya
cetakan
edit: Tapi Anda bisa "menjadikannya" pengecualian yang bisa Anda tangani dengan blok coba-tangkap
lihat: http://docs.php.net/ErrorException
sumber