الجديد في PHP 7.3 (متوفر الآن في Kinsta)

A VPN is an essential component of IT security, whether you’re just starting a business or are already up and running. Most business interactions and transactions happen online and VPN

اعتبارًا من 6 ديسمبر 2018 ، يتوفر أحدث إصدار من PHP 7.3! يأتي معه ميزات ووظائف وإهمال جديدة مفيدة وعدد كبير من إصلاحات الأخطاء وزيادة في الأداء. يتوفر PHP 7.3 الآن أيضًا لجميع عملاء Kinsta في لوحة معلومات MyKinsta . 🤘

في هذا المنشور ، سنقدم نظرة عامة على الميزات والتغييرات التي نعتبرها شخصيًا أكثر صلة. ولكن يمكنك دائما التحقق من قائمة كاملة من الميزات والتغييرات والاصلاحات في PHP 7.3 مذكرات الترقية و PHP 7.3 الطلبات للحصول على تعليقات .

تحديث: PHP 7.4 (إصدار رسمي) متاح الآن لجميع عملاء Kinsta.

أحدث إصدار PHP 7.3 متاح الآن لجميع عملاء Kinsta! 🤘

انقر للتغريد

ما الجديد في PHP مع PHP 7.3؟

في هذا المنشور نغطي تغييرات PHP 7.3 التالية:

صيغ Heredoc المرنة و Nowdoc

ربما يكون هذا أحد أهم التحسينات التي تأتي مع PHP 7.3 ، ونعتقد أنه يستحق المزيد من الاهتمام. لذا ، قبل الغوص في تغييرات PHP 7.3 heredoc / nowdoc ، سنقدم نظرة عامة سريعة على هذه الميزة الأساسية المفيدة. إذا كنت واثقًا بالفعل من nowdoc و heredoc ، فلا تتردد في الانتقال إلى تغييرات PHP 7.3.

نظرة عامة على بناء جمل heredoc و nowdoc

PHP 7.3: السماح بوضع مسافة بادئة لعلامة الإغلاق وإزالة المسافة البيضاء البادئة

PHP 7.3: إزالة متطلبات السطر الجديد المتدرج من علامة الإغلاق

نظرة عامة على بناء جمل heredoc و nowdoc

توفر صيغة heredoc طريقة لإضافة قدر كبير من النص دون الحاجة إلى الهروب من أشياء مثل علامات الاقتباس المزدوجة . تبدأ العلامة المتتابعة <<<بعلامة ، وتنتهي بنفس العلامة متبوعة بفاصلة منقوطة. هنا مثال:

print <<<EOT
Heredoc text behaves just like a double-quoted string, without the double quotes.
EOT;

يتصرف Nowdoc إلى حد كبير مثل heredoc ، مع بعض الاستثناءات:

المعرف محاط بعلامات اقتباس مفردة ( <<<‘EOT’)

لا يتم إجراء أي تحليل داخل مستند Nowdoc

هذا مثال على nowdoc:

print <<<'EOT'
Nowdocs are to single-quoted strings what heredocs are to double-quoted strings.
EOT;

يشترك كل من Heredocs و nowdocs في نفس القواعد التي تنظم استخدام علامة الإغلاق:

يجب أن تبدأ علامة الإغلاق في العمود الأول من السطر

يجب أن تتبع العلامة نفس قواعد التسمية مثل أي تسمية أخرى في PHP: يجب أن تحتوي فقط على أحرف أبجدية رقمية وشرطات سفلية ، ويجب أن تبدأ بحرف غير رقمي أو شرطة سفلية.

و دليل PHP يحذر:

من المهم جدًا ملاحظة أن السطر الذي يحتوي على معرف الإغلاق يجب ألا يحتوي على أحرف أخرى ، باستثناء الفاصلة المنقوطة (؛). وهذا يعني بشكل خاص أنه قد لا يتم وضع مسافة بادئة للمعرف ، وقد لا تكون هناك مسافات أو علامات تبويب قبل الفاصلة المنقوطة أو بعدها. من المهم أيضًا إدراك أن الحرف الأول قبل معرف الإغلاق يجب أن يكون سطرًا جديدًا كما هو محدد بواسطة نظام التشغيل المحلي. هذا موجود \nفي أنظمة UNIX ، بما في ذلك macOS. يجب أيضًا أن يتبع محدد الإغلاق سطر جديد.

PHP 7.2 بناء جملة غير صالح:

class foo {
    public $bar = <<<EOT
    bar
    EOT;
}
// Identifier must not be indented

