php轻松入门视频教程(PHP 8.3 GA)

wufei123 发布于 2024-02-02 阅读(56)

原标题:PHP 8.3 GAPHP 8.3已正式发布主要变化包括:类常量显式类型 (Typed class constants)只读属性深拷贝新增#[\Override] 属性新增 json_validate 函数。

添加 Randomizer::getBytesFromString 方法添加 Randomizer::getFloat 和 Randomizer::nextFloat 方法以及更好的性能、更好的语法、改进类型安全

下面介绍部分语法的变化类型化类常量PHP < 8.3interfaceI{// We may naively assume that the PHP constant is always a string.。

constPHP = PHP 8.2;}classFooimplementsI{// But implementing classes may define it as an array.constPHP = [];

} PHP 8.3interfaceI{conststring PHP = PHP 8.3;}classFooimplementsI{conststring PHP = [];}// Fatal error: Cannot use array as value for class constant

// Foo::PHP of type string动态获取类常量PHP < 8.3classFoo{const PHP = PHP 8.2;}$searchableConstant = PHP;var_dump(constant(Foo::

class. "::{$searchableConstant}"));PHP 8.3classFoo{const PHP = PHP 8.3;}$searchableConstant = PHP;var_dump(Foo::{$searchableConstant});

只读属性深拷贝readonly属性现在可以在魔术方法__clone中被修改一次,以此实现只读属性的深拷贝PHP < 8.3classPHP{publicstring $version = 8.2;}readonly

classFoo{publicfunction__construct(public PHP $php){}publicfunction__clone: void{$this->php = clone$this

->php;}}$instance = newFoo(newPHP);$cloned = clone$instance;// Fatal error: Cannot modify readonly property Foo::$php

PHP 8.3classPHP{publicstring $version = 8.2;}readonly classFoo{publicfunction__construct(public PHP $php

){}publicfunction__clone: void{$this->php = clone$this->php;}}$instance = newFoo(newPHP);$cloned = clone

$instance;$cloned->php->version = 8.3; 新增#[\Override] 属性通过给方法添加#[\Override]属性,PHP 将确保在父类或实现的接口中存在同名的方法。

添加该属性表示明确说明覆盖父方法是有意为之,并且简化了重构过程,因为删除被覆盖的父方法将被检测出来PHP < 8.3usePHPUnit\Framework\TestCase;finalclassMyTest。

extendsTestCase{protected$logFile;protectedfunctionsetUp: void{$this->logFile = fopen(/tmp/logfile, w

);}protectedfunctiontaerDown: void{fclose($this->logFile);unlink(/tmp/logfile);}}// The log file will never be removed, because the

// method name was mistyped (taerDown vs tearDown).PHP 8.3usePHPUnit\Framework\TestCase;finalclassMyTest

extendsTestCase{protected$logFile;protectedfunctionsetUp: void{$this->logFile = fopen(/tmp/logfile, w

);}#[\Override]protectedfunctiontaerDown: void{fclose($this->logFile);unlink(/tmp/logfile);}}// Fatal error: MyTest::taerDown has #[\Override] attribute,

// but no matching parent method exists新增 json_validate 函数json_validate可以检查一个字符串是否为语法正确的 JSON,比 json_decode

更有效PHP < 8.3functionjson_validate(string$string): bool{json_decode($string);returnjson_last_error === JSON_ERROR_NONE;。

}var_dump(json_validate({ "test": { "foo": "bar" } })); // truePHP 8.3var_dump(json_validate({ "test"

: { "foo": "bar"} })); // true此外,PHP 8.0 的生命周期即将结束早在 2022 年 11 月 26 日,PHP 8.0 结束了积极支持,而安全支持也将在 PHP 8.3 正式发布三天后 ——2023 年 11 月 26 日停止。

相关链接:https://www.php.net/releases/8.3/zh.phpSam Altman重返OpenAI担任CEO 幕后黑手曝光,96%员工集体“逼宫”,OpenAI危矣Altman回归失败,微软成最大赢家

这里有最新开源资讯、软件更新、技术干货等内容点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦返回搜狐,查看更多责任编辑:

亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。