预防高原反应吃什么药| 吃什么东西减肥最快| 鼻炎有什么症状| 湿热会引起什么症状| 蝌蚪吃什么食物| 秦始皇的真名叫什么| 晚上看见黄鼠狼有什么预兆| 浣碧什么时候背叛甄嬛| 私密是什么意思| 办健康证需要检查什么| 塔罗牌逆位是什么意思| edg是什么意思| 青霉素过敏吃什么消炎药| 鱼油有什么副作用| 怀孕时间从什么时候开始算| 河童是什么意思| 浅卡其色裤子配什么颜色上衣| 鳡鱼是什么鱼| 慢阻肺是什么意思| 腮帮子长痘痘是什么原因| 刀伤用什么药愈合最快| 常州冬至吃什么| 射精无力是什么原因| 佝偻病缺少什么元素| 蜈蚣最怕什么| 精油有什么功效| 血癌是什么原因造成的| 为什么头发老出油| 什么叫主动脉硬化| 谥号是什么意思| 三伏天吃什么对身体好| 牙发黑是什么原因怎么办| 紫外线过敏是什么症状| holly是什么意思| 车前草长什么样子| 胸部ct可以检查出什么| 肋软骨炎吃什么药| 跑完步喝什么水最好| 楼台是什么意思| 主人杯是什么意思| 目是什么单位| 东山再起是什么意思| 舌苔黄腻吃什么药| 5月6日什么星座| 验血糖挂什么科| 鱼肝油又叫什么名字| rf医学上是什么意思| 几月初几是叫什么历| 最大的沙漠是什么沙漠| 省公安厅厅长是什么级别| 鼻塞有脓鼻涕吃什么药| 月经推迟量少是什么原因| 私生饭是什么意思| 怀孕脚浮肿是什么原因引起的| 动脉ct主要检查什么| 糖类抗原125偏高说明什么| 拉肚子吃什么药好得快| 为什么会得结石| 燕子喜欢吃什么| 怀孕吃什么水果好| dsa是什么意思| 胸膜增厚吃什么药| 吃什么放屁多| 主导是什么意思| 利郎男装是什么档次的| 过敏性荨麻疹吃什么药| 饴糖是什么糖| 手舞足蹈是什么生肖| 肝火旺喝什么药| 梅花三弄是什么意思| 7月16日什么星座| 登高望远是什么生肖| 男人右眉毛里有痣代表什么| 修身养性下一句是什么| 手抽筋吃什么药| 副乳是什么意思| 什么的天空填合适的词| 耳朵烫是什么原因| 丝瓜水敷脸有什么作用| 梦见抬死人是什么意思| 心与什么相表里| 益生菌不能和什么一起吃| 三高人群适合吃什么| 刺猬的刺有什么作用| 太后是什么意思| 什么是中暑| 鱿鱼不能和什么一起吃| 站姐是什么职业| 间歇性跛行是什么意思| 京东自营是什么意思| 七月初七是什么星座| kb是什么| 咽炎吃什么药最好效果| 三伏天吃什么对身体好| 影子代表什么生肖| 什么水果蛋白质含量高| 若叶青汁有什么功效| 前列腺炎吃什么药最有效| 沙和尚是什么动物变的| 吃紧急避孕药有什么副作用| 1月22号是什么星座| 丝棉是什么材料| 4月11号是什么星座| 高丽棒子是什么意思| 羊肉和什么菜包饺子好吃| 早晨五点是什么时辰| 尹是什么意思| 二道贩子是什么意思| 类风湿因子是什么意思| 骗婚是什么意思| 什么茶好喝| 什么贵人能治孤辰寡宿| 红景天是什么药| 肝炎是什么| 肝气不舒有什么症状| 红细胞体积偏高是什么意思| lala是什么意思| 车水马龙是什么生肖| 胸膈痞闷什么意思| 什么是骨折| 嘴巴右下角有痣代表什么| 吃软饭是什么意思| 肝的功能是什么| 梦见好多动物是什么意思| young是什么意思| 男性手心热是什么原因| 英姿的动物是什么生肖| 鄙视你是什么意思| 左耳朵嗡嗡响是什么原因引起的| 阴茎插入阴道是什么感觉| 俊五行属什么| 完美收官是什么意思| 男人有腰窝意味着什么| 羊鞭是什么| 大林木是什么生肖| 自渎什么意思| 筛子是什么意思| 怀孕什么时候吃鹅蛋最好| 子宫内膜异位症吃什么药| 溃疡是什么原因引起的| 羽字属于五行属什么| 玉佛寺求什么最灵验| 乳腺挂什么科室| 蕈是什么意思| 散光400度是什么概念| 脾虚吃什么药效果最好| 微信为什么加不了好友| 小蜜蜂是什么牌子| 有什么植物| 梦见捡鸡蛋是什么预兆| 天蝎女喜欢什么样的男生| 暑伏为什么要吃饺子| 化骨龙是什么意思| 消化不良大便什么颜色| 右眼跳什么预兆| 共工是什么神| 儿女情长英雄气短是什么意思| 李晨的爷爷叫什么| 温吞是什么意思| 胸口闷挂什么科| 小孩肠胃感冒吃什么药比较好| 上海有什么好玩的地方| 月经量多是什么原因引起的| 猪鬃为什么是战略物资| median什么意思| 肺部不好有什么症状| 名列前茅的茅是什么意思| 奶霜是什么| 手心发烧是什么原因| 什么是化疗| 脑梗是什么原因造成的| 彤五行属什么| 接济是什么意思| 朝鲜的货币叫什么| 邯郸学步的寓意是什么| 电荷是什么| 农历十月份是什么星座| 骶髂关节在什么位置| 五月十九日是什么星座| 外围女是什么意思| 什么时候普及高中义务教育| 盥洗室什么意思| 月亮发红是什么原因| 关节退行性变是什么意思| 碱性磷酸酶偏低是什么意思| 6月17号什么星座| 为什么生理期不能做| 空泡蝶鞍是什么病| 狗刨坑是什么征兆| 玫瑰花茶有什么作用| 彩铅是什么| 牙齿根管治疗是什么意思| 艾滋病是什么病| 真菌感染用什么药好| 塞浦路斯说什么语言| asia是什么意思| 荒诞是什么意思| 橘络的功效与作用是什么| 支气管炎能吃什么水果| prime是什么意思| 鲶鱼吃什么食物| 怀孕两周有什么症状| 六点半是什么时辰| 嗳气什么意思| 属猴的是什么命| 前列腺增生吃什么食物好| 肺不好有什么症状| 哥德巴赫猜想是什么| 肠道易激惹综合症是什么症状| 痔疮的初期症状是什么| 氟化钠是什么| 眼白发黄是什么原因| 茶叶蛋用什么茶叶最好| 胃炎吃什么| 潜叶蝇打什么药效果好| 为什么血压会高| 强劲的动物是什么生肖| 失代偿期是什么意思| 月经期喝什么汤好| 脸肿脚肿是什么原因引起的| 心脏供血不足吃什么药| 佟丽娅什么民族| 肾炎可以吃什么水果| 身上有白斑块是什么原因造成的| 口水多吃什么药好得快| 什么可以| 命运是什么意思| 做梦梦到蜈蚣是什么意思| 阁五行属什么| 活检检查是什么意思| 吃完饭恶心是什么原因| 女人什么发型最有气质| 胎儿宫内窘迫是什么意思| 阳虚是什么| 三羊开泰什么意思| 喝莓茶对身体有什么好处| 脂肪是什么意思| 痔疮是什么科室看的| 四月十八日是什么日子| 眼睛飞蚊症用什么药能治好| 黄花是什么花| 从容不迫什么意思| 三观是什么| 胃酸过多吃点什么食物比较好| 脚烧热是什么原因| 皮肤糖化是什么意思| 嗓子有异物感堵得慌吃什么药| guou是什么牌子的手表| 什么球不能拍| 人经常放屁是什么原因| 顾影自怜是什么意思| 什么的头发| plcc是什么意思| 吉祥是什么意思| 周瑜是一个什么样的人| 英氏属于什么档次的| 癌胚抗原高是什么意思| 牙疼吃什么食物能缓解| 为什么一个月来两次月经| 为什么脚底板发黄| 头晕吃什么药| 梦见摘枣是什么意思| 33朵玫瑰花代表什么| 水痘可以吃什么| 百度
PHP 8.5.0 Alpha 4 available for testing
已发布!
PHP 8.4 是 PHP 语言的一次重大更新。
它包含许多新功能,例如属性钩子、不对称可见性、更新的 DOM API、性能改进、错误修复和常规清理等。

属性钩子 RFC 文档

PHP < 8.4
class Locale
{
private
string $languageCode;
private
string $countryCode;

public function
__construct(string $languageCode, string $countryCode)
{
$this->setLanguageCode($languageCode);
$this->setCountryCode($countryCode);
}

public function
getLanguageCode(): string
{
return
$this->languageCode;
}

public function
setLanguageCode(string $languageCode): void
{
$this->languageCode = $languageCode;
}

public function
getCountryCode(): string
{
return
$this->countryCode;
}

public function
setCountryCode(string $countryCode): void
{
$this->countryCode = strtoupper($countryCode);
}

public function
setCombinedCode(string $combinedCode): void
{
[
$languageCode, $countryCode] = explode('_', $combinedCode, 2);

$this->setLanguageCode($languageCode);
$this->setCountryCode($countryCode);
}

public function
getCombinedCode(): string
{
return
\sprintf("%s_%s", $this->languageCode, $this->countryCode);
}
}

$brazilianPortuguese = new Locale('pt', 'br');
var_dump($brazilianPortuguese->getCountryCode()); // BR
var_dump($brazilianPortuguese->getCombinedCode()); // pt_BR
PHP 8.4
class Locale
{
public
string $languageCode;

public
string $countryCode
{
set (string $countryCode) {
$this->countryCode = strtoupper($countryCode);
}
}

public
string $combinedCode
{
get => \sprintf("%s_%s", $this->languageCode, $this->countryCode);
set (string $value) {
[
$this->languageCode, $this->countryCode] = explode('_', $value, 2);
}
}

public function
__construct(string $languageCode, string $countryCode)
{
$this->languageCode = $languageCode;
$this->countryCode = $countryCode;
}
}

$brazilianPortuguese = new Locale('pt', 'br');
var_dump($brazilianPortuguese->countryCode); // BR
var_dump($brazilianPortuguese->combinedCode); // pt_BR
属性钩子提供对计算属性的支持,这些属性可以被 IDE 和静态分析工具直接理解,而无需编写可能会失效的 docblock 注释。此外,它们允许可靠地预处理或后处理值,而无需检查类中是否存在匹配的 getter 或 setter。

不对称可见性 RFC 文档

PHP < 8.4
class PhpVersion
{
private
string $version = '8.3';

public function
getVersion(): string
{
return
$this->version;
}

public function
increment(): void
{
[
$major, $minor] = explode('.', $this->version);
$minor++;
$this->version = "{$major}.{$minor}";
}
}
PHP 8.4
class PhpVersion
{
public private(
set) string $version = '8.4';

public function
increment(): void
{
[
$major, $minor] = explode('.', $this->version);
$minor++;
$this->version = "{$major}.{$minor}";
}
}
现在可以独立地控制写入属性的作用域和读取属性的作用域,减少了需要编写繁琐的 getter 方法来公开属性值而不允许从类外部修改属性的需求。

#[\Deprecated] 属性 RFC 文档

PHP < 8.4
class PhpVersion
{
/**
* @deprecated 8.3 use PhpVersion::getVersion() instead
*/
public function getPhpVersion(): string
{
return
$this->getVersion();
}

public function
getVersion(): string
{
return
'8.3';
}
}

$phpVersion = new PhpVersion();
// No indication that the method is deprecated.
echo $phpVersion->getPhpVersion();
PHP 8.4
class PhpVersion
{
#[
\Deprecated(
message: "use PhpVersion::getVersion() instead",
since: "8.4",
)]
public function
getPhpVersion(): string
{
return
$this->getVersion();
}

public function
getVersion(): string
{
return
'8.4';
}
}

$phpVersion = new PhpVersion();
// Deprecated: Method PhpVersion::getPhpVersion() is deprecated since 8.4, use PhpVersion::getVersion() instead
echo $phpVersion->getPhpVersion();
新的 #[\Deprecated] 属性使 PHP 的现有弃用机制可用于用户定义的函数、方法和类常量。

新的 ext-dom 功能和 HTML5 支持 RFC RFC 文档

PHP < 8.4
$dom = new DOMDocument();
$dom->loadHTML(
<<<'HTML'
<main>
<article>PHP 8.4 is a feature-rich release!</article>
<article class="featured">PHP 8.4 adds new DOM classes that are spec-compliant, keeping the old ones for compatibility.</article>
</main>
HTML,
LIBXML_NOERROR,
);

$xpath = new DOMXPath($dom);
$node = $xpath->query(".//main/article[not(following-sibling::*)]")[0];
$classes = explode(" ", $node->className); // Simplified
var_dump(in_array("featured", $classes)); // bool(true)
PHP 8.4
$dom = Dom\HTMLDocument::createFromString(
<<<'HTML'
<main>
<article>PHP 8.4 is a feature-rich release!</article>
<article class="featured">PHP 8.4 adds new DOM classes that are spec-compliant, keeping the old ones for compatibility.</article>
</main>
HTML,
LIBXML_NOERROR,
);

$node = $dom->querySelector('main > article:last-child');
var_dump($node->classList->contains("featured")); // bool(true)

新的 DOM API 包括符合标准的支持,用于解析 HTML5 文档,修复了 DOM 功能行为中的几个长期存在的规范性错误,并添加了几个函数,使处理文档更加方便。

新的 DOM API 可以在 Dom 命名空间中使用。使用新的 DOM API 可以使用 Dom\HTMLDocumentDom\XMLDocument 类创建文档。

BCMath 的对象 API RFC

PHP < 8.4
$num1 = '0.12345';
$num2 = '2';
$result = bcadd($num1, $num2, 5);

echo
$result; // '2.12345'
var_dump(bccomp($num1, $num2) > 0); // false
PHP 8.4
use BcMath\Number;

$num1 = new Number('0.12345');
$num2 = new Number('2');
$result = $num1 + $num2;

echo
$result; // '2.12345'
var_dump($num1 > $num2); // false

新的 BcMath\Number 对象使在处理任意精度数字时可以使用面向对象的方式和标准的数学运算符。

这些对象是不可变的,并实现了 Stringable 接口,因此可以在字符串上下文中使用,如 echo $num

新的 array_*() 函数 RFC

PHP < 8.4
$animal = null;
foreach ([
'dog', 'cat', 'cow', 'duck', 'goose'] as $value) {
if (
str_starts_with($value, 'c')) {
$animal = $value;
break;
}
}

var_dump($animal); // string(3) "cat"
PHP 8.4
$animal = array_find(
[
'dog', 'cat', 'cow', 'duck', 'goose'],
static fn (
string $value): bool => str_starts_with($value, 'c'),
);

var_dump($animal); // string(3) "cat"

PDO 驱动程序特定子类 RFC

PHP < 8.4
$connection = new PDO(
'sqlite:foo.db',
$username,
$password,
);
// object(PDO)

$connection->sqliteCreateFunction(
'prepend_php',
static fn (
$string) => "PHP {$string}",
);

$connection->query('SELECT prepend_php(version) FROM php');
PHP 8.4
$connection = PDO::connect(
'sqlite:foo.db',
$username,
$password,
);
// object(Pdo\Sqlite)

$connection->createFunction(
'prepend_php',
static fn (
$string) => "PHP {$string}",
);
// Does not exist on a mismatching driver.

$connection->query('SELECT prepend_php(version) FROM php');
新的 Pdo\DblibPdo\FirebirdPdo\MySqlPdo\OdbcPdo\PgsqlPdo\Sqlite 的子类可用。

new MyClass()->method() 不需要括号 RFC 文档

PHP < 8.4
class PhpVersion
{
public function
getVersion(): string
{
return
'PHP 8.3';
}
}

var_dump((new PhpVersion())->getVersion());
PHP 8.4
class PhpVersion
{
public function
getVersion(): string
{
return
'PHP 8.4';
}
}

var_dump(new PhpVersion()->getVersion());
现在可以在不使用括号包裹 new 表达式的情况下访问新实例化对象的属性和方法。

新的类、接口和函数

  • 新的 延迟对象
  • 基于 IR 框架的新 JIT 实现。
  • 新增 request_parse_body() 函数。
  • 新增 bcceil()bcdivmod()bcfloor()bcround() 函数。
  • 新增 RoundingMode 枚举用于 round(),包括 4 个新的舍入模式 TowardsZeroAwayFromZeroNegativeInfinityPositiveInfinity
  • 新增 DateTime::createFromTimestamp()DateTime::getMicrosecond()DateTime::setMicrosecond()DateTimeImmutable::createFromTimestamp()DateTimeImmutable::getMicrosecond()DateTimeImmutable::setMicrosecond() 方法。
  • 新增 mb_trim()mb_ltrim()mb_rtrim()mb_ucfirst()mb_lcfirst() 函数。
  • 新增 pcntl_getcpu()pcntl_getcpuaffinity()pcntl_getqos_class()pcntl_setns()pcntl_waitid() 函数。
  • 新增 ReflectionClassConstant::isDeprecated()ReflectionGenerator::isClosed()ReflectionProperty::isDynamic() 方法。
  • 新增 http_get_last_response_headers()http_clear_last_response_headers()fpow() 函数。
  • 新增 XMLReader::fromStream()XMLReader::fromUri()XMLReader::fromString()XMLWriter::toStream()XMLWriter::toUri()XMLWriter::toMemory() 方法。
  • 新增 grapheme_str_split() 函数。

弃用和向后不兼容

  • IMAP、OCI8、PDO_OCI 和 pspell 扩展已从 PHP 中分离并移至 PECL。
  • 隐式可空参数类型现已弃用。
  • 使用 _ 作为类名现已弃用。
  • 将零的负数次幂现已弃用。
  • round() 传递无效模式将抛出 ValueError
  • 来自扩展 dateintlpdoreflectionsplsqlitexmlreader 的类常量现在是有类型的。
  • GMP 类现已是 final 类。
  • 已删除 MYSQLI_SET_CHARSET_DIRMYSQLI_STMT_ATTR_PREFETCH_ROWSMYSQLI_CURSOR_TYPE_FOR_UPDATEMYSQLI_CURSOR_TYPE_SCROLLABLEMYSQLI_TYPE_INTERVAL 常量。
  • 已弃用 mysqli_ping()mysqli_kill()mysqli_refresh() 函数,mysqli::ping()mysqli::kill()mysqli::refresh() 方法,以及 MYSQLI_REFRESH_* 常量。
  • stream_bucket_make_writeable()stream_bucket_new() 现在返回 StreamBucket 实例而不是 stdClass
  • exit() 行为变更
  • E_STRICT 常量已弃用。
To Top
梅花鹿吃什么食物 天公作美是什么生肖 本科一批和本科二批有什么区别 什么的嫩芽 蜻蜓像什么
原研药是什么意思 中央委员什么级别 烧心吃点什么药 甲状腺结节用什么药 真正的朋友是什么
爱钻牛角尖是什么意思 年轮稀疏的一面是什么方向 皮尔卡丹属于什么档次 女的肾虚是什么症状 水灵灵是什么意思
彼岸花代表什么星座 活化部分凝血活酶时间偏高是什么意思 抠脚大汉什么意思 什么情况下用妇炎洁 编程是干什么的
什么是低筋面粉xjhesheng.com 早泄什么症状hcv8jop5ns7r.cn cm是什么岗位hcv9jop1ns0r.cn 为什么精子射不出来hcv8jop8ns2r.cn 月青念什么hcv9jop6ns3r.cn
什么的脑袋hcv7jop7ns4r.cn 虎皮膏药有什么功效hcv9jop0ns2r.cn 头发发黄是什么原因造成的hcv9jop1ns1r.cn cta是什么检查mmeoe.com 着了过是什么词hcv8jop1ns0r.cn
dunhill是什么品牌hcv9jop4ns3r.cn 茉莉花是什么颜色hcv8jop0ns5r.cn 微信为什么加不了好友hcv9jop5ns9r.cn 什么是丙肝hcv9jop3ns8r.cn 坐立不安是什么意思hcv7jop5ns1r.cn
腮腺炎不能吃什么东西clwhiglsz.com 蒲菜是什么菜hcv8jop9ns6r.cn green是什么颜色hcv8jop6ns7r.cn 女性分泌物发黄是什么原因hcv9jop8ns0r.cn jay什么意思hcv8jop9ns1r.cn
百度