PHP 8.3 keluaran besar: inovasi dan peningkatan, mencipta masa depan

DDD
Lepaskan: 2023-11-24 11:06:18
asal
1919 orang telah melayarinya

PHP 8.3 dikeluarkan pada 23 November 2023, menandakan satu lagi langkah penting dalam evolusi bahasa. Keluaran ini memperkenalkan banyak ciri baharu, peningkatan prestasi dan penamatan yang direka untuk meningkatkan pengalaman pembangunan PHP. Dalam panduan komprehensif ini, kami akan mendalami kemas kini ini, memberikan pandangan, petua dan contoh kod kreatif untuk membantu anda menyesuaikan diri dan memanfaatkan PHP 8.3 sepenuhnya.

Peningkatan kelas baca sahaja

PHP 8.3 telah mengubah suai tingkah laku pengklonan kelas baca sahaja untuk membolehkan permulaan semula sifat baca sahaja semasa pengklonan. Perubahan ini menangani kes kelebihan tertentu dalam pengklonan dalam. Rujuk contoh berikut:

class Article {
    public readonly DateTime $publishedOn;
    public function __construct(DateTime $publishedOn) {
        $this->publishedOn = $publishedOn;
    }
    public function __clone() {
        // PHP 8.3 允许
        $this->publishedOn = new DateTime();
    }
}
Salin selepas log masuk

Perubahan ini membolehkan lebih fleksibiliti dalam mengurus sifat baca sahaja, terutamanya apabila menyalin objek dengan struktur yang kompleks.

Pemalar Kelas Ditaip

PHP 8.3 membolehkan pembangun menentukan jenis untuk pemalar kelas, meningkatkan keselamatan jenis dan menjadikan kod lebih bersih. Contohnya:

class Config {
    const API_KEY = 'your-api-key';
}
Salin selepas log masuk

Ciri ini meningkatkan keteguhan pemalar kelas, menjadikannya sebahagian penting dalam kontrak kelas.

#[Override] 属性

PHP 8.3 中的 #[Override]属性用于声明某个方法有意重写父方法。该属性可在重命名或删除父方法时捕获错误,从而提高代码质量。例如:

abstract class BaseClass
{
    public function defaultMethod(): int
    {
        return 1;
    }
}
final class DerivedClass extends BaseClass
{
    #[Override]
    public function defaultMethod(): int
    {
        return 2;// 故意重写
    }
}
Salin selepas log masuk

属性增加了额外的安全层,确保您的覆盖始终是有意且可识别的。

数组中的负索引

PHP 8.3 对数组处理负索引方式进行了改进。在以前的版本中,如果使用负索引将一个项目添加到空数组,然后添加另一个项目,则第二个项目会从 0 开始。在 PHP 8.3 中,第二个项目将放置在下一个负索引处,即 -1。例如:

$array = [];
$array[-1] = '第一个';
$array[] = '第二';
var_export($array); // [&#39;first&#39;, &#39;second&#39;] 在 PHP < 8.3 中,[&#39;first&#39;, &#39;second&#39;] 在 PHP 8.3 中
Salin selepas log masuk

一变化使得负指数的处理更加可预测和一致。

匿名只读类

PHP 8.3 引入了对匿名类标记为只读的支持,这为动态创建不可变对象提供了更大的灵活性。例如:

$anonymousClass = new readonly class {
    public function __construct(
        public string $name = &#39;Anonymous&#39;,
    ) {}
};
Salin selepas log masuk

增强功能使只读类在各种编程场景中更加通用,扩大了其应用范围。

新函数 json_validate

PHP 8.3 新增的 json_validate() 函数提供了一种节省内存的方法来检查字符串是否为有效的 JSON。此函数特别适用于需要验证 JSON 而不对其进行解码的场景。它的工作原理如下:

$jsonString = &#39;{"姓名": "小明", "年龄": 20}&#39;;
$isJsonValid = json_validate($jsonString);
Salin selepas log masuk

该函数简化了 JSON 验证,使其更加高效和简单。

Randomizer 增强

PHP 8.3 对 PHP 8.2 中引入的 Randomizer 类进行了增强,新增了从字符串生成随机字节以及获取指定范围内的随机浮点数的方法。例如:

$randomizer = new Randomizer();
$randomBytes = $randomizer->getBytesFromString(&#39;abcdef&#39;, 4);
$randomFloat = $randomizer->getFloat(0.0, 1.0);
Salin selepas log masuk

新方法扩展了 Randomizer 类的功能,使其能够生成更丰富、更灵活的随机数据。

动态类常量获取

PHP 8.3 新增了动态获取类常量的语法,使代码在使用常量时更加灵活、易读。例如:

class Setting {
  const MODE = &#39;产生&#39;;
  public static function getCurrentMode() {
    return static::MODE;
  }
}
$currentMode = Setting::getCurrentMode();
Salin selepas log masuk

这种语法简化了动态访问类常量的过程,增强了代码的可读性和可维护性。

更具针对性的日期/时间异常

PHP 8.3 对日期和时间函数的异常处理进行了改进,新增了针对特定错误情况的专用异常。此改进使错误报告更加描述性和准确,从而提高了调试和处理日期/时间相关问题的效率。

优化了 unserialize() 错误处理

PHP 8.3 中的 unserialize() 函数在遇到问题时始终抛出 E_WARNING 错误,从而提供更统一和可预测的错误处理。此更改简化了序列化场景中的调试和错误处理。

peningkatan fungsi julat()

PHP 8.3 pengecualian, dan dibuang untuk nilai langkah tidak sah <code style="margin: 0px 2px; padding: 2px 6px; outline: 0px; max-width: 100%; box-sizing: border-box ! important; overflow-wrap: break-word !important; font-family: " operator mono consolas monaco monospace rgba word-break: normal>ValueError Exception. Penambahbaikan ini menjadikan tingkah laku fungsi lebih intuitif dan konsisten. range() 函数进行了多项改进,包括针对无效边界输入抛出 TypeError 异常,以及针对无效步长值抛出 ValueError 异常。这些改进使函数的行为更加直观和一致。

特征和静态属性

PHP 8.3 中,使用具有静态属性的特征将重新声明从父类继承的静态属性,为当前类创建单独的静态属性存储。此更改使特征中静态属性的行为与类中静态属性的行为一致。

堆栈溢出检测

PHP 8.3 添加了新的 INI 指令来检测堆栈溢出,从而防止分段错误。此功能增强了 PHP 应用程序的稳定性和可靠性,尤其是在复杂或递归场景中。

新函数 mb_str_pad

PHP 8.3 新增的 mb_str_pad()

Sifat dan Sifat Statik🎜🎜Dalam PHP 8.3, menggunakan sifat dengan sifat statik akan mengisytiharkan semula sifat statik yang diwarisi daripada kelas induk, mewujudkan stor sifat statik yang berasingan untuk kelas semasa. Perubahan ini menjadikan kelakuan sifat statik dalam sifat konsisten dengan kelakuan sifat statik dalam kelas. 🎜🎜Stack Overflow Detection🎜🎜PHP 8.3 menambah arahan INI baharu untuk mengesan limpahan tindanan untuk mengelakkan kesalahan pembahagian. Ciri ini meningkatkan kestabilan dan kebolehpercayaan aplikasi PHP, terutamanya dalam senario kompleks atau rekursif. 🎜🎜Fungsi baharu mb_str_pad🎜🎜Baharu dalam PHP 8.3 Penutupan Kaedah Ajaib dan Parameter Dinamakan<p style='margin-top: 0px; margin-bottom: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; text-wrap: wrap; font-size: 16px; line-height: 2; color: black; font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;'>PHP 8.3 meningkatkan fleksibiliti dan ekspresi kaedah sihir dengan membenarkan anda membuat penutupan daripada kaedah sihir dan menghantar parameter bernama kepada penutupan ini, menjadikannya lebih berkuasa dan serba boleh. </p> <h2>Keterlihatan malar invarian</h2> <p style='margin-top: 0px; margin-bottom: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; text-wrap: wrap; font-size: 16px; line-height: 2; color: black; font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;'>PHP 8.3 membetulkan pepijat semakan keterlihatan berterusan semasa melaksanakan antara muka. Perubahan ini memastikan keterlihatan pemalar yang konsisten, selaras dengan prinsip umum keterlihatan dalam PHP. </p> <h2>Penolakan</h2> <p style='margin-top: 0px; margin-bottom: 0px; padding: 8px 0px; outline: 0px; max-width: 100%; clear: both; min-height: 1em; text-wrap: wrap; font-size: 16px; line-height: 2; color: black; font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;'>Seperti biasa, PHP 8.3 menyertakan beberapa penamatan untuk menghapuskan ciri lapuk atau kurang cekap secara berperingkat dan menggerakkan bahasa ke hadapan. Penamatan ini termasuk perubahan pada fungsi seperti <code style='margin: 0px 2px; padding: 2px 6px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace; font-size: 14px; border-radius: 4px; color: rgb(19, 148, 216); background-color: rgba(27, 31, 35, 0.05); word-break: normal;'>mb_strimwidth() 和 ldap_connect() .

Pengeluaran PHP 8.3 merupakan satu lagi peristiwa penting dalam pembangunan berterusan dan penambahbaikan bahasa PHP. Ciri baharu, penambahbaikan dan penamatan menyediakan pembangun dengan lebih banyak alatan dan keupayaan untuk menulis kod yang lebih cekap, teguh dan boleh diselenggara. Semasa anda meneroka dan menerima pakai perubahan ini, pastikan anda menguji aplikasi anda dengan teliti dan sentiasa dimaklumkan tentang perkembangan terkini dalam ekosistem PHP.

Atas ialah kandungan terperinci PHP 8.3 keluaran besar: inovasi dan peningkatan, mencipta masa depan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan