۱ آرمان محمدی پور
جلوگیری از تکرار
امیر صالحی حل شده توسط امیر صالحی

یعنی میشه به طور مثال
قبلا توی فایل‌های که مربوط به Functions SQL بود
خیلی از بخش‌ها توی همه Functions ها تکرار می‌شد
مثل 

 

global $conn;
یا
$stmt = $conn->prepare($sql);

که توی اکثر Functions ها تعریف شده بود توی یه کلاس مادر نوشت و قابلیت‌های اضافه که تکرار نمیشه مثل SQL رو توی یه کلاس جدا؟

 

 

سلام و احترام

یه چیزی شبیه به همین مثالی که شما زدید، برای مثال 

اومدم یک بار connection رو داخل construct  (متد construct وقتی که از کلاس یک آبجکت میسازیم اجرا میشه)یک بار ایجاد کردم و میتونم ازش داخل متدهای که وجود داره استفاده کنم

برای مثال داخل متد insert که یک دیتایی رو insert کنه اومدم از connection استفاده کردم. توی ویدیوهای بعدی کاملا متوجه این موارد میشید. سوالی هم اگه داشتید حتما مطرح کنید


    class DatabaseClass{	
        private $connection = null;
             // this function is called everytime this class is instantiated
        public function __construct( $dbhost = "localhost", $dbname = "myDataBaseName", $username = "root", $password    = ""){
            try{
                $this->connection = new PDO("mysql:host={$dbhost};dbname={$dbname};", $username, $password);
                $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                $this->connection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
            }catch(Exception $e){
                throw new Exception($e->getMessage());   
            }			
        }
        // Insert a row/s in a Database Table
        public function Insert( $statement = "" , $parameters = [] ){
            try{
                $this->executeStatement( $statement , $parameters );
                return $this->connection->lastInsertId();
            }catch(Exception $e){
                throw new Exception($e->getMessage());   
            }		
        }
                // execute statement
        private function executeStatement( $statement = "" , $parameters = [] ){
            try{
                $stmt = $this->connection->prepare($statement);
                $stmt->execute($parameters);
                return $stmt;
            }catch(Exception $e){
                throw new Exception($e->getMessage());   
            }		
        }
    }

مثال استفاده

$database = new DatabaseClass();
$database->insert(['test' => 'value1']);

 

بهترین پاسخ
امیر صالحی ۱۲ مهر ۱۴۰۰، ۱۷:۵۹