PythonãšGoãç©æ¥µçã«äœ¿çšããŠããã«ããããããããµãŒããŒã³ãŒãã®å€§éšåã¯PHPã§èšè¿°ãããŠããŸãã ãã®ãããç§ãã¡ã¯èšèªã®ãã¹ãŠã®é©æ°ã泚ææ·±ãè¿œã£ãŠããŸãã åã®ãã€ããŒããŒãžã§ã³ã®ãªãªãŒã¹ãã1幎足ããã§ã8æ17æ¥ã«æåŸã®ããŒã¿ãªãªãŒã¹ãäºå®ãããŠããŸãã å®çšŒåç°å¢ã§ã®äœ¿çšã¯ãŸã æšå¥šãããŠããŸããããæ¢ã«docker imageãããŠã³ããŒãã§ããŸãã èšèªã®æ°ããããŒãžã§ã³ã§äœãå€ãã£ãã®ããç解ããæãæ¥ãŸããã

å
容
æé©å
Opcacheã¯ãéçãªåäžå²ãåœãŠãã©ãŒã ïŒSPAïŒã䜿çšããããŒã¿ãããŒã®åæã«åºã¥ãã°ããŒãã«ãªæé©åãè¿œå ããŸãããã¹ããŒã¹æ¡ä»¶ä»ãå®æ°äŒæ¬ïŒSCCPïŒããããã³ãŒãé€å»ïŒDCEïŒãããã³æªäœ¿çšã®ããŒã«ã«å€æ°ã®åé€ã§ãã
in_array()
çµã¿èŸŒã¿é¢æ°ã¯ãéé
åã®ããã·ã¥ãæ€çŽ¢ããããšã«ããin_array()
ããŠããŸãã
æ°æ©èœ
ååã§æ¡åŒµæ©èœãããŠã³ããŒãããæ©èœãè¿œå ããŸããïŒ RFC ïŒ
以åã¯ãphp.iniãã¡ã€ã«ã®extension=
ããã³zend_extension=
ã«ã¯ãæ¡åŒµãã¡ã€ã«ãžã®ãã¹ãå«ãŸããŠããŸããã
ããããæ®å¿µãªããããã¡ã€ã«åã¯ãã©ãããã©ãŒã ã«äŸåããŠããŸããã ããšãã°ãunixã©ã€ã¯ãªã·ã¹ãã ã§ã¯ã <extension-name>.<suffix>
ãšããŠæ§ç¯ããã HP-UXãé€ããã¹ãŠã®ã·ã¹ãã ã§ã .so
ã§ããå Žåã suffix
ã.so
ã§ãã Windowsã§ã¯ããã¡ã€ã«åã¯php_<extension-name>.dll
ãšããŠåœ¢æããphp_<extension-name>.dll
ã ããã¯ãã¹ãŠå€ãã®ééããåŒãèµ·ãããŸããã
ä»ãããªãã¯æžãããšãã§ããŸãïŒ
extension=bz2 zend_extension=xdebug
ãŸããOSã«å¿ããŠå¿
èŠãªæ¡åŒµæ©èœãããŒããããŸãã
ãã®ã¡ã«ããºã ã¯ãiniãã¡ã€ã«ã§extensionããã³zend_extensionãèšå®ãããšãã«æ©èœãã dl()
é¢æ°ã®åŒæ°ãšããŠãæ©èœããŸãã
ãã ãã絶察ãã¹ãæå®ããå Žåãšåæ§ã«ãCLIã¢ãŒãã§-z
ãã©ã°ã䜿çšããŠçµ¶å¯Ÿãã¹ãæå®ããå¿
èŠããããŸãã 次ã®äŸã¯æ©èœããŸããã
extension=/path/to/extensions/bz2
æœè±¡é¢æ°ïŒ RFC ïŒããªãŒããŒããŒãããæ©èœãè¿œå
ããã§ãéåžžã®é¢æ°ãšåãæ¹æ³ã§æœè±¡é¢æ°ããªãŒããŒããŒãã§ããŸãã
abstract class A { abstract function bar(stdClass $x); } abstract class B extends A { abstract function bar($x): stdClass; } class C extends B { function bar($x): stdClass{} }
PHP 7.2ããåã®åœ¢åŒã®ãšã©ãŒïŒ
Fatal error: Can't inherit abstract function A::bar() (previously declared abstract in B)
number_format(-0.00)
ãžã®åŒã³åºãã¯string(1) â0â
ãnumber_format(-0.01)
ã number_format(-0.01)
ã¯string(2) â-0â
è¿ããŸããã ããã§0ã笊å·ãªãã§è¿ãããŸãã
ãªããžã§ã¯ã/é
åïŒ RFC ïŒããã£ã¹ããããšãã«çªå·ä»ãããŒãå€æããæ©èœãè¿œå
èæ¯ïŒ
PHPã«ã¯ãããŒ/å€ãå«ã2çš®é¡ã®ããŒã¿ããããŸãã 1ã€ç®ã¯é
åã§ãæååãŸãã¯æ°åã®åœ¢åŒã§ããŒãå«ããããšãã§ããŸãã ãŸããæååãã«ãŒã«/^(0|(-?[1-9][0-9]*))$/
ãPHP_INT_MIN †n †PHP_INT_MAX
ãéåžžã«å°ããPHP_INT_MIN †n †PHP_INT_MAX
ãæ°å€ããŒã«å€æãããŸãã
2çªç®ã®ã¿ã€ãã¯ãæ°å€ããŒãèš±å¯ãããŠããããããŒãæååã«å€æããããªããžã§ã¯ãã§ãã
åæã«ãZend Engineã§ã¯åäžã®HashTable
æ§é ãšããŠè¡šç€ºãããŸãã
ããã¯çŸåšä¿®æ£ãããŠããŸãã
ããã€ãã®äŸãèŠãŠã¿ãŸãããã
$obj = new stdClass; $obj->{'0'} = 1; $obj->{'1'} = 2; $obj->{'2'} = 3; $arr = (array) $obj; var_dump($arr);
$arr = [0 => 1, 1 => 2, 2 => 3]; $obj = (object)$arr; var_dump($obj);
get_classïŒïŒïŒ RFC ïŒã«ãã©ã¡ãŒã¿ãšããŠnullãæž¡ãããšã¯çŠæ¢ãããŠããŸã
ã¯ã©ã¹ã³ã³ããã¹ãå
ã®get_class()
ãã©ã¡ãŒã¿ãŒãšããŠnullãæž¡ããããšãé¢æ°ã®åäœã¯éåžžã«äºæããªããã®ã«ãªãå¯èœæ§ããããŸãã
class Foo { function bar($repository) { $result = $repository->find(100); return get_class($result); } }
$result
ã«ãªããžããªããè¿ãããæå¹ãªãªããžã§ã¯ããå«ãŸããå Žåãé¢æ°ã®çµæã¯ãã®ãªããžã§ã¯ãã®ã¯ã©ã¹åã«ãªããŸãã
$result
ã«null
ãå«ãŸããå Žåãåºåã«ã¯get_class()
ãåŒã³åºãããã¯ã©ã¹ã³ã³ããã¹ãget_class()
ãã®å Žåã¯Foo
get_class()
ãå«ãŸãnull
ã
ãã®æ©èœã¯ããå¿
èŠãªé¢æ°ã®ãµãã©ã€ãºä¿æ°ãé«ãå Žåããã®é¢æ°ã®åèšèšãå¿
èŠã«ãªãå¯èœæ§ããããŸãããšããæå°éã®é©ãã®ååã«éåããŠããŸãã
ããã§èŠåãçºè¡ãããŸãïŒ
Warning: get_class() expects parameter 1 to be object, null given in %s on line %d
å€ãåäœãç¶æããå Žåã¯ãã³ãŒããæžãçŽãå¿
èŠããããŸãã
ã«ãŠã³ãã§ããªããã©ã¡ãŒã¿ãŒã䜿çšããåŒã³åºãã«ãŠã³ãïŒ RFC ïŒ
çŸåšãã¹ã«ã©ãŒãnullããŸãã¯Countableã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããŠããªããªããžã§ã¯ãã®ãã©ã¡ãŒã¿ãŒãæå®ããŠcount()
ãåŒã³åºããšã Warning
ãçæãããŸãã
ãã©ã¡ãŒã¿ã¿ã€ãã®æ¡åŒµæ§ïŒ RFC ïŒ
æããããã«è°è«ãããå€æŽã®1ã€ã¯ãåŸç¶ã§ãã©ã¡ãŒã¿ãŒã®ã¿ã€ããæå®ããªãæ©èœã§ãã ãããã£ãŠãçžç¶äººã¯ããããã¿ã€ãã®ãã©ã¡ãŒã¿ãåãå
¥ããããšãã§ããŸãã
class ArrayClass { public function foo(array $foo) { } } class EverythingClass extends ArrayClass { public function foo($foo) { } }
PHP 7.2ããåã§ã¯ããšã©ãŒãè¿ãããŸããã
Warning: Declaration of EverythingClass::foo($foo) should be compatible with ArrayClass::foo(array $foo) in %s on line 18
æèŠã¯ãã«ãªã¯ãšã¹ãã§åãããŸãã ã
ããã€ãã¯èšã£ãïŒ
ããã¡ãããSOLIDãå°çã«éããŸããããããŒãã©ãªã¹ã³ããšã¯èª°ã§ããïŒããçš®ã®çã£ã女æ§ã§ããïŒãã¡ããïŒååãšã¢ã€ãã¢ãæã¡ç ŽããŸããããã
ä»ã®äººã¯ä¿¡ããŠããŸãïŒ
ãåäžè²¬ä»»ïŒåäžè²¬ä»»ïŒã®ååã®ãããªå¶éã¯ãèšèªã¬ãã«ã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³ã³ãŒãã§å®è£
ããå¿
èŠããããŸããSOLIDã®æåLã¯ãéçºè
ã®è£éã«ãªããŸããã
ã°ã«ãŒãåãããåå空éã®æ«å°Ÿã«ã«ã³ããæå®ããæ©èœãè¿œå ãããŸããïŒ RFC ïŒ
ãã®æ©èœãä»ã®ãªã¹ãã«è¿œå ããããšãèšç»ãããŠããŸããããæ祚段éã§ãã£ã³ã»ã«ãããåŒãç¶ãParse error
ãè¿ããParse error
ã
socket_getaddrinfoïŒ RFC ïŒãã¡ããªãŒã®é¢æ°ãå®è£
ããŸãã
ããã§ãCã§å®è£
ãããgetaddrinfo()
ããã®æ
å ±ãPHPããå©çšå¯èœã«ãªããŸãããããã¯çŸåšã®ãœã±ããã©ã€ãã©ãªã«ãªãæ©èœã§ãã ããŸããŸãªãããã¯ãŒã¯ãæäœããå Žåã libc
ã«ãã³ãã®ã»ãããäžãããããšãã©ã®æ¥ç¶/ãªã¹ãã³ã°ã¡ãœãããæé©ããæããŠããããšäŸ¿å©ã§ãã
4ã€ã®æ©èœãæ¿èªãããŸããã
socket_addrinfo_lookup(string node[, mixed service, array hints]) : array socket_addrinfo_connect(resource $addrinfo) : resource socket_addrinfo_bind(resource $addrinfo) : resource socket_addrinfo_explain(resource $addrinfo) : array
TLSå®æ°ïŒ RFC ïŒã®æ¹å
ä»ïŒ
tls://
ããã©ã«ãå€ã¯TLSv1.0 + TLSv1.1 + TLSv1.2
ssl://
ããã¯tls://
ãšã€ãªã¢ã¹tls://
- å®æ°
STREAM_CRYPTO_METHOD_TLS_*
ã®ããã©ã«ãå€ã¯ã TLSv1.0 + TLSv1.1 + TLSv1.2
ã§ã¯ãªãTLSv1.0 + TLSv1.1 + TLSv1.2
ã§ãTLSv1.0
- å®æ°
STREAM_CRYPTO_METHOD_SSLv23_CLIENT
ã¯éæšå¥šãšèŠãªãããåŸã§åé€ãããŸãã
ãªããžã§ã¯ãã®ã¿ã€ããã³ãïŒ RFC ïŒ
ãã³ãã®æ°ããã¿ã€ããè¿œå ããŸããïŒ object
function acceptsObject(object $obj) {
LDAP EXOPïŒ RFC ïŒ
php-ldapã§é«åºŠãªLDAPæäœã䜿çšããããã«è¿œå ãããé¢æ°ã
PHPã³ã¢ã«è¿œå ãããLibsodiumïŒ RFC ïŒ
Libsodiumã¯ãèªèšŒãããæå·åãæ¥åæ²ç·ã䜿çšããé«éæå·åãªã©ãæäŸããææ°ã®æå·åã©ã€ãã©ãªã§ãã ä»ã®æå·åæšæºïŒWebCryptoãªã©ã®æå·åããªããã£ãã®ã»ããïŒãšã¯ç°ãªããlibsodiumã«ã¯ãã»ãã¥ãªãã£ã®å°é家ã«ãã£ãŠå®è£
ãããæ
éã«éžæãããã¢ã«ãŽãªãºã ãå«ãŸããŠããŸãã ããã«ããããµãŒãããŒãã£ã®ãã£ãã«ã®è匱æ§ãåé¿ã§ããŸãã
Argon2ãã¹ã¯ãŒãããã·ã¥ã¢ã«ãŽãªãºã ãè¿œå ãããŸããïŒ RFC ïŒ
Argon2ã¯ãã¡ã¢ãªã®é«éå
å¡«ãšè€æ°ã®ã³ã³ãã¥ãŒãã£ã³ã°ãŠãããã®å¹ççãªäœ¿çšãç®çãšããææ°ã®ã·ã³ãã«ãªã¢ã«ãŽãªãºã ã§ãã
ãªããžã§ã¯ããšããŠã®HashContextïŒ RFC ïŒ
PHP5以éããªããžã§ã¯ãã¯å
éšããŒã¿ãä¿åããããã®å¥œãŸããæ§é ã§ããã äœããã®çç±ã§ãHashæ¡åŒµæ©èœã¯ããã«ãªãœãŒã¹ã䜿çšããŸããã ãã®RFCã¯ãããã·ã¥æ¡åŒµæ©èœã翻蚳ããŠå
éšããŒã¿ããªããžã§ã¯ããšããŠä¿åããããšã«ããã誀解ãä¿®æ£ããããšããŠããŸãã
å
éšè¡šçŸãšããŠãªãœãŒã¹ã䜿çšããäŸïŒ
resource hash_copy ( resource $context ) resource hash_init ( string $algo [, int $options = 0 [, string $key = NULL ]] )
å
éšè¡šçŸã¯ããªãœãŒã¹ãããªããžã§ã¯ãã«å€æãããŸãã æ瀺çãªis_resourceïŒïŒãã§ãã¯ã䜿çšããªãå Žåãæ¢åã®ã³ãŒãã¯åŒãç¶ãåäœããŸãããããã®ãã§ãã¯ã¯is_resource |ã«ç°¡åã«çœ®ãæããããšãã§ããŸãã is_objectã
PDO Prepared StatementïŒ RFC ïŒãããã¬ãŒãè¿œå
$db = new PDO(...); $stmt = $db->query('SELECT 1'); var_dump($stmt->activeQueryString());
PDO Prepared Statements v2ïŒ RFC ïŒãããã¬ãŒãè¿œå
$calories = 150; $colour = 'red'; $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?'); $sth->bindParam(1, $calories, PDO::PARAM_INT); $sth->bindValue(2, $colour, PDO::PARAM_STR); $sth->execute(); $sth->debugDumpParams();
PDOïŒ RFC ïŒã®é«åºŠãªæååå
$db->quote('ÃŒber', PDO::PARAM_STR | PDO::PARAM_STR_NATL);
ãªãã·ã§ã³JSON_INVALID_UTF8_IGNOREããã³JSON_INVALID_UTF8_SUBSTITUTEïŒ Request ïŒãè¿œå ãããŸãã
json_encode
/ json_decode
ãç¡å¹ãªUTF-8ãã€ãã·ãŒã±ã³ã¹ãç¡èŠãŸãã¯çœ®æããããã«ãæ°ãããªãã·ã§ã³JSON_INVALID_UTF8_IGNORE
ããã³JSON_INVALID_UTF8_SUBSTITUTE
ãã
PHP 7.2ããåé€
次ã®æ©èœã¯å»æ¢ãããåé€ãããŸããã
åŒçšç¬Šã®ãªãããŒïŒããåºãã®åèªïŒïŒ RFC ïŒã¯åé€ãããŸãã
åŒçšç¬Šã®ãªãè¡ã¯E_WARNING
åŒã³åºãããã«ãªããŸããã PHP2ã§ã¯ããã®ãããªè¡ã«ããSyntax error
ãSyntax error
ããŸããããPHP3ã§ã¯ããŒã¿çã®åäœãå€æŽãããŸããã
äŸïŒ
$foo = flase;
mcryptãPECLã«ç§»æ€ãã
PHP 7.1ã§éæšå¥šã«ãªã£ãmcryptæ¡åŒµæ©èœã¯ãPECLã«ç§»åããŸããã
PHP 7.2ã§éæšå¥šïŒ RFC ïŒ
次ã®æ©èœã¯å»æ¢ãããæšå¥šãããªããªããŸããã
ãã®æ©èœã¯ããŒãžã§ã³8.0ã§åé€ãããŸãã
éæšå¥šã®__autoload
spl_autoload_register
é¢æ°ã¯ãããŒãžã§ã³5.1ã§spl_autoload_register
ã«çœ®ãæããããŸããã
spl_autoload_register
ã®äž»ãªå©ç¹ã¯ãè€æ°ã®ãªãŒãããŒããŒã䜿çšã§ããããšã§ãã ããã§ãã³ã³ãã€ã«ã®æ®µéã§éDeprecation notice
ãã¹ããŒãããŸãã
éæšå¥šã®png2wbmpïŒïŒããã³jpeg2wbmpïŒïŒ
Png2wbmp()
ããã³jpeg2wbmp()
ã¯ãçŽæ¥åŒã³åºãããšãã§ããã€ã¡ãŒãžã®åœ¢åŒãå€æŽããå¯äžã®é¢æ°ã§ããã ext / gd
ã§äœ¿çšã§ããŸããlibgdã¯ãã®ãããªé¢æ°ãæäŸããªããããéåžžã«å€ç«ããŸãã ããã«ã WBMP
ã¯WAP
ããµããŒãããããã«çºæãããŸããããçŸåšã¯å€ããªã£ãŠããŸãã ããã§ã Deprecation notice
ãã¹ããŒãããŸãã
éæšå¥šã®$ php_errormsg
track_errors
ãã©ã¡ãŒã¿ãŒtrack_errors
æå¹ïŒããã©ã«ãã§ã¯ç¡å¹ïŒã§ããšã©ãŒãã³ãã©ãŒããšã©ãŒãã€ã³ã¿ãŒã»ããããªãã£ãå ŽåãèŽåœçã§ãªããšã©ãŒãçºçãããšã $php_errormsg
ãããŒã«ã«ãšãªã¢ã«äœæãããŸãã
åäœãiniãã¡ã€ã«ã®èšå®ã«äŸåãããšããäºå®ã«å ããŠããããéæ³ã®ããã§ããã error_get_last
é¢æ°ã¯ãææ°ã®ãšã©ãŒãååŸããããã¯ãªãŒã³ãªæ¹æ³ãæäŸããŸãã PHP 7以éã error_clear_last
é¢æ°ãerror_clear_last
ã«ãªããŸããããããã£ãŠãã¹ã³ãŒããæäœããããšãªãã $php_errormsg
èãããããã¹ãŠã®äœ¿çšãã«ããŒããŠããŸãã
éæšå¥šã®create_functionïŒïŒ
create_function()
ã¯ã eval()
èšèªæ§æäœãå²ãèãã·ã§ã«ã§ãããçæãããååãåŒæ°ã®ãªã¹ããããã³æåååŒæ°ãšããŠã®æ¬äœã䜿çšããŠé¢æ°ãäœæã§ããŸãã PHP 5.3ã§ã¯ããŒãžã£ãŒãå°å
¥ããåã¯ãã©ã ãé¢æ°ã«äŒŒããã®ãäœæããæ¹æ³ãæäŸããŠããŸããã
äœæ¥ã®æ§è³ªã«ãããæœåšçãªã»ãã¥ãªãã£åé¡ã®åå ã«å ããŠã create_function()
ããã©ãŒãã³ã¹ãšã¡ã¢ãªäœ¿çšéã®ç¹æ§ã¯éåžžã«å£ã£ãŠããŸãã ããããæ¹æ³ã§å®éã®ã¯ããŒãžã£ãŒã䜿çšããããšãæãŸããã§ãã
éæšå¥šã®mbstring.func_overload
iniãã¡ã€ã«ã®mbstring.func_overload
ãã©ã¡ãŒã¿ãŒã䜿çšãããšãæååé¢æ°ã®ç¹å®ã®ãµãã»ããããmbstringæ¡åŒµæ©èœãæã€é¡äŒŒç©ã«çœ®ãæããããšãã§ããŸãã ããšãã°ã strlen()
ã¯æååã®é·ãããã€ãåäœã§è¿ããªããªãã代ããã«ãçŸåšéžæãããŠããå
éšãšã³ã³ãŒãã£ã³ã°ã«åŸã£ãŠæååäœã®é·ããè¿ããŸãã
ããã¯ã mbstring.func_overload
ã䜿çšããã³ãŒãmbstring.func_overload
ãåºæ¬çãªæååæäœãæ£åžžã«æ©èœãããšããä»®å®ã®äžã§èšè¿°ãããã³ãŒããšäºææ§mbstring.func_overload
ãªãããšãæå³ããŸãã äžéšã®ã©ã€ãã©ãªã¯func_overload
ïŒSymfonyãªã©ïŒãæ瀺çã«çŠæ¢ããŠããŸãããä»ã®ã©ã€ãã©ãªã¯åäœãåæ¢ããŸãã func_overloadããµããŒãããã³ãŒãã¯ãéåžžã®æååé¢æ°ãš8ããããšã³ã³ãŒãã£ã³ã°ã®mbstringé¢æ°ãæ¡ä»¶ä»ãã§åãæ¿ããå¿
èŠããããŸãïŒéåžžãæå·åã©ã€ãã©ãªã®ã¿ããããè©Šã¿ãŸãïŒã
mbstring.func_overload
ã«ãŒã以å€ã®å€ãå«ãŸããŠããå ŽåãéDeprecation notice
ãã¹ããŒãããããã«ãªããŸããã
éæšå¥šïŒæªèšå®ïŒãã£ã¹ã
ãã£ã¹ã(unset)
ã¯ãå€ãNULLã«ããŸãã ããã¯ã (unset) expr
ã¯åžžã«nullãè¿ãã ãã®åŒã§ãããä»ã®å¯äœçšããªãããšãæå³ããŸãã
ç¡é§ã«å ããŠããã®åäœã¯çŽããããã ãã§ãããªããªããå€ãã®äººã¯(unset) $a
ã(unset) $a
ãunset($a)
ãšåæ§ã«æ¯ãèããšåççã«ä»®å®ããŠããããã§ãã
ããã§ãã³ã³ãã€ã«ã®æ®µéã§éDeprecation notice
ãã¹ããŒãããŸãã
2çªç®ã®åŒæ°ã®ãªãéæšå¥šã®parse_strïŒïŒé¢æ°
parse_str()
é¢æ°ã¯ãURLæååã解æããçŸåšã®ã³ã³ããã¹ãã®å€æ°ã«å€ãå²ãåœãŠãŸãïŒãŸãã¯ãçµæãã©ã¡ãŒã¿ãŒãæå®ãããŠããå Žåã¯é
åã«å€ãå
¥ããŸãïŒã
é¢æ°ã®ã¹ã³ãŒãå
ã§å€æ°ãåçã«äœæãããšregister_globalsãšãŸã£ããåãåé¡ãçºçãããããçµæãã©ã¡ãŒã¿ãŒãªãã§ãã®é¢æ°ã䜿çšããããšã¯éåžžã«æšå¥šãããŸããã çµæãã©ã¡ãŒã¿ãŒãæž¡ãããªãå ŽåãéDeprecation notice
ã¹ããŒãããããã«ãªããŸããã
éæšå¥šã®gmp_randomïŒïŒé¢æ°
gmp_random()
é¢æ°ã¯ãä¹±æ°ãçæããŸãã æ°å€ã¯ãæ°å€ãªããã¿ãŒã®ç©ã«åè¢ïŒãªã ïŒã®ãããæ°ãä¹ç®ããããŸã§ããŒãã®ç¯å²ã«ãªããŸãã ãªããã¿ãŒçªå·ãè² ã®å Žåãè² ã®çµæãè¿ãããŸãã
ãªã ã¯å
éšGMPã¡ã«ããºã ã§ãã æè¡çã«ã¯ãããã¯1ã€ã®æ©æ¢°èªã«é©åããæ°ã®äžéšã§ãã ãã®äžã®ãããæ°ã¯ã·ã¹ãã ã«ãã£ãŠç°ãªãå ŽåããããŸãã åºæ¬çã«ã¯16ãŸãã¯32ã§ãããããã¯ä¿èšŒãããŸããã ããã¯ãGMP / MPIRã®å®è£
ããŠãŒã¶ãŒãå©çšã§ããªãããã§ãã ãããã£ãŠããã®é¢æ°ã䜿çšããã«ã¯ãåè¢ã®ãµã€ãºãæšæž¬ããå¿
èŠãããããã©ãããã©ãŒã ã«ãã£ãŠç°ãªãå ŽåããããŸãã
ãããä¿®æ£ããããã«ãPHP 5.6ã¯é¢æ°gmp_random_bits()
ããã³gmp_random_range()
è¿œå ããŸãããããã«ããã䜿çšããä¹±æ°ã®ç¯å²ãæ£ç¢ºã«å¶åŸ¡ã§ããŸãã ãããã®é¢æ°ã¯ãåžžã«gmp_random()
ãããåªå
ãããã¹ãã§ãã
gmp_random()
ãDeprecation notice
ã¹ããŒãããŸãã
å»æ¢ãããé¢æ°eachïŒïŒ
each()
é¢æ°ã䜿çšããŠã foreach
ãªã©ã®é
åãå埩åŠçã§ããŸãã ååŒã³åºãã§ãçŸåšã®ããŒãšå€ãå«ãé
åãè¿ããå
éšé
åã®ãã€ã³ã¿ãŒã次ã®äœçœ®ã«é²ããŸãã ããã¥ã¢ã«ã«èšèŒãããŠããäžè¬çãªäœ¿çšæ³ã¯æ¬¡ã®ãšããã§ãã
reset($array); while (list($key, $val) = each($array)) { echo "$key => $val\n"; }
each
é¢æ°ã¯foreach
ã»ãšãã©ãã¹ãŠã§foreach
å£ãããšããã10åé
ããªããŸãã
ãã®æ©èœã®ãµããŒãã«ãããäžéšã®èšèªã®å€æŽã§åé¡ãçºçããŸãã ããšãã°ãç¡å¹ãªé
åã³ã³ããïŒ RFC ïŒã«é¢ããèŠåã§ã¯ã list()
ãé€å€ããå¿
èŠããããŸããã each
ã®äžè¬çãªäœ¿çšã¯each
èŠåãªãã§é
åãªãã»ããã«false
ã¢ã¯ã»ã¹ã§ãããšããäºå®ã«äŸåããŠããããã§ãã
çŸåšãã»ãšãã©ã®å Žåã«ãŒãã§äœ¿çšãããããã each
ã®æåã®åŒã³åºãã§éDeprecation warning
ã¹ããŒãããŸãã
éæšå¥šã®æåååŒæ°ã䜿çšããïŒïŒé¢æ°ã®ã¢ãµãŒã
assert()
é¢æ°ã«ã¯2ã€ã®æäœã¢ãŒãããããŸããæåå以å€ãæž¡ãããå Žåãå€ãtrueã§ããããšã確èªããŸãã æååãæž¡ãããå Žåã eval()
ãä»ããŠèµ·åãããassertã¯eval()
çµæã®æå¹æ§ããã§ãã¯ããŸãã
ãã®åäœã®çç±ã¯ãPHP 7ããåã§ã¯ããããåŒã®è©äŸ¡ãé²ãå¯äžã®æ¹æ³ã§ãã£ãããã§ãã PHP 7以éãiniãã¡ã€ã«ã®zend.assertions
ãªãã·ã§ã³ã䜿çšããŠãåŒã®è©äŸ¡ãåé¿ã§ããŸãã ãããã£ãŠãæåååŒæ°ã®æé»çãªèšç®ããµããŒãããå¿
èŠã¯ãªããªããŸããã
assert($value)
ã䜿çšassert($value)
ãæ€èšŒãããšã $value
æååã§ããå¯èœæ§$value
é«ãå Žåã«ãªã¢ãŒãã³ãŒãå®è¡ã®è匱æ§ãçºçããŸãã
assert()
æåååŒæ°ãšãšãã«äœ¿çšãããå ŽåãéDeprecation notice
ã¹ããŒãããããã«ãªããŸããã
ãšã©ãŒãã³ãã©ã®éæšå¥šã®$ errcontextåŒæ°
set_error_handler()
ã䜿çšããŠèšå®ããããšã©ãŒãã³ãã©ã¯ã $errcontext
æåŸã®åŒæ°ãšããŠæž¡ãããŸãã ãã®åŒæ°ã¯ããšã©ãŒãçæãããå Žæã®ãã¹ãŠã®ããŒã«ã«å€æ°ãå«ãé
åã§ãã
ãã®é¢æ°ã¯ã $errcontext
ã䜿çšããŠçŸåšã®ã¹ã³ãŒãå
ã®ãã¹ãŠã®åç
§ãšãªããžã§ã¯ããå€æŽã§ãããããæé©åãå°é£ã§ãã ãã®æ©èœã¯å®éã«ã¯äœ¿çšãããŸããã ãšã©ãŒã®å Žæã§ç¶æ
å€æ°ã確èªããå Žåã¯ããããã¬ãŒã䜿çšããå¿
èŠããããŸãã
ãšã©ãŒã³ã³ããã¹ãã«ã¯ããŒã«ã«å€æ°ã®ã¿ãå«ãŸããŠããããšã«æ³šæããŠãã ããã $this
ããã³é¢æ°ã®åŒæ°ãå«ãããã¯ãã¬ãŒã¹ãšã©ãŒã¯ã debug_backtrace()
ä»ããŠåŒãç¶ãå©çšå¯èœã§ãã
ãã®å Žåã Deprecation warning
ãã¹ããŒããããšã¯äžå¯èœã§ããããããã®æ©èœã¯åã«ããã¥ã¡ã³ãã§éæšå¥šãšããŠããŒã¯ãããŸãã
éæšå¥šã®å®æ°INTL_IDNA_VARIANT_2003
PHP 7.2ã§ã¯ãå®æ°INTL_IDNA_VARIANT_2003ã¯éæšå¥šã§ãã
PHP 7.4ã§ã¯ã idn_to_ascii()
ããã³idn_to_utf8()
ãå€æŽãããããã©ã«ãã®$variant
ãã©ã¡ãŒã¿ãŒã¯INTL_IDNA_VARIANT_UTS46ã«ãªããŸãã
PHP 8.0ã§ã¯ãINTL_IDNA_VARIANT_2003ã®ãµããŒããåé€ãããŸãã
ãã£ã¹ãïŒãã€ããªïŒããã³b ""ãªãã©ã«ïŒ RFC ïŒã¯éæšå¥šã§ã
å(binary)
ããã³b
ãã¬ãã£ãã¯ã¹ã®ãµããŒãã¯ã PHP 6
ãšã®äºææ§ã®ããã«PHP 5.2.1
è¿œå ãããŸãããããã®ããŒãžã§ã³ã¯ãŸã ç»å ŽããŠãããããã€ããªæååãå®è£
ããããšããè©Šã¿ããã以äžãªããã¯äžæã§ãã ãã ãããããã¯ç¡èŠãããŸããããŸã èšèªã¹ãã£ããŒã§åãå
¥ããããŸãã
ãããã®ã«ãŒã¹ãã䜿çšãããšã Deprecation notice
ã¹ããŒãããããã«ãªããŸããã
ããŒãžã§ã³7.2å°çšã«ã5ããå§ãŸãPHPããŒãžã§ã³ã®å€æŽç¹ã説æããã PHPã®æ°æ©èœ ããšãããªããžããªãçšæããŸããã
ããªãã¯ãœãŒã¹ã§è±èªã®ãªã¹ããèŠã€ããããšãã§ããŸãïŒ
https://github.com/php/php-src/blob/PHP-7.2/UPGRADING
https://wiki.php.net/rfc#php_next_72
æ°ããããŒãžã§ã³ããªã³ã©ã€ã³ã§è©ŠããŠãã ããïŒ
https://3v4l.org/
ã芧ã®ãšãããã°ããŒãã«ãªå€æŽã¯ã»ãšãã©ãããŸããã
PHPã®å€æŽã«ã€ããŠã©ãæããŸããïŒ æãæ°ã«å
¥ã£ãæ©èœã¯ã©ãã§ããïŒ