PHP 7.2 البنية الصحيحة:

class foo {
    public $bar = <<<EOT
bar
EOT;
}

لإبقائها قصيرة ، في PHP 7.2:

لا يجوز وضع مسافة بادئة لعلامة الإغلاق

قد لا يحتوي السطر بعلامة الإغلاق على أحرف مثل المسافات أو علامات الجدولة

يجب أن يكون الحرف الأول قبل علامة الإغلاق سطرًا جديدًا

يجب أن يتبع علامة الإغلاق سطر جديد

من الواضح بما فيه الكفاية أن تركيبتي heredoc و nowdoc مقيدة تمامًا ، لكن PHP 7.3 قد يغير هذا قليلاً مع التحسينات التالية.

1. اترك مسافة بادئة لعلامة الإغلاق وتجريد المسافة البيضاء البادئة

مع PHP 7.3 يُسمح لنا بوضع مسافة بادئة لعلامة الإغلاق ، ويمكننا كتابة الكود التالي بأمان:

class foo {
    public $bar = <<<EOT
        bar
    EOT;
}

تحدد المسافة البادئة لعلامة الإغلاق مقدار المسافة البيضاء (أو علامات الجدولة) التي سيتم تجريدها من كل سطر في الجسم. لكن كن حذرًا: لا ينبغي أبدًا وضع مسافة بادئة لعلامة الإغلاق أكثر من أي خط آخر في الجسم .

انظر الكود أدناه:

class foo {
    public $bar = <<<EOT
    bar
        EOT;
}

سيصدر الرمز أعلاه خطأ التحليل التالي:

خطأ تحليل: مستوى المسافة البادئة للجسم غير صالح (توقع مسافة بادئة على الأقل …) في٪ s على السطر٪ d

يسمح تجريد علامات التبويب والمسافات البيضاء بوضع مسافة بادئة لجسم heredoc / nowdoc إلى نفس المستوى من الشفرة حوله ، وبدون مسافات بيضاء غير ضرورية قبل كل سطر من الجسم.

يمكننا استخدام كل من علامات التبويب والمسافات للمسافات البادئة ، لكن لا يُسمح لنا باستخدامها مختلطة. هذا يعني أنه يجب علينا استخدام نفس أحرف المسافة البادئة لعلامة الإغلاق وأي خطوط في الجسم . في حالة اختلاف أحرف المسافة البادئة ، نتوقع نوعًا مختلفًا من خطأ التحليل (مسافة بادئة غير صالحة).

2. قم بإزالة متطلبات سطر جديد متدرج من علامة الإغلاق

حاليًا ، يجب أن يتبع السطر الجديد العلامة من أجل إنهاء heredoc / nowdoc. PHP 7.3 يغير هذا ويسمح لنا بإنهاء heredoc / nowdoc على نفس السطر. هذا مثال من RFC:

PHP 7.2 البنية الصحيحة:

$values = [<<<END
a
b
c
END
, 'd e f'];

تركيب PHP 7.3 صحيح:

$values = [<<<END
a
b
c
END, 'd e f'];

على أي حال ، كن حذرًا عند اختيار اسم العلامة الخاصة بك لأنه “من حين لآخر” قد تتوقع خطأ إذا كانت تتطابق مع كلمة استخدمتها في نص heredoc / nowdoc (اقرأ المزيد عن هذا في RFC و GitHub ).

تم تمرير كلا الاقتراحين بأكثر من 2/3 أصوات.

PHP 7.3 RFC

صيغ Heredoc المرنة و Nowdoc

مصادر إضافية

صيغة سلسلة Heredoc

بناء جملة سلسلة Nowdoc

السماح بفاصلة زائدة في استدعاءات الوظائف

الفواصل اللاحقة (أو “الفواصل النهائية”) هي فواصل ملحقة بقائمة من العناصر أو المعلمات أو الخصائص وهي مفيدة في السياقات حيث يتم إلحاق القيم الجديدة بشكل متكرر لأنها تمنع حدوث أخطاء بسبب فاصلة مفقودة. في PHP ، يُسمح باستخدام الفواصل في المصفوفات ، واعتبارًا من PHP 7.2 يُسمح بها في مساحات الأسماء المجمعة.

اعتبارًا من PHP 7.3 ، يُسمح بالفواصل اللاحقة في تعريفات الوظائف. تقدم الدوال المتغيرة مثالاً على السياق حيث تكون الفواصل اللاحقة مفيدة للغاية:

foo(
    $bar,
    $baz,
);

