PHP 8.5.0 Beta 3 available for testing

ๅˆ—ๆŒ™ๅž‹ใŒ็ถ™ๆ‰ฟใงใใชใ„็†็”ฑ

ใ‚ฏใƒฉใ‚นใฏใ€ใƒกใ‚ฝใƒƒใƒ‰ใฎไฝฟใ„ๆ–นใ‚’็ด„ๆŸ(ๅฅ‘็ด„)ใ™ใ‚‹ใ‚‚ใฎใงใ™:

<?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 ๆ‰ฑใ„ใงใ‚ใ‚Šใ€็ถ™ๆ‰ฟใงใใชใใชใฃใฆใ„ใพใ™ใ€‚

๏ผ‹add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top