پی ایچ پی 8.3 پروگرامنگ زبان کی ریلیز

ترقی کے ایک سال کے بعد، پی ایچ پی 8.3 پروگرامنگ زبان کی رہائی پیش کی گئی۔ نئی برانچ میں نئی ​​خصوصیات کی ایک سیریز کے ساتھ ساتھ مطابقت کو ختم کرنے والی متعدد تبدیلیاں شامل ہیں۔

پی ایچ پی 8.3 میں اہم تبدیلیاں:

  • کلاس کلوننگ کے دوران، "صرف پڑھنے والے" وصف کے ساتھ خصوصیات کو دوبارہ شروع کرنا ممکن ہے۔ صرف پڑھنے کی خصوصیات کو اوور رائیڈ کرنے کی اجازت صرف "__clone" فنکشن کے اندر ہے: صرف پڑھنے کی کلاس پوسٹ { پبلک فنکشن __construct( پبلک ڈیٹ ٹائم $createdAt, ) {} پبلک فنکشن __clone() { $this->createdAt = new DateTime(); // اجازت دی گئی اگرچہ "createdAt" پراپرٹی صرف پڑھنے کے لیے ہے۔ } }
  • کلاسز، خصائص اور شماریات میں قسم کے اشارے کے ساتھ مستقل استعمال کرنے کی صلاحیت فراہم کی گئی ہے: class Foo { const string BAR = 'baz'; }
  • "#[اوور رائڈ]" وصف کے لیے شامل کیا گیا تعاون، جس کے ساتھ ڈویلپر مترجم کو مطلع کر سکتا ہے کہ نشان زدہ طریقہ کچھ بنیادی طریقہ کو اوور رائیڈ کرتا ہے۔ اگر کوئی اوور رائڈ نہیں ہے تو، ترجمان ایک غلطی ظاہر کرے گا۔
  • ایک صف انڈیکس کے طور پر منفی اقدار کی ہینڈلنگ کو تبدیل کر دیا گیا۔ مثال کے طور پر، خالی صف میں نمبر "-5" کے ساتھ ایک عنصر کو شامل کرتے ہوئے اور دوسرا عنصر شامل کرتے وقت، پہلے دوسرا عنصر انڈیکس "0" کے ساتھ محفوظ کیا جاتا تھا، لیکن ورژن PHP 8.3 سے شروع کرتے ہوئے اسے انڈیکس "-4" کے ساتھ محفوظ کیا جائے گا۔ . $array = []؛ $array[-5] = 'a'؛ $array[] = 'b'؛ var_export($array)؛ // سرنی تھی (-5 => 'a', 0 => 'b') // صف بندی بن گئی (-5 => 'a', -4 => 'b')
  • صرف پڑھنے کے موڈ میں گمنام کلاسز بنانے کی صلاحیت شامل کی گئی: $class = new readonly class { public function __construct( public string $foo = 'bar', ) {} };
  • json_validate() فنکشن کو جلدی سے چیک کرنے کے لیے شامل کیا گیا کہ آیا کوئی سٹرنگ ڈی کوڈنگ آپریشنز کیے بغیر JSON فارمیٹ میں ہے۔ json_validate(string $json، int $depth = 512، int $flags = 0): bool
  • Randomizer کلاس میں نئے طریقے شامل کیے گئے ہیں، جو چھدم بے ترتیب نمبروں اور ترتیبوں کو پیدا کرنے کے لیے ایک اعلیٰ سطح کا API فراہم کرتا ہے: کسی دوسرے سٹرنگ میں موجود حروف کو بے ترتیب ترتیب میں استعمال کرتے ہوئے، دیئے گئے سائز کی سٹرنگ بنانے کے لیے getBytesFromString؛ getFloat اور nextFloat ایک بے ترتیب فلوٹنگ پوائنٹ نمبر بنانے کے لیے جو مخصوص رینج میں آتا ہے۔
  • متحرک کلاس نحو کا استعمال کرتے ہوئے مستقل کو بازیافت کرنے کی صلاحیت شامل کی گئی: class Foo { const BAR = 'bar'; } $name = 'BAR'; // پہلے، بار مستقل کو بازیافت کرنے کے لیے، آپ کو constant(Foo::class . '::' . $name); // اب صرف Foo::{$name} کی وضاحت کریں؛
  • تاریخوں اور وقت کے ساتھ کام کرنے والے آپریشنز میں پیدا ہونے والے مسائل کی صورت میں انفرادی استثناء (DateMalformedIntervalStringException، DateInvalidOperationException، DateRangeError) کی نسل کو شامل کیا گیا۔
  • غیر سیریلائز() فنکشن میں سیریلائزڈ ڈیٹا کو پارس کرنے کے دوران ہونے والی غلطیوں کا بہتر ہینڈلنگ۔ مسائل کی صورت میں، unserialize() اب E_NOTICE کی بجائے E_WARNING جاری کرتا ہے۔
  • رینج() فنکشن میں تبدیلیاں کی گئی ہیں۔ ایک استثناء پیدا ہوتا ہے جب اشیاء، وسائل یا صفوں کو متغیر میں منتقل کرنے کی کوشش کرتے ہیں جو رینج کی حدود کی وضاحت کرتے ہیں، ساتھ ہی جب $step پیرامیٹر میں منفی قدر یا کسی بھی پیرامیٹر میں غیر متعینہ قدر کی وضاحت کرتے ہیں۔ حروف کی فہرست اب آؤٹ پٹ ہو سکتی ہے جب نمبروں کے بجائے سٹرنگز کی وضاحت کریں (مثال کے طور پر، "حد('5'، 'z')")۔
  • جامد خصوصیات کے ساتھ خصلتوں کے رویے کو تبدیل کیا، جو اب پیرنٹ کلاس سے وراثت میں ملنے والی جامد خصوصیات کو اوور رائیڈ کر دیتے ہیں۔
  • اسٹیک اوور فلو تحفظ کے لیے سیٹنگیں شامل کی گئیں۔ zend.max_allowed_stack_size اور zend.reserved_stack_size ہدایات کو ini فائل میں شامل کیا گیا ہے، زیادہ سے زیادہ اجازت شدہ اور محفوظ اسٹیک سائز کی وضاحت کرتے ہوئے۔ اسٹیک ختم ہونے کے قریب پہنچنے پر پروگرام کریش ہو جائے گا، جب اسٹیک zend.max_allowed_stack_size اور zend.reserved_stack_size کے درمیان فرق سے زیادہ بھرا ہوا ہو گا (سیگمنٹیشن فالٹ ہونے سے پہلے عملدرآمد رک جائے گا)۔ پہلے سے طے شدہ طور پر، zend.max_allowed_stack_size کی قدر 0 پر سیٹ ہوتی ہے (0—سائز کا تعین خود بخود ہوتا ہے؛ حد کو غیر فعال کرنے کے لیے، آپ اسے -1 پر سیٹ کر سکتے ہیں)۔
  • نئے POSIX فنکشنز posix_sysconf(), posix_pathconf(), posix_fpathconf() اور posix_eaccess() شامل کیے گئے۔
  • mb_str_pad فنکشن کو شامل کیا گیا ہے، جو str_pad() سٹرنگ فنکشن کا ایک اینالاگ ہے، جو ملٹی بائٹ انکوڈنگ جیسے UTF-8 کے ساتھ کام کرنے کے لیے ڈیزائن کیا گیا ہے۔
  • آپ کو طریقوں سے بندشیں تخلیق کرنے اور ان بندشوں کو نامزد دلائل دینے کی اجازت دیتا ہے۔ $test = نیا ٹیسٹ ()؛ $closure = $test->جادو(…)؛ $closure(a: 'ہیلو'، b: 'دنیا')؛
  • انٹرفیس میں مستقل کی مرئیت کو سنبھالتے وقت رویہ بدل گیا۔ انٹرفیس I { public const FOO = 'foo'؛ } کلاس C لاگو کرتا ہے I { private const FOO = 'foo'؛ }
  • فنکشنز array_sum(), array_product(), posix_getrlimit(), gc_status(), class_alias(), mysqli_poll(), array_pad() اور proc_get_status() کو بڑھا دیا گیا ہے۔
  • منفی $widths ویلیو کو mb_strimwidth() میں منتقل کرنے کی صلاحیت کو فرسودہ کر دیا گیا ہے۔ نمبر فارمیٹر::TYPE_CURRENCY مستقل کو ہٹا دیا گیا ہے۔ دو پیرامیٹرز $host اور $port کے ساتھ ldap_connect() فنکشن کو کال کرنے کی سپورٹ بند کر دی گئی ہے۔ opcache.consistency_checks ترتیب ہٹا دی گئی ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں