واجهة نظيفة وسريعة الاستجابة لمعلومات Zend OPcache، وتعرض الإحصائيات والإعدادات والملفات المخزنة مؤقتًا، وتوفر تحديثًا فوريًا للمعلومات.
تستخدم هذه الواجهة ReactJS وAxios وهي مخصصة للمتصفحات الحديثة، وتتطلب PHP 7.1 على الأقل.
معهد ماساتشوستس للتكنولوجيا: http://acollington.mit-license.org/
إذا كنت قادرًا وترغب في رعاية هذا العمل بطريقة ما، فسيكون ذلك رائعًا للغاية. يمكنك القيام بذلك من خلال صفحة رعاية GitHub.
وبدلاً من ذلك، إذا كنت ترغب فقط في توجيه تحياتي على X (المعروف أيضًا باسم Twitter) لأقول أنك تستخدمه، فسيكون ذلك رائعًا أيضًا! (هل هناك أي شخص آخر يفتقد البطاقات البريدية؟)
هناك طريقتان للبدء باستخدام واجهة المستخدم الرسومية هذه:
أسهل طريقة لبدء استخدام opcache-gui هي استنساخ هذا الريبو، أو ببساطة نسخ/لصق/تنزيل ملف index.php
إلى موقع يمكن لخادم الويب الخاص بك تحميله. ثم قم بتوجيه متصفحك إلى هذا الموقع، مثل https://www.example.com/opcache/index.php
.
يمكنك تضمين الملفات مع Composer عن طريق تشغيل الأمر composer require amnuts/opcache-gui
.
بمجرد الوصول إلى دليل vendor
الخاص بك، هناك العديد من الطرق التي يمكنك من خلالها استخدام الواجهة. على سبيل المثال، إذا كنت تستخدم إطار عمل مثل Symfony أو Laravel، فيمكنك تحميل opcache-gui في Controller
. سوف تختلف متطلباتك لإعداده ضمن الإطار الذي تختاره، لذلك ليس من الممكن حقًا تفصيل كيفية القيام بذلك ضمن هذا الملف التمهيدي... ولكن لدي ثقة في قدرتك على اكتشاف ذلك!
مساحة الاسم المستخدمة للفئة هي AmnutsOpcache
، لذا بمجرد أن تصبح التبعية في ملف autoload.php
الخاص بك، يمكنك استخدام الفئة AmnutsOpcacheService
. على سبيل المثال، يمكنك القيام بشيء مثل:
<?php
use Amnuts Opcache Service ;
// assuming location of: /var/www/html/opcache.php
require_once __DIR__ . ' /../vendor/autoload.php ' ;
// specify any options you want different from the defaults, if any
$ options = [ /* ... */ ];
// setup the class and pass in your options, if you have any
$ opcache = ( new Service ( $ options ))-> handle ();
ثم يمكنك إنشاء أي طريقة عرض تريدها لإظهار تفاصيل opcache. على الرغم من وجود واجهة أنيقة جدًا تعتمد على React متاحة لك في هذا الريبو.
وبدلاً من ذلك، قم بتضمين vendor/amnuts/opcache-gui/index.php
مباشرةً وسيعطيك هذا نفس النتيجة مثل مجرد نسخ/لصق index.php
في مكان ما.
<?php
// assuming location of: /var/www/html/opcache.php
require_once __DIR__ . ' /../vendor/amnuts/opcache-gui/index.php ' ;
يمكنك ببساطة إنشاء رابط رمزي إلى ملف index.php
الموجود في دليل vendor
:
ln -s /var/www/vendor/amnuts/opcache-gui/index.php /var/www/html/opcache.php
في الأساس، هناك الكثير من الطرق لتشغيل الواجهة - اختر ما يناسب احتياجاتك.
يبدو التكوين الافتراضي للواجهة كما يلي:
$ options = [
' allow_filelist ' => true , // show/hide the files tab
' allow_invalidate ' => true , // give a link to invalidate files
' allow_reset ' => true , // give option to reset the whole cache
' allow_realtime ' => true , // give option to enable/disable real-time updates
' refresh_time ' => 5 , // how often the data will refresh, in seconds
' size_precision ' => 2 , // Digits after decimal point
' size_space ' => false , // have '1MB' or '1 MB' when showing sizes
' charts ' => true , // show gauge chart or just big numbers
' debounce_rate ' => 250 , // milliseconds after key press to send keyup event when filtering
' per_page ' => 200 , // How many results per page to show in the file list, false for no pagination
' cookie_name ' => ' opcachegui ' , // name of cookie
' cookie_ttl ' => 365 , // days to store cookie
' datetime_format ' => ' D, d M Y H:i:s O ' , // Show datetime in this format
' highlight ' => [
' memory ' => true , // show the memory chart/big number
' hits ' => true , // show the hit rate chart/big number
' keys ' => true , // show the keys used chart/big number
' jit ' => true // show the jit buffer chart/big number
],
// json structure of all text strings used, or null for default
' language_pack ' => null
];
إذا كنت تريد تغيير أي من الإعدادات الافتراضية، فيمكنك فقط إدخال الإعدادات التي تريد تغييرها إذا كنت سعيدًا بالاحتفاظ بالباقي كما هو. ما عليك سوى تغيير المصفوفة الموجودة أعلى البرنامج النصي index.php
(أو تمرير المصفوفة بشكل مختلف عن فئة Service
).
على سبيل المثال، سيؤدي ما يلي إلى تغيير قيم allow_reset
و refresh_time
فقط مع الاحتفاظ بكل شيء آخر كقيمة افتراضية:
$ opcache = ( new Service ([
' refresh_time ' => 2 ,
' allow_reset ' => false
]))-> handle ();
أو هذا المثال لإضفاء طابع "قرصنة" على علامات التبويب:
$ opcache = ( new Service ([
' language_pack ' => <<<EOJSON
{
"Overview": "Crows nest",
"Cached": "Thar Booty",
"Ignored": "The Black Spot",
"Preloaded": "Ready an' waitin', Cap'n",
"Reset cache": "Be gone, yer scurvy dogs!",
"Enable real-time update": "Keep a weathered eye",
"Disable real-time update": "Avert yer eyes, sea dog!"
}
EOJSON
]))-> handle ();
سوف تظهر لك النظرة العامة جميع المعلومات الأساسية. من هنا ستتمكن من رؤية المضيف والنظام الأساسي الذي تعمل عليه، وإصدار OPcache الذي تستخدمه، ومتى تمت إعادة تعيينه آخر مرة، والوظائف والتوجيهات المتاحة (مع روابط إلى دليل php.net)، وجميع الإحصائيات المرتبطة بـ OPcache (عدد الزيارات، والذاكرة المستخدمة، والذاكرة الحرة والمهدرة، والمزيد).
كافة الملفات الموجودة حاليًا في ذاكرة التخزين المؤقت مدرجة هنا مع الإحصائيات المرتبطة بها.
يمكنك تصفية النتائج للمساعدة في العثور على البرامج النصية المحددة التي تبحث عنها وتغيير طريقة فرز الملفات المخزنة مؤقتًا. من هنا يمكنك إبطال ذاكرة التخزين المؤقت للملفات الفردية أو إبطال ذاكرة التخزين المؤقت لجميع الملفات المطابقة لبحثك.
إذا كنت لا تريد إظهار قائمة الملفات على الإطلاق، فيمكنك استخدام خيار التكوين allow_filelist
؛ سيؤدي ضبطه على false
إلى منع قائمة الملفات تمامًا.
إذا كنت تريد ضبط طول ترقيم الصفحات، فيمكنك القيام بذلك باستخدام خيار تكوين per_page
.
إذا قمت بإعداد قائمة بالملفات التي لا تريد تخزينها مؤقتًا عن طريق توفير قيمة opcache.blacklist_filename
، فسيتم إدراج قائمة الملفات ضمن علامة التبويب هذه.
إذا لم تقم بتوفير خيار التكوين هذا في ملف php.ini
فلن يتم عرض علامة التبويب هذه. إذا قمت بتعيين خيار تكوين allow_filelist
على false
، فلن يتم عرض علامة التبويب هذه بغض النظر عن إعداد ini الخاص بك.
قدم PHP 7.4 القدرة على التحميل المسبق لمجموعة من الملفات على الخادم عن طريق إعداد opcache.preload
في ملف php.ini
الخاص بك. إذا قمت بإعداد ذلك، فسيتم إدراج قائمة الملفات المحملة مسبقًا ضمن علامة التبويب هذه.
كما هو الحال مع الملف الذي تم تجاهله، إذا لم تقم بتوفير إعداد ini، أو كان خيار تكوين allow_filelist
false
، فلن يتم عرض علامة التبويب هذه.
يمكنك إعادة تعيين ذاكرة التخزين المؤقت بالكامل بالإضافة إلى إجبار الملفات الفردية أو مجموعات الملفات على أن تصبح غير صالحة حتى يتم تخزينها مؤقتًا مرة أخرى.
يمكن تعطيل إعادة الضبط باستخدام خيارات التكوين allow_reset
و allow_invalidate
.
يمكن للواجهة إجراء استطلاع رأي بين الحين والآخر لإلقاء نظرة جديدة على ذاكرة التخزين المؤقت. يمكنك تغيير عدد مرات حدوث ذلك باستخدام خيار التكوين refresh_time
، والذي يكون بالثواني.
عندما تكون التحديثات في الوقت الفعلي نشطة، ستقوم الواجهة تلقائيًا بتحديث جميع القيم حسب الحاجة.
وأيضًا، إذا اخترت إبطال صلاحية أي ملفات أو إعادة تعيين ذاكرة التخزين المؤقت، فسيتم ذلك دون إعادة تحميل الصفحة، وبالتالي لا تتم إعادة تعيين مصطلح البحث الذي أدخلته، أو الصفحة التي انتقلت إليها. إذا لم يكن التحديث في الوقت الفعلي قيد التشغيل، فسيتم إعادة تحميل الصفحة عند أي استخدام إبطال.
تم تصميم الواجهة وفقًا لمبدأ وجود ملف واحد فقط يحتاجه أي شخص لبدء التشغيل. ولتحقيق ذلك، يوجد ملف قالب، وملفات لغة، وjsx، وcss، والتي يتم استخدامها جميعًا لإنشاء الواجهة ويتم تجميعها معًا في عملية الإنشاء.
ستسمح لك عملية الإنشاء هذه بتغيير اللغة المستخدمة، أو كيفية تضمين مكتبات جافا سكريبت التابعة لجهات خارجية المطلوبة، أو الشكل والمظهر، أو حتى المكونات الأساسية، إذا كنت ترغب في ذلك.
لتشغيل عملية الإنشاء، قم بتشغيل الأمر php ./build/build.php
من جذر الريبو (ستحتاج إلى تثبيت nodejs
و npm
بالفعل). بمجرد التشغيل، يجب أن ترى الإخراج مثل:
Installing node modules
Building js and css
Creating single build file
Using remote js links from 'cloudflare'
Done!
سيحتاج البرنامج النصي للإنشاء إلى تثبيت node_modules
مرة واحدة فقط، لذا يجب أن يكون أسرع قليلاً في الإصدارات اللاحقة!
ستنشئ عملية الإنشاء ملف CSS مترجمًا على build/interface.css
وسيكون جافا سكريبت الخاص بالواجهة موجودًا في build/interface.js
. ربما يمكنك استخدام كليهما ضمن أطر العمل وأنظمة القوالب الخاصة بك، إذا كنت ترغب في ذلك.
يوجد ملف CSS للواجهة في الملف build/_frontend/interface.scss
. قم بإجراء التغييرات هناك إذا كنت تريد تغيير الألوان أو التنسيق.
إذا قمت بإجراء أي تغييرات على ملف scss فسوف تحتاج إلى تشغيل البرنامج النصي للإنشاء حتى تتمكن من رؤية التغييرات.
إذا كنت تريد تغيير الواجهة نفسها، فقم بتحديث ملف build/_frontend/interface.jsx
- وهو في الأساس مجموعة من مكونات ReactJS. هذا هو المكان الذي يمكنك فيه تغيير تخطيط الأداة، وكيفية عمل قائمة الملفات، وترقيم الصفحات، وما إلى ذلك.
قم بتشغيل البرنامج النصي للإنشاء مرة أخرى في حالة إجراء تغييرات هنا.
قالب PHP المجمع المستخدم في عملية البناء، والذي يعمل على تمرير أجزاء مختلفة من البيانات إلى جانب ReactJS من الأشياء، موجود في build/template.phps
. إذا أردت تحديث إصدار ReactJS المستخدم، أو كيفية تنظيم غلاف html (مثل الرغبة في تمرير أشياء إضافية إلى جانب ReactJS من الأشياء)، فسيكون هذا هو الملف الذي تريد تحديثه.
تتطلب الواجهة عددًا قليلاً من ملفات js التابعة لجهات خارجية لتعمل بشكل صحيح. لديك خيار القدرة على تغيير مكان جلبها (بين CloudFare وJSDelivr وUnpkg)، أو يمكنك الحصول على js js محليًا ومضمنًا بالكامل (على سبيل المثال، لديك سياسات CSP معمول بها وعناوين URL البعيدة غير مدرجة في القائمة البيضاء).
لتغيير موقع موارد الطرف الثالث، استخدم الخيار -r
أو --remote-js
متبوعًا إما بـ cloudflare
أو jsdelivr
أو unpkg
. على سبيل المثال، إذا أردت استخدام jsdelivr ، فعليك تشغيل أمر الإنشاء مثل هذا: php ./build/build.php -r jsdelivr
. هذا الإعداد الافتراضي هو cloudflare
.
إذا كنت تريد أن يكون ملف js مضمنًا، فيمكنك استخدام العلامة -j
أو --local-js
عند الإنشاء، مثل php ./build/build.php -j
. سيؤدي هذا إلى جلب ملفات البرامج النصية البعيدة وتضمين js في ملف index.php
الرئيسي. إذا كنت ترغب في إنشائه مرة أخرى باستخدام الملفات البعيدة، فقم بتشغيل الأمر مرة أخرى بدون العلامة. سيؤدي جلب الملفات إلى أخذ خيار -r
في الاعتبار إذا قمت بتوفيره.
هناك قول مأثور يقول: "إذا كنت تعرف أكثر من لغة فأنت متعدد اللغات، وإذا كنت لا تعرفها فأنت بريطاني". لا يعد هذا إدانة دامغة للعقلية البريطانية تجاه اللغات الأخرى فحسب، بل يوضح أيضًا سبب كون واجهة المستخدم باللغة الإنجليزية فقط حتى الآن - لأنني، رغم كل خطاياي، بريطانية.
ومع ذلك، أصبح من الممكن الآن إنشاء الواجهة بلغة مختلفة. حاليًا، وبفضل المساهمين، يتم أيضًا دعم اللغتين الفرنسية والإسبانية. إذا أراد أي شخص آخر المساهمة بحزم لغات إضافية، فيرجى تقديم العلاقات العامة!
إذا كانت حزمة اللغة موجودة في الدليل build/_languages/
، فيمكنك استخدامها مع العلامة -l
أو --lang
. على سبيل المثال، إذا كانت هناك حزمة لغة fr.json
، فيمكنك استخدام php ./build/build.php -l fr
للإنشاء باستخدام تلك اللغة.
تمت إضافة عدد قليل من نصوص الملحن للمساعدة في البناء. هم، composer build
، composer build-french
، و composer build-spanish
.
إذا كنت تريد إنشاء ملف لغة، فإن build/_languages/example.json
يحتوي على كل ما تحتاجه. إنها بنية json بسيطة والمفتاح هو النسخة الإنجليزية التي تتطابق مع ما هو موجود في واجهة المستخدم، والقيمة هي ما تقوم بتحويله إليه - والذي في ملف المثال فارغ فقط. إذا كانت القيمة فارغة أو كان الفهرس غير موجود للترجمة، فسيتم استخدام النسخة الإنجليزية فقط. يمنحك هذا القدرة على استبدال بعض أو كل سلاسل الواجهة كما تراه مناسبًا.
للبدء باستخدام لغة جديدة، انسخ example.json
إلى اللغة التي تريدها والتي لا توجد بالفعل - على سبيل المثال، pt-br.json
أو pirate.json
. ثم املأ الترجمات بالقيم. بمجرد الانتهاء من ذلك، أعد البناء باستخدام php ./build/build.php -l pt-br
أو php ./build/build.php -l pirate
.
الإصدار 3.5.5
تمت إضافة الترجمات الإسبانية بفضل @cvc90 (PR#110)
الإصدار 3.5.4
معالجة أفضل لما إذا كان JIT ممكّنًا أم معطلاً. يوضح الآن أيضًا سبب تعطيله حتى إذا قمت بتشغيل الإعداد. تقوم الواجهة أيضًا بتعطيل الرسم البياني وإحصائيات الذاكرة بشكل صحيح لـ JIT إذا تم تعطيلها لأي سبب من الأسباب.
الإصدار 3.5.3
تم التغلب على بعض التناقضات مع الروابط الموجودة في وثائق opcache على php.net.
الإصدار 3.5.2
تمت إزالة بعض التحذيرات الخاصة بـ PHP 8.2 عن طريق إسقاط namespace
وبيانات use
في ملف index.php
المجمع.
الإصدار 3.5.1
هذا هو الإصدار 3.5.0 فقط ولكن مع علامات الإصدار المصححة لإسعاد Packagist وتصحيح خطأي.
الإصدار 3.5.0
يغير هذا الإصدار كيفية تضمين عملية الإنشاء لجافا سكريبت.
-j
/ --local-js
الآن بتضمين جافا سكريبت في ملف index.php
بدلاً من جعلها كملفات منفصلة-r
/ --remote-js
للسماح لك بتحديد المكان الذي تحصل منه على ملفات الطرف الثالث (إما عند جلبها محليًا أو عند إضافتها كروابط نصية عن بعد)، مع توفر cloudflare
أو jsdelivr
أو unpkg
خيارات الإصدار 3.4.0
يضيف هذا الإصدار المزيد من المعلومات حول الملفات الموجودة في ذاكرة التخزين المؤقت، ويسمح بمزيد من التكوين من خلال البرنامج النصي للتكوين والإنشاء.
datetime_format
الجديد للتنسيق المرن لقيم التاريخ/الوقتmodified
للملف المخزن مؤقتًا إلى الإخراج (عندما تمت إضافة الملف أو تحديثه)index.php
باستخدام ملفات js المحلية بدلاً من عناوين URL البعيدة الإصدار 3.3.1
فقط بعض التعديلات الطفيفة:
الإصدار 3.3.0
معلومات JIT المضافة في الغالب لـ PHP 8:
false
إذا كنت تريد تمكين JIT، فيجب عليك إدخال قيمة لإعداد opcache.jit_buffer_size ini، وإلا فسيتم تعطيله افتراضيًا.
إذا كنت لا تستخدم PHP 8، فستقوم الواجهة بتعويض معلومات JIT الإضافية ولن تعرضها.
الإصدار 3.2.1
إصدار صيانة بسيط إلى:
الإصدار 3.2.0
تم تحديث ReactJS إلى أحدث الإصدارات المصغرة والمستخدمة وإجراء تحسين طفيف على خيار الفرز في حالة عدم وجود ترقيم الصفحات.
الإصدار 3.1.0
تمت إضافة القدرة على فرز قائمة الملفات المخزنة مؤقتًا بعدة طرق.
الإصدار 3.0.1
تحديث بسيط يستخدم http أو https للحصول على مكتبات جافا سكريبت، اعتمادًا على ما تستخدمه.
الإصدار 3.0.0
على الرغم من أن الواجهة تبدو متماثلة في الغالب، إلا أنها تمت إعادة كتابتها بالكامل تحت الغطاء! بعض التغييرات الأكثر وضوحا هي:
الإصدار 2.5.4
وضع محسّن لمساحة اسم CSS الأولية للعب بشكل جيد داخل البرنامج الإضافي Moodle وربما الأنظمة الأخرى. كما تم تعديل بعض CSS.
الإصدار 2.5.3
تمت إضافة أسماء فئات CSS وتحديث قواعد النمط لاستخدامها.
الإصدار 2.5.2
الإصلاح العاجل لقيم مستوى التحسين التي تم طرحها في الإصدار 2.5.1.
الإصدار 2.5.1
إصلاحات للأخطاء وتحسينات في تفاصيل مستوى التحسين.
الإصدار 2.5.0
تمت إضافة مخطط تمييز جديد لإظهار النسبة المئوية للمفاتيح المخزنة مؤقتًا مع خيارات لتشغيل/إيقاف الرسوم البيانية المميزة الفردية.
الإصدار 2.4.1
إصلاحات الأخطاء في الغالب
memory_consumption
و max_file_size
كأحجام يمكن قراءتها بواسطة الإنسانfile_cache_only
نشطًا الإصدار 2.4.0
يضيف مخزن ملفات تعريف الارتباط لحالة الوقت الفعلي مما يسمح بتنشيط الوقت الفعلي عند التحميل. يمكن تعديل اسم ملف تعريف الارتباط وطول TTL في التكوين
الإصدار 2.3.0
يضيف معلومات عن السلاسل المضمنة والتوافق مع PHP 5.4
الإصدار 2.2.2
يجلب تحسينات لقائمة الملفات عند التصفية
الإصدار 2.2.1
تم الآن تحديث أجهزة القياس باستخدام النبض في الوقت الفعلي وتم إصلاح بعض مشكلات التقريب
الإصدار 2.2.0
يوفر القدرة على تشغيل/إيقاف تشغيل قائمة الملفات (الافتراضي قيد التشغيل)
الإصدار 2.1.0
يوفر الآن طريقة أسهل بكثير لتكوين بعض الخيارات، سواء كان ذلك وقت الاستطلاع، أو تبديل القدرة على إعادة تعيين ذاكرة التخزين المؤقت، أو التحديثات في الوقت الفعلي، وما إلى ذلك. كما يسمح لك أيضًا بإظهار القيم الكبيرة (استخدام الذاكرة ومعدل الإصابة) كمقياس الرسوم البيانية بدلا من الأرقام الكبيرة.
الإصدار 2.0.0
يقدم استخدام React.js الذي يوفر القدرة على تحديث المزيد من المعلومات بسلاسة في الوقت الفعلي (حسنًا، كل خمس ثوانٍ افتراضيًا) - بحيث يتم الآن تحديث الملفات وكذلك النظرة العامة. هناك مظهر محدث، يزيل التدرجات ويضفي إحساسًا مسطحًا. وقد خضع الكود بشكل عام إلى إصلاح شامل.
تتوفر إصدارات واجهة المستخدم الرسومية على:
https://github.com/amnuts/opcache-gui/releases/
تساءل عدد من الأشخاص عما إذا كانت واجهة opcache-gui تعمل على مثيل PHP-FPM الخاص بهم، حيث لا يبدو أن الملفات المعروضة هي كل ما تم تخزينه مؤقتًا، وهذا يختلف عما قد يعرضه Apache.
في الأساس، هذا هو السلوك المتوقع. وبفضل التعليق الرائع من المساهم Michalng، يجب أن يغطي هذا الشرح الفرق:
يمكن للواجهة فقط إظهار ما تعرفه عن استخدام OPcache لمثيل OPcache الخاص بها، وبالتالي عند الوصول إليها من خلال Apache باستخدام mod_php، يمكنها فقط رؤية استخدام OPcache لمثيل OPcache لخادم الويب Apache. عندما يتم الوصول إليه باستخدام CGI الكلاسيكي، فإنه يمكن فقط رؤية نفسه مخزّنًا مؤقتًا عند إنشاء مثيل PHP وOPcache جديد، وفي هذه الحالة لا يكون OPcache نفسه منطقيًا في كثير من الأحيان.
لتتمكن من مراقبة وإدارة OPcache لجميع تطبيقات الويب، تحتاج جميعها إلى استخدام نفس FastCGI، أي مثيل PHP-FPM.
في حالة Apache، غالبًا ما يحتاج المرء إلى تكوينه بشكل نشط حتى لا يستخدم mod_php الداخلي الخاص به ولكن يرسل طلبات معالج PHP إلى خادم PHP-FPM المشترك عبر mod_proxy_fcgi، والذي يتطلب أيضًا استخدام الحدث MPM. يُنظر إلى هذا بشكل عام على أنه الإعداد المفضل في الوقت الحاضر، خاصة لمواقع الويب ذات الزيارات العالية. وذلك لأن كل طلب وارد باستخدام MPM prefork + mod_php ينشئ عملية فرعية خاصة بها تستغرق وقتًا وذاكرة إضافيين، بينما مع الحدث MPM وخادم PHP-FPM المخصص، يتم استخدام مؤشر ترابط معالج ينتظر بالفعل (عادةً) على Apache وعلى نهاية PHP، لا تستهلك أي ذاكرة أو وقت إضافي تقريبًا لتفرخ العملية.
يتطلب البرنامج النصي PHP 7.1 أو أعلى. لا أميل إلى خفض مستوى الكود لجعله متوافقًا مع الإصدار 7.0، وآمل أن يكون معظم الأشخاص قد قاموا بالترقية الآن. لكنني أقدر حقًا أنه في بعض الأحيان لا يكون لدى الأشخاص القدرة على تغيير إصدار PHP الذي يستخدمونه لأنه خارج عن سيطرتهم. لذلك، إذا كنت من الأشخاص غير المحظوظين، فيمكنك إجراء التغييرات التالية على index.php
(أو Service.php
وتشغيل البرنامج النصي للإنشاء). للخطوط:
public function getOption(?string $name = null)
public function getData(?string $section = null, ?string $property = null)
public function resetCache(?string $file = null): bool
سيكون الأمر مجرد حالة إزالة ?
من كل من المعلمات.