ใฏใฉในใฏใใกใฝใใใฎไฝฟใๆนใ็ดๆ(ๅฅ็ด)ใใใใฎใงใ:
<?php
class A {}
class B extends A {}
function foo(A $a) {}
function bar(B $b) {
foo($b);
}
?>
ไธใฎใณใผใใฏๅๅฎๅ จใจใใใพใใใชใใชใใ B ใฏ A ใจใฎๅฅ็ดใๅฎใฃใฆใใใใใคๅ ฑๅคๆง/ๅๅคๆงใฎใใธใใฏใซใใฃใฆใ ใกใฝใใใธใฎใใใใๆๅพ ใๆบใใใใใใใงใใไพๅคใฏๅฅใงใใ
ไธๆนใงใๅๆๅใฏ case ใซใคใใฆๅฅ็ดใใใใฎใงใใใกใฝใใใงใฏใใใพใใ:
<?php
enum ErrorCode {
case SOMETHING_BROKE;
}
function quux(ErrorCode $errorCode)
{
// ไปฅไธใฎใใใชใณใผใใๆธใใจใๅ
จใฆใฎ case ใใซใใผใใพใ
match ($errorCode) {
ErrorCode::SOMETHING_BROKE => true,
};
}
?>
quux
้ขๆฐๅ
ใฎ match ๅผใฏใ
ErrorCode ใฎๅ
จใฆใฎ case ใใซใใผใใฆใใใใ้็ใซ่งฃๆใงใใพใใ
ใใใงไปฅไธใฎใใใซใๅๆๅใ็ถๆฟๅฏ่ฝใ ใจใใพใใใ:
<?php
// ๅๆๅใ final ใงใชใใฃใใจไปฎๅฎใใใๆ่ๅฎ้จใฎใณใผใ
// ใใฎใณใผใใฏๅฎ้ใซใฏๅไฝใใชใใฎใงๆณจๆ
enum MoreErrorCode extends ErrorCode {
case PEBKAC;
}
function fot(MoreErrorCode $errorCode) {
quux($errorCode);
}
fot(MoreErrorCode::PEBKAC);
?>
้ๅธธใฎ็ถๆฟใฎใซใผใซใงใฏใใใใฏใฉในใฎๅญใฏใฉในใฏ่ฆชใฏใฉในใฎๅใใงใใฏใ้้ใใพใใ
ไธใฎใณใผใใฎๅ้ก็นใฏใ
quux()
้ขๆฐใฎ match ๅผใๅ
จใฆใฎ case ใใซใใผใใฆใฏใใชใใจใใใใจใงใใ
ใชใใชใใMoreErrorCode::PEBKAC
ใใซใใผใใใฆใใชใใฎใงใmatch ๅผใไพๅคใในใญใผใใใใใงใใ
ใใใใ็็ฑใใใๅๆๅใฏ final ๆฑใใงใใใ็ถๆฟใงใใชใใชใฃใฆใใพใใ