برمجت موقع على الخادم المحلي وكان يشتغل بشكل ممتاز ولكن عندما رفعتهظهرت لي اخطاء ولكن عرفت سببها وهي انني برمجت الموقع على الخادم المحلي باصدار php7 وعلى الاستضافة كان اصدار php8, وحليت جميع المشاكل واشتغل الموقعدون اخطاء، ولكن عندمارفعت نفس الموقع على استظافه اخرى مجانيه ظهرت اخطاء ومشاكل جديده واهمها هذا الخطاء
Deprecated: Creation of dynamic property Controllers\Login::$pageFileName is deprecated in /home/vol11_1/infinityfree.com/if0_37676707/htdocs/Core/HtmlPage.php on line 58
ما المشكله هل تتعلق بان اصدارphp قديم او ماذا
ذلك تحذير وليس خطأ، لن يؤثر على عمل الموقع، مفاده أنك تستخدم ميزة في PHP أصبحت قديمة (Deprecated) وقد يتم إزالتها في الإصدارات المستقبلية من PHP، وهي Controllers\Login::$pageFileName كخاصية ديناميكية Dynamic Property وذك الأسلوب أصبح قديمًا.
,تم إعلان ميزة إنشاء الـ Dynamic Properties في PHP كـ Deprecated في PHP 7.2.
أي بدلاً من إنشاء خاصية ديناميكية، استخدم خاصية ثابتة Static Property مثل Controllers\Login::PAGE_FILE_NAME.
أو استخدام متغير عادي داخل الفئة Controllers\Login لتخزين اسم الملف.
// بدلاً من Controllers\Login::$pageFileName = 'login.php'; // استخدم Controllers\Login::PAGE_FILE_NAME = 'login.php'; // خاصية ثابتة $pageFileName = 'login.php'; // متغير عادي
ولكن لماذا لم يظهر هذا التحذير في الاستضافة الاولى او في الخادم المحلي وكليهما يستخدمان اخر اصدار من php نسخة 8.0.6
يا اخي انا لا استخدم شي مماذكرت في تعليك
انا استخدم مثل هذا الكود وهو يعمل بشكل عادي
<?php
namespace Core;
trait mm
{
public $ss;
public function f(){
$this->ss = 'thg cfg x fggs x ggs hfx' ;
echo str_replace(['x', 's' ] ,['*','#' ] ,$this->ss);//اشار احد الاخطاء في الكود الئ هذه الدله ولكن هنا تعمل بشكل جيد
}
}
class Index
{
use mm;
//public $ss;
public function f2(){
$this->f();
}
}
use Core\Index;
$obj = new Index() ;
$obj->f2();
نفس هذا الاسلوب اعتمد عليه حيث لديه عدة كلاسات مخصصه للوراثه بهذا الشكل في هذا الكود تعمل وفي كود الموقع لاتعمل
التعليقات