
اگر نسخه PHP سرور خود را به ورژن 8.0 یا 8.1 آپدیت کرده باشید به دلیل تغییرات هسته ای این ورژن با ورژن های قدیمی تر ، ممکن است در سورس شما خطاهایی بروز کنند یکی از این خطاها خطای Deprecated هستند.
خطای موردنظر به صورت زیر نشان داده میشود:
نمونه اول:
1 |
Deprecated: Array and string offset access syntax with curly braces is deprecated in |
نمونه دوم:
1 |
Exception #0 (Exception): Deprecated Functionality: Array and string offset access syntax with curly braces is deprecated in /vendor/magento/zendframework1/library/Zend/Json/Encoder.php on line 561 |
نمونه سوم:
1 |
Fatal error: Array and string offset access syntax with curly braces is no longer supported in /wp-content/plugins/ads-for-wp/admin/inc/Google/Utils.php on line 67 |
برای رفع این موضوع مطابق زیر عمل میکنیم.
با رفتن به مسیری که در لاگ به آن اشاره شده به کدهای زیر میرسیم:
1 2 3 4 5 6 7 8 |
public function getRecordID(string $zoneID, string $type = '', string $name = ''): string { $records = $this->listRecords($zoneID, $type, $name); if (isset($records->result{0}->id)) { return $records->result{0}->id; } return false; } |
بر اساس نوع خطای صادرشده، کافی ست که عبارت فوق را به شکل زیر اصلاح کنیم:
1 2 3 4 5 6 7 8 |
public function getRecordID(string $zoneID, string $type = '', string $name = ''): string { $records = $this->listRecords($zoneID, $type, $name); if (isset($records->result[0]->id)) { return $records->result[0]->id; } return false; } |
همانطور که مشاهده میکنید ما کاراکتر کروشه یا [] را با آکولاد یا {} جایگزین کردیم. و این مورد هم به این خاطر است که در نسخه PHP 7.4 به بالا ، روش دریافت کاراکترهای جداگانه در یک رشته توسط آکولاد منسوخ شده است و در کدهایی که در قدیم نوشته شده اند بعد از تغییر ورژن پی اچ پی نیاز پیدا میکنید که حتما این تغییر را اعمال کنید تا کدهای شما به درستی کار کنند.
با تشکر از شما