-1

طريقة استخدام كائن من كلاس داخل دالة داخل كلاس؟

السلام عليكم ورحمة الله وبركاته

انا بستخدم SQLite3 بقوم بانشاء كائن منها يحمل العنوان بتاع ملف قاعدة البيانات عندما استخدمه داخل دالة لا يعمل

وقومت باستخدام Global معه ايضاً لكن فى وجود كود عادى ليس كلاس او دالة يعمل طبيعى

  • ما هى طرق استخدام كائن داخل كلاس او دالة

  • قومت بعمل كلاس فى ملف اخر وتوريثه الى الملف المراد استخدام فيه sqlite ولكن لا يرى الدوال الداخلية له


التعليق السابق

يعمل بشكل جيد ولكن عند استخدامه داخل كلاس اخر لا يعمل

بمعنى اجى اورث الكلاس ده واستدعى دالة dbinsert لم يعمل

  • وهذا كود لإستخدام دوال الفئة عبر الوراثة:

    class dbclass
    {
        public $sqldb;
    
        public function __construct()
        {
            $this->sqldb = new SQLite3('db.db');
        }
    
        public function dbinsert($insert)
        {
            return $this->sqldb->exec($insert);
        }
    } 
    
    class newClass extends dbclass
    {
        public function __construct()
        {
            parent::__construct();
        }
    
        public function run()
        {
            $te = $this->dbinsert("INSERT INTO send (id, phone, type, send, date) VALUES (NULL,'222233344','text',0,'1/1/1')");
    
            if($te){ 
                echo 'inserted';
            }else{
                echo ' Dont Inserted';
            }
        }
    }
    
    $obj = new newClass();
    $obj->run();
    

الاكلاس الاول فى ملف لوحدة قمت باستدعاءه عن طريق require وبعدين ورثته جربها كده

  • لا يهم إن كان في ملف أو في نفس الصفحة في كلتا الحالتين الكود واحد، وضع الفئات في ملفات منفصلة ما هو إلا عملية تنظيم للأكواد وإستهلاك الموارد فقط ليس إلا.

تعبتك معلشى -- اعتقد ان فى مشكلة تانية لو هى شغاله عندك علشان لما باجى استدعى الدالة فى دالة داخل الكلاس لا تعمل غداً هجربها

  • وهذا نفس الكود داخل دالة ضمن فئة جديدة:

    class dbclass
    {
        public $sqldb;
    
        public function __construct()
        {
            $this->sqldb = new SQLite3('db.db');
        }
    
        public function dbinsert($insert)
        {
            return $this->sqldb->exec($insert);
        }
    } 
    
    class newClass
    {
        public function __construct(){}
    
        public function run()
        {
            $a = new dbclass(); 
            $te = $a->dbinsert("INSERT INTO send (id, phone, type, send, date) VALUES (NULL,'222233344','text',0,'1/1/1')");
    
            if($te){ 
                echo 'inserted';
            }else{
                echo ' Dont Inserted';
            }
        }
    }
    
    $obj = new newClass();
    $obj->run();
    

واذا كان الكلاس الأول الى اسمه dbclass فى ملف لوحده؟

  • انا قمت بتوريثه ولكنه لم يقم بالادخال!
  • عليك إستدعات باني الفئة الـ dbclass من خلال الكلمة المحجوزة parent داخل باني الفئة الوارثة للفئة dbclass كالتالي:

    parent::__construct();
    

والمثال كامل في الرد: