PHP8.2是PHP语言现代化进程中的一个重要的里程碑。除了令人兴奋地新特性和改进之外,PHP8.2还简化了语言,取消了对动态类属性的支持,在遇到某些非最优的ini配置时发出警告,并修复了一些影响PHP数组排序和某些类型的字符串转换/编码操作的遗留PHP行为。【推荐学习:PHP视频教程】
系统改进
PHP8.2解决了PHP类型系统的几个缺点和限制,允许PHP应用采用更好的类型安全。包括添加了true类型,允许null和false作为独立的类型使用,并支持DNF类型(泛型解析)。
PHP8.2支持分离范式类型,现在可以进行组合联合类型和交际类型,这可以定义声明精确而富有表现力的参数、返回值和属性。
php8.2之前
class Foo { public function bar(mixed $entity) { if ((($entity instanceof A) && ($entity instanceof B)) || ($entity === null)) { return $entity; } throw new Exception('Invalid entity'); } }
现在
class Foo { public function bar((A&B)|null $entity) { return $entity; } }
支持
function alwaysReturnsFalse(): false {} function alwaysReturnsNull(): null {} function alwaysReturnsTrue(): true {}
其中
只读类
readonly class User { public string $username; public string $uid; }
所有的属性都会自动声明城
新的随机数扩展
在
trait 常量
在
trait Foo { public const CONSTANT = 1; } class Bar { use Foo; } var_dump(Bar::CONSTANT); // 1 var_dump(Foo::CONSTANT); // Error
敏感参数支持
我们经常会在参数或属性中定义密码、秘钥或其他敏感信息。当
比如下面的例子:
function passwordHash(#[\SensitiveParameter] string $password) { debug_print_backtrace(); } passwordHash('hunter2');
打印的内容如下:
array(1) { [0]=> array(4) { ["file"]=> string(38) "..." ["line"]=> int(9) ["function"]=> string(3) "foo" ["args"]=> array(1) { // [0]=> string(38) "hunter2" 这一行不会被打印出来 [0]=> object(SensitiveParameterValue)#1 (0) {} } } }
新的函数和类
解析
将
ini_parse_quantity('256M'); // 268435456
<strong>curl_upkeep</strong>
在
检索密码长度:<strong>openssl_cipher_key_length</strong>
在
openssl_cipher_key_length("CHACHA20-POLY1305"); // 32 openssl_cipher_key_length("AES-128-GCM"); // 16 openssl_cipher_key_length("AES-256-GCM"); // 32
重置记录的峰值内存使用量:<strong>memory_reset_peak_usage</strong>
这对于多次调用或迭代调用时很有用。
PHP8.2 中的弃用
PHP8.2也带来了相当一部分的弃用。当语法、函数和特性被弃用时,PHP会发起一个弃用通知,该通知不应该中断PHP程序,但会被记录到错误日志中。
注意:PHP8.0 以后,PHP 的默认错误报告行为是E_ALL
已弃用动态属性
PHP8.2中最值得注意的弃用之一就是弃用动态属性。如果一个类属性没有声明就被调用或赋值,就会退出程序。
class User { public int $uid; } $user = new User(); $user->name = 'Foo';
这个可能会影响到很多的的PHP遗留程序,推荐的修复方法是在类型中声明属性。
对此也有例外用法,比如stdClass和它的子类将正常使用,__get和__set魔术方法将正常使用,或者声明#AllowDynamicProperties。
其他一些弃用可以关注本站其他文章:
《PHP8.2 中字串变量解析的新用法》https://phpreturn.com/index/a628de16a2adf8.html
安装和升级到PHP8.2
PHP 8.2现在可以在所有常规源代码中下载/安装:
Windows:编译后的二进制文件可在windows.php.net
Ubuntu/Debian: PHP 8.2可用ondrej/phpPPA
Fedora/RHEL/CentOS/Alma/Rocky:可以在Remi的源中获取
Mac OS: PHP 8.2可以通过Homebrew安装shivammathur/homebrew-php利用.
Docker:可以通过8.2*版本获取PHP 8.2
原文地址:https://phpreturn.com/index/a639285aa925ed.html
原文平台:PHP武器库
更多编程相关知识,请访问:编程教学!!
以上是PHP8.2发布了,快来看看有什么改动!的详细内容。更多信息请关注PHP中文网其他相关文章!

要保护应用免受与会话相关的XSS攻击,需采取以下措施:1.设置HttpOnly和Secure标志保护会话cookie。2.对所有用户输入进行输出编码。3.实施内容安全策略(CSP)限制脚本来源。通过这些策略,可以有效防护会话相关的XSS攻击,确保用户数据安全。

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显着提升应用在高并发环境下的效率。

thesession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceIsiseededeedeedeedeedeedeedto to to avoidperformance andununununununexpectedLogOgouts.3)

在PHP中,可以使用session_name()函数配置会话名称。具体步骤如下:1.使用session_name()函数设置会话名称,例如session_name("my_session")。2.在设置会话名称后,调用session_start()启动会话。配置会话名称可以避免多应用间的会话数据冲突,并增强安全性,但需注意会话名称的唯一性、安全性、长度和设置时机。

会话ID应在登录时、敏感操作前和每30分钟定期重新生成。1.登录时重新生成会话ID可防会话固定攻击。2.敏感操作前重新生成提高安全性。3.定期重新生成降低长期利用风险,但需权衡用户体验。

在PHP中设置会话cookie参数可以通过session_set_cookie_params()函数实现。1)使用该函数设置参数,如过期时间、路径、域名、安全标志等;2)调用session_start()使参数生效;3)根据需求动态调整参数,如用户登录状态;4)注意设置secure和httponly标志以提升安全性。

在PHP中使用会话的主要目的是维护用户在不同页面之间的状态。1)会话通过session_start()函数启动,创建唯一会话ID并存储在用户cookie中。2)会话数据保存在服务器上,允许在不同请求间传递数据,如登录状态和购物车内容。

如何在子域名间共享会话?通过设置通用域名的会话cookie实现。1.在服务器端设置会话cookie的域为.example.com。2.选择合适的会话存储方式,如内存、数据库或分布式缓存。3.通过cookie传递会话ID,服务器根据ID检索和更新会话数据。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Linux新版
SublimeText3 Linux最新版