يمكننا استخدام فاصلة لاحقة عندما نقوم بإنشاء مصفوفة compact()، لإرجاع سلسلة منسقة بها sprintf()، أو عند دمج مصفوفة:

$newArray = array_merge(
    $arrayOne,
    $arrayTwo,
    ['foo', 'bar'],
);

أيضًا ، قد تكون الفواصل اللاحقة مفيدة في التصحيح:

var_dump(
    $foo,
    $bar,
    $baz,
);

وهم أقوياء مع unset()و isset():

unset(
    $foo,
    $bar,
    $baz,
);

isset(
    $foo,
    $bar,
    $baz,
);

سيتم السماح بالفواصل اللاحقة في استدعاءات الأسلوب والمرفقات أيضًا.

ملاحظة: سيؤثر هذا التغيير على استدعاءات الوظائف فقط. لن يتغير بناء جملة إعلان الوظيفة . علاوة على ذلك ، لن يُسمح بالفواصل القائمة بذاتها ، والفواصل اللاحقة المتعددة ، والفاصلات البادئة.

يمكن العثور على أمثلة إضافية في صفحة RFC . تم تمرير هذا RFC بأغلبية 30 إلى 10 أصوات.

PHP 7.3 RFC

صيغ Heredoc المرنة و Nowdoc

JSON_THROW_ON_ERROR

واحدة من أكثر الوظائف التي تحظى بالتقدير والتي تأتي مع PHP 7.3 توفر طريقة جديدة للتعامل مع أخطاء JSON. هذه ليست ميزة أساسية ، ولكنها إضافة إلى امتداد JSON الذي من شأنه تغيير سلوك الخطأ في json_decode () و json_encode () .

حاليًا ، json_decode()يُرجع nullالخطأ ، ولكن nullيمكن أيضًا أن يكون نتيجة صحيحة. قد يكون هذا محيرا ، لأن

من الممكن فقط معرفة ما إذا كان خطأ قد حدث عن طريق الاتصال json_last_error()أو json_last_error_msg()، والذي يعيد حالة الخطأ العام في نماذج يمكن قراءتها آليًا وقراءة الإنسان على التوالي. – PHP RFC

json_encode()يعود FALSEعلى خطأ. وهذا أوضح لوجود قيمة خطأ محددة. على أي حال ، لا توقف كلتا الوظيفتين تنفيذ البرنامج عند حدوث خطأ ، ولا تلقي أي تحذير .

مع هذا ، إليك اقتراح PHP 7.3:

يقترح RFC بدلاً من ذلك إضافة قيمة علامة خيار جديدة لـ json_decode()و json_encode()، JSON_THROW_ON_ERROR. عند تمرير هذه العلامة ، يتم تغيير سلوك الخطأ لهذه الوظائف. يتم ترك حالة خطأ عالمية تمس، وإذا حدث خطأ من شأنه أن يضع على خلاف ذلك، هذه الوظائف بدلا من ذلك رمي JsonExceptionمع رسالة ومجموعة الرمز إلى أي شيء json_last_error()و json_last_error_msg()إلا سيكون على التوالي.

فيما يلي مثال يوضح طريقة بسيطة لإلقاء خطأ JSON:

try {
    json_decode("{", false, 512, JSON_THROW_ON_ERROR);
}
catch (\JsonException $exception) {
    echo $exception->getMessage(); // echoes "Syntax error"
}

من شأن طرح استثناء عند الخطأ أن يمنحك العديد من المزايا التي ستجدها مدرجة في RFC .

ملاحظة: تم تمرير معلمة عمق غير صالحة json_decode()لإخراج تحذير وإرجاع NULL. هذا السلوك لن يتأثر ب JSON_THROW_ON_ERROR. وبالمثل ، لا تتأثر أخطاء تحليل المعلمات بهذه JSON_THROW_ON_ERRORالتحذيرات وتستمر في إنتاجها.

تمت الموافقة على هذا الاقتراح بأغلبية 23 صوتًا مقابل 0.

PHP 7.3 RFC

JSON_THROW_ON_ERROR

مصادر إضافية

جافا سكريبت تدوين كائن

json_decode ()

json_encode ()

json_last_error ()

json_last_error_msg ()

استثناءات لغة PHP

list () مرجع الإحالة

ماذا يعني التخصيص المرجعي؟

ضع في اعتبارك السطر التالي:

$b = &$a;

هنا $bتحصل على قيمة $a، ولكن لا يتم نسخ هذه القيمة من $aإلى $b. في PHP يمكننا تعيين قيمة بالإشارة ، مما يعني أن متغيرين قد يشيران إلى نفس البيانات ، وكل تغيير في أي متغير يؤثر على البيانات الأصلية. هنا مثال من دليل PHP :

<strong><?php</strong>
$a = 3;
$b = &$a; // $b is a reference to $a

print "$a\n"; // prints 3
print "$b\n"; // prints 3

الآن ، دعنا نغير قيمة $a:

$a = 4; // change $a

print "$a\n"; // prints 4
print "$b\n"; // prints 4 as well, since $b is a reference to $a, which has been changed
ما هي القائمة () بناء وكيف تتغير مع PHP 7.3

في قائمة () لغة بناء يمكن استخدامها ل”المتغيرات تعيين كما لو كانوا في مجموعة”، ولكن مع list()لا يسمح لنا حاليا لتعيين قيم متغير حسب المرجع.

يجب أن يغير PHP 7.3 هذا مما يسمح لنا بتعيين المتغيرات بالرجوع أيضًا إلى list()البنية ، كما هو موضح في المثال التالي:

$array = [1, 2];
list($a, &$b) = $array;

وهو نفس:

$array = [1, 2];
$a = $array[0];
$b =& $array[1];

تتمثل ميزة هذا الاقتراح في أنه يمكننا الآن تعيين متغيرات متعددة بالإشارة ، وهو أمر غير مسموح به حاليًا. يتوفر المزيد من الأمثلة على RFC . تمت الموافقة على هذا الاقتراح بأغلبية 17 مقابل 7 أصوات.

تريد أن تعرف كيف زدنا من حركة المرور لدينا أكثر من 1000 ٪؟

انضم إلى أكثر من 20000 آخرين ممن يتلقون رسائلنا الإخبارية الأسبوعية مع نصائح من الداخل حول وورد بريس!

إشترك الآن

PHP 7.3 RFC

list () مرجع الإحالة

مصادر إضافية

دليل PHP – قائمة ()

دليل PHP – شرح المراجع

عوامل التعيين – التعيين حسب المرجع

وظيفة قابلة للعد

ميزة أخرى مفيدة تأتي مع PHP 7.3 هي is_countable()الوظيفة. حتى PHP 7.2 ، حصلنا على خطأ عند محاولة حساب () شيء غير قابل للعد. لهذا السبب ، من أجل تجنب التحذير ، فإننا مضطرون إلى إضافة الكود التالي:

if (is_array($foo) || $foo instanceof Countable) {
    // $foo is countable
}

يقترح هذا RFC الوظيفة is_countable () ، والتي تُرجع trueإذا كان المتغير المحدد عبارة عن صفيف أو متغير قابل للعد ، falseوإلا. لذلك ، يمكن تغيير الكود أعلاه على النحو التالي:

if (is_countable($foo)) {
    // $foo is countable
}

تم تمرير هذا الاقتراح بأغلبية 25 صوتًا مقابل 0.

PHP 7.3 RFC

غير قابل للعد

مصادر إضافية

الواجهة المعدودة

عدد

array_key_first () ، array_key_last ()

حاليا، يمكننا استرداد الأول والمفتاح الأخير من مجموعة باستخدام إعادة تعيين () ، النهاية () و مفتاح) ( وظائف. لسوء الحظ ، مع هذه الوظائف ، لا توجد طريقة لجمع الفهرس الأول أو الأخير من المصفوفة دون تغيير حالتها الداخلية. عادةً ما تقلل الخيارات الأخرى قابلية قراءة الكود والأداء.

سيؤدي هذا الاقتراح إلى تغيير هذا السيناريو عن طريق إضافة وظيفتين جديدتين إلى PHP core:

array_key_first()

array_key_last()

اعتبارا من PHP 7.3، array_key_first()و array_key_last()السماح لاسترداد الأول والمفتاح الأخير من مجموعة معينة دون التأثير على مؤشر مجموعة الداخلي . ستسمح لنا هذه الوظائف الجديدة بكتابة تعليمات برمجية أقل تعقيدًا وفي بعض الحالات تجنب الأخطاء. راجع RFC للحصول على مزيد من المعلومات والعديد من الأمثلة.

array_key_first()و array_key_last()تمت الموافقة مع 18-14 صوتا.

ملاحظة: اقترح RFC الأصلي وظيفتين أكثر، array_value_first()و array_value_last()الذي تم التصويت في استطلاع للرأي مختلف، ولكن لم تتم الموافقة عليها ولن تصبح جانب واحد من PHP الأساسية.

PHP 7.3 RFC

array_key_first () ، array_key_last ()

مصادر إضافية

array_key_first

array_key_last

تحسينات تجزئة كلمة مرور Argon2

Argon2 هي خوارزمية تجزئة مطبقة في PHP 7.2 كبديل لخوارزمية Bcrypt. قدم PHP 7.2 PASSWORD_ARGON2Iالثابت المتاح للاستخدام في password_*الوظائف:

password_hash('password', PASSWORD_ARGON2I);

منذ أول تطبيق له ، تمت إضافة متغير جديد من Argon2 ، لذلك ، في وقت كتابة هذا التقرير ، يأتي Argon2 في ثلاثة أنواع:

يزيد Argon2d من مقاومة هجمات تكسير وحدة معالجة الرسومات. إنه أسرع ويستخدم الوصول إلى الذاكرة المعتمد على البيانات.

يستخدم Argon2i الوصول إلى الذاكرة المستقل عن البيانات ، وهو المفضل لتجزئة كلمة المرور. إنه أبطأ لأنه يجعل المزيد من التمريرات عبر الذاكرة للحماية من هجمات المقايضة.

Argon2id هو إصدار هجين يجمع بين أسلوب Argon2i للمرور الأول عبر الذاكرة ، وطريقة Argon2d للتمريرات اللاحقة.

يوصى باستخدام Argon2id على الإنترنت ، إلا في حالة وجود أسباب وجيهة لتفضيل متغير آخر على وجه التحديد.

يقترح RFC الجديد تنفيذ Argon2id ضمن وظائف password_ * مع PASSWORD_ARGON2IDالثابت الجديد :

password_hash('password', PASSWORD_ARGON2ID);

التنفيذ مطابق لتطبيق Argon2i وسيقبل نفس عوامل التكلفة:

هل تعاني من مشاكل التوقف و وورد بريس؟ Kinsta هو حل الاستضافة المصمم لتوفير الوقت! تحقق من ميزاتنا

A تكلفة الذاكرة الذي يحدد عدد كيلوبايت التي يجب أن تستهلك خلال تجزئة (القيم الافتراضية هي 1 << 10، أو 1024 مصرف كوردستان الدولي، أو 1 ميغابايت)

و تكلفة الوقت الذي يحدد عدد التكرارات من خوارزمية التجزئة (الافتراضي 2)

A عامل التوازي ، والذي يحدد عدد المواضيع الموازية التي سيتم استخدامها أثناء التجزئة (الافتراضي 2)

انظر الكود التالي:

$options = ['memory_cost' => 1<<11, 'time_cost' => 4, 'threads' => 2];
password_hash('password', PASSWORD_ARGON2ID, $options);

مزيد من المعلومات والأمثلة على RFC .

PHP 7.3 RFC

تحسينات تجزئة كلمة مرور Argon2

مصادر إضافية

Argon2 (ويكيبيديا)

Argon2: وظيفة الذاكرة الصلبة لتجزئة كلمة المرور والتطبيقات الأخرى (PDF)

الإستنكار

سيتم إهمال الوظائف / الوظائف التالية مع PHP 7.3 وإزالتها في موعد لا يتجاوز PHP 8.0.

تجاهل وإزالة image2wbmp ()

تقوم وظيفة image2wbmp () بإخراج أو حفظ نسخة WBMP من صورة معينة. تأخذ هذه الوظيفة ثلاث وسيطات: مورد صورة واسم ملف (مسار الملف المحفوظ) ولون المقدمة.

اعتبارًا من PHP 5.0 ، يكون مطابقًا لـ imagewbmp () ، لذلك يقترح RFC هذا إهماله وإزالته.

منذ إصدار PHP 7.3 ، image2wbmp()تصدر كل مكالمة لـ تحذيرًا بالإيقاف. بعد الإزالة ، ستؤدي كل مكالمة إلى حدوث خطأ فادح.

PHP 7.3 RFC

تجاهل وإزالة image2wbmp ()

تجاهل وإزالة الثوابت غير الحساسة لحالة الأحرف

تدعم PHP حاليًا كلاً من الثوابت الحساسة لحالة الأحرف وغير الحساسة لحالة الأحرف. على أي حال ، يتم دعم الثوابت غير الحساسة لحالة الأحرف ولكنها تعتبر خاضعة للتناقضات في الوظائف وتكون معقدة للاستخدام.

يبدأ هذا الاقتراح بالأماكن التالية:

دائمًا ما تكون ثوابت الفئة حساسة لحالة الأحرف

الثوابت العالمية المعلنة مع constتكون دائمًا حساسة لحالة الأحرف

الثوابت المعرّفة مع define()حساسة لحالة الأحرف بشكل افتراضي

بالإضافة إلى ذلك ، ينص مرجع لغة PHP بشكل صريح على ما يلي:

الثابت حساس لحالة الأحرف بشكل افتراضي. حسب الاصطلاح ، تكون المعرفات الثابتة دائمًا كبيرة.

ومع ذلك ، يقترح طلب التعليقات هذا التغييرات التالية:

قم بإيقاف الاتصال define()مع ضبط المعلمة الثالثة على true- PHP 7.3

إيقاف الوصول إلى الثوابت غير الحساسة لحالة الأحرف بغلاف مختلف عن التصريح (باستثناء true، falseو null) – PHP 7.3

أزل إمكانية التصريح عن ثوابت غير حساسة لحالة الأحرف – PHP 8.0

تحويل true، falseومن nullثوابت ذات غلاف خاص إلى كلمات رئيسية محجوزة – PHP 8.0

PHP 7.3 RFC

تجاهل وإزالة الثوابت غير الحساسة لحالة الأحرف .

الإهمالات الإضافية لـ PHP 7.3

فيما يلي قائمة سريعة بالوظائف التي تم إهمالها في PHP 7.3. إنه ليس شاملاً ، إنها مجرد مقترحات إهمال أعتبرها شخصيًا أكثر صلة. للحصول على قائمة كاملة بالإهمالات المقترحة ، راجع الإيقافات لـ PHP 7.3 .

الأسماء المستعارة لوظيفة mbstring غير موثقة : يوجد عدد من الأسماء المستعارة لوظيفة mbstring غير الموثقة والتي تعد تكرارًا لوظائف مكافئة باستخدام mb_البادئة. على سبيل المثال ، mberegهو الاسم المستعار mb_ereg.

سيتم وضع علامة على جميع هذه الوظائف على أنها مهملة وسيتم إلقاء إشعار الإيقاف عند مواجهتها أثناء التجميع.

وظائف البحث عن الأوتار بإبرة عدد صحيح : تعمل هذه الوظائف عادة على إبر الوتر. إذا تم إعطاء إبرة غير سلسلة ، يتم تحويلها إلى عدد صحيح وتطبيقها كقيمة ترتيبية للحرف (اقرأ المزيد في دليل PHP ). هنا مثال من RFC :

$str = "There are 10 apples";
var_dump(strpos($str, "10")); // int(10)
var_dump(strpos($str, 10));   // bool(false)

يعتبر هذا الأمر محيرًا ويسبب مشكلات غير متوقعة لأن النوع يمكن أن يتغير مع مصدر بيانات المستخدم. لهذا السبب ، يقترح RFC مشكلة تحذير الإهمال إذا تم تمرير إبرة غير سلسلة إلى إحدى الوظائف التالية:

strpos

strrpos

stripos

strripos

strstr

strchr

strrchr

stristr

في PHP 8.0 ، يجب إزالة تحذير الإهمال وتحويل الإبر تلقائيًا إلى سلاسل.

جرب نسخة تجريبية مجانية

fgetss()وظيفة و string.strip_tagsمرشح تيار : fgetss()و string.strip_tagsعلامات الشريط من تيار لأنها قراءتها. تعرض كل من الوظيفة والمرشح وظيفة strip_tags () مما يجعل التنفيذ strip_tags()أكثر تعقيدًا ، حيث يلزم وجود جهاز حالة التدفق. بالإضافة إلى ذلك ، يشير RFC إلى عيب آخر لهذه الوظائف:

من ناحية أخرى ، يبدو أن هذه الوظائف ذات فائدة قليلة جدًا. strip_tags()نفسها ، نظرًا لقيودها والأخطاء المعروفة ، لديها بالفعل عدد قليل جدًا من التطبيقات المشروعة. ليست هناك حاجة لتوفير دعم أصلي لتطبيق البث فوق ذلك.

لذلك يقترح RFC إلى علامة fgetss()، gzgetss()و SplFileObject::fgetss()كما إهمال.

ماذا تعني PHP 7.3 لمستخدمي وورد بريس؟

وفقًا لصفحة إحصائيات وورد بريس الرسمية  ، حتى كتابة هذا المقال ، فقط 32.9٪ من مستخدمي وورد بريس قاموا بالترقية إلى PHP 7 أو أعلى. 4٪ فقط يستخدمون  PHP 7.2 . يمكنك أن ترى أن الغالبية العظمى من المستخدمين ، أكثر من 38٪ ، ما زالوا يعملون على PHP 5.6. الأمر الأكثر إثارة للرعب هو أن أكثر من 28.5٪ من المستخدمين يستخدمون إصدارات PHP غير مدعومة. اعتبارًا من ديسمبر 2016 ، قام وورد بريس.org بالفعل بزيادة  توصياتهم الرسمية  للمستخدمين من PHP 5.6 إلى PHP 7 أو أعلى.

إصدارات ووردبريس PHP

إصدارات ووردبريس PHP

أداء PHP 7

الأرقام المذكورة أعلاه غير مشجعة بشكل خاص من وجهة نظر الأداء ، حيث أظهر PHP 7 أنه أسرع بشكل ملحوظ. فيما يلي بعض الإحصائيات:

 تُظهر معايير PHP الرسمية  أن PHP 7 تسمح للنظام بتنفيذ ضعف عدد الطلبات في الثانية مقارنةً بـ PHP 5.6 ، في نصف وقت الاستجابة تقريبًا.

نشر Christian Vigh أيضًا  مقارنة أداء PHP  وجد فيها أن PHP 5.2 كان أبطأ بنسبة 400٪ من PHP 7.

قمنا بتشغيل معايير أداء PHP الخاصة بنا . وعلى غرار المعايير المذكورة أعلاه ، رأينا أن وورد بريس 5.0 على PHP 7.3 يمكنه تنفيذ ما يقرب من ثلاثة أضعاف عدد المعاملات (الطلبات) في الثانية مقارنة بـ PHP 5.6.

معايير وورد بريس 5.0 PHP

معايير وورد بريس 5.0 PHP

معيار وورد بريس 5.0 PHP 5.6: 91.64 req / sec

نتائج اختبار وورد بريس 5.0 PHP 7.0 المعيارية: 206.71 req / sec

نتائج اختبار وورد بريس 5.0 PHP 7.1 المعيارية: 210.98 req / sec

نتائج اختبار وورد بريس 5.0 PHP 7.2 المعيارية: 229.18 req / sec

نتائج اختبار  وورد بريس 5.0  PHP 7.3: 253.20 req / sec 🏆

من المثير للاهتمام أيضًا ملاحظة أن وورد بريس 4.9.8 على PHP 7.3 كان أسرع قليلاً من وورد بريس 5.0.

وورد بريس 4.9.8 معايير PHP

وورد بريس 4.9.8 معايير PHP

معيار وورد بريس 4.9.8 PHP 5.6: 97.59 req / sec

نتائج اختبار وورد بريس 4.9.8 PHP 7.0 المعيارية: 221.42 req / sec

نتائج اختبار وورد بريس 4.9.8 PHP 7.1 المعيارية: 233.78 req / sec

نتائج اختبار وورد بريس 4.9.8 PHP 7.2 المعيارية: 250.36 req / sec

نتائج اختبار وورد بريس 4.9.8  PHP 7.3: 276.31 req / sec 🏆

كثير منها بطيء في التحديث لمجرد الوقت الذي يستغرقه اختبار جميع المكونات الإضافية والسمات الجديدة التابعة لجهات خارجية للتأكد من أنها تعمل بشكل صحيح. لكن في كثير من الأحيان ، يعود الأمر إلى أنهم ببساطة لم يفعلوا ذلك بعد.

التحقق من إصدار PHP الخاص بك

ألست متأكدًا من إصدار PHP الذي تقوم بتشغيله؟ تتمثل إحدى أسهل طرق التحقق في استخدام أداة مثل  Pingdom  أو Google Chrome Devtools. سيُظهر لك رأس طلب HTTP الأول عادةً الإصدار.

تحقق من نسخة PHP

تحقق من نسخة PHP

هذا يعتمد على المضيف الذي لا يعدل X-Powered-Byقيمة الرأس. إذا فعلوا ذلك ، فقد لا ترى إصدار PHP الخاص بك. في هذه الحالة ، يمكنك أيضًا تثبيت مكون إضافي مجاني مثل Version Info والذي سيعرض لك بعض معلومات الخادم الأساسية في تذييل لوحة تحكم مسؤول وورد بريس.

تحقق من إصدار PHP في وورد بريس

تحقق من إصدار PHP في وورد بريس

بدلاً من ذلك ، يمكنك أيضًا  تحميل ملف عبر FTP  للاطلاع على إصدار PHP الخاص بك ، أو التواصل مع مضيفك والسؤال.

التحديث إلى PHP 7.3

الإصدار الأخير من PHP 7.3 موجود هنا ويمكنك البدء في اختباره على الفور. يمكنك  اختبار موقع وورد بريس الخاص بك محليًا  أو التحقق من البرامج النصية الخاصة بك في بيئة مثل  Docker ، والتي تتيح لك اختبار إصدارات مختلفة من PHP من سطر الأوامر.

أو يمكنك استخدام بيئة التدريج ، حيث سيشبه ذلك موقع الإنتاج المباشر. قم بإنشاء  بيئة مرحلية  ببضع نقرات بسيطة في لوحة معلومات MyKinsta.

بيئة التدريج ووردبريس

بيئة التدريج ووردبريس

نوصي دائمًا بإجراء اختبار شامل قبل استخدامه في موقع الإنتاج. للقيام بذلك ، ما عليك سوى تغيير محرك PHP لموقع التدريج ضمن “أدوات” ويمكنك البدء في الاختبار لضمان توافق المكونات الإضافية والسمات التابعة لجهات خارجية.

التغيير إلى PHP 7.3

التغيير إلى PHP 7.3

بمجرد التأكد من أن كل شيء يعمل ، يمكنك إما تغيير موقع الإنتاج الخاص بك إلى PHP 7.3 أو إذا قمت بإجراء أي تغييرات ، فقم أيضًا  بدفع موقع التدريج للعيش .

ملخص

أحدث وأكبر إصدار من PHP موجود هنا. إنه يجلب لنا هدايا مثل مستندات heredocs و nowdocs المرنين ، وفواصل زائدة في استدعاءات الوظائف ، list()والتعيينات المرجعية والمزيد. في هذا المنشور ، قدمنا ​​نظرة عامة على التحسينات والتغييرات المفضلة لدينا ، لكننا نرغب أيضًا في معرفة التحسينات والتغييرات المفضلة لديك ، والطرق التي ستستفيد منها. اسمحوا لنا أن نعرف في التعليقات أدناه. ولا تنس أن PHP لم يمت !

#PHP 7.3 هو كل شيء عن المطورين. تحقق من الميزات والوظائف الجديدة وتعزيز الأداء! 🤘

انقر للتغريد

يمكنك العثور على القائمة الكاملة لمقترحات PHP 7.3 في صفحة طلبات التعليقات وملاحظات ترقية PHP 7.3 الخاصة بـ GitHub .

وفر الوقت والتكاليف وحقق أقصى قدر من أداء الموقع من خلال:

مساعدة فورية من خبراء استضافة وورد بريس ، 24/7.

تكامل Cloudflare Enterprise.

يصل الجمهور العالمي إلى 28 مركز بيانات حول العالم.

التحسين من خلال مراقبة أداء التطبيقات المضمنة لدينا.

كل ذلك وأكثر من ذلك بكثير ، في خطة واحدة بدون عقود طويلة الأجل ، وعمليات الترحيل المدعومة ، وضمان استرداد الأموال لمدة 30 يومًا. تحقق من خططنا أو تحدث إلى قسم المبيعات للعثور على الخطة المناسبة لك.

توضيح

اي عملية نسخ او اقتباس او ترجمة او نقل تم لاغراض علمية وتدريبية وتعليمية بحته وقد تم انشاء هذا المحتوى بمعرفة خبراء في مجال التقنية اما عن طريق إنشاء او تحرير او نقل او نسخ او اقتباس او ترجمة المحتوى من مصادر خاصة او عامة وكل ذلك ضمن حقوق النشر المتعارف عليها.

اي أخطاء تظهر في المحتوى مهما كان نوعه او تصنيفه يمكنك تحرير رسالة فورية لادارة موثوق لاجل تصحيح هذه الاخطاء، وسنكون شاكرين لك في حال قمت بالتعاون معنا لاجل اصلاح هذه الاخطاء.

شاركنا رايك وتقييمك للموضوع

{{ reviewsTotal }}{{ options.labels.singularReviewCountLabel }}
{{ reviewsTotal }}{{ options.labels.pluralReviewCountLabel }}
{{ options.labels.newReviewButton }}
{{ userData.canReview.message }}

Deprecated: wp_enqueue_script أستدعيت بواسطة مُعطى مهجور منذ النسخة 10.3.0! يُرجى إستخدام المُعالج الجديد ⁦wc-photoswipe⁩ بدلًا من المُعالج السابق ⁦photoswipe⁩. in /home/aspiqswk/2.mawthuk.com/wp-includes/functions.php on line 6121