یعنی میشه به طور مثال
قبلا توی فایل های که مربوط به 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']);