PDA

View Full Version : مبتدی: لطفا این کد را توضیح دهید



hesamsword
پنج شنبه 29 مهر 1395, 11:51 صبح
سلام من در حال یادگیری oop هستم و در کد زیر تا ارسال کد sql و دریافت و نمایش کوئری را یاد گرفتم اما بعد آرایه و متد و حلقه جدیدی به کد اضافه شد برای اینکار و من متوجه عملکرد آن نشدم دوستان لطفا این قسمت ها را توضیح دهید ممنون میشم. قسمت های که متوجه نشدم را مشخص کردم.





public static function find_this_query($sql){
global $database;
$result_set = $database->query($sql);

//ghesmate zir
$the_object_array = array();
while($row = mysqli_fetch_array($result_set)){
$the_object_array[] = self::instantion($row);
}

return $the_object_array;
}

public static function instantion($the_record){

$the_object = new self;

//$the_object->id = $found_user['id'];
//$the_object->password = $found_user['password'];
//$the_object->username = $found_user['username'];
//$the_object->first_name = $found_user['first_name'];
//$the_object->last_name = $found_user['last_name'];

//ghesmate zir
foreach($the_record as $the_attribute => $value){
if($the_object->has_the_attribute($the_attribute)){
$the_object->$the_attribute = $value;
}
}
return $the_object;
}

//ghesmate zir
private function has_the_attribute($the_attribute){
$object_properties = get_object_vars($this);
return array_key_exists($the_attribute,$object_properties );

}

plague
پنج شنبه 29 مهر 1395, 18:35 عصر
هدف اینه که سطر های دیتابیس رو که کوئری برگردونده تبدیل کنی به یک شی
به این شکل که یک سطر میشه یک شی از این کلاس
هر فیلد یا column توی اون سطر میشه یه property
حلقه داره همون کار این رو انجام میده



//$the_object->id = $found_user['id'];
//$the_object->password = $found_user['password'];
//$the_object->username = $found_user['username'];
//$the_object->first_name = $found_user['first_name'];
//$the_object->last_name = $found_user['last_name'];

فقط فرقش اینه که اینجا تک تک فیلد ها رو ریختی توی پروپرتی ها
اونجا یه حلقه نوشته که اینکار رو میکنه

اون قسمت دوم هم چک میکنه که پروپرتی وجود داره تو کلاس یا نه
مثلا تو دیتابیس یه فیلد داری به اسم abc اون قسمت دوم میاد چک میکنه که آیا کلاس شما پروپرتی به این نام داره یا نه

hesamsword
شنبه 01 آبان 1395, 11:26 صبح
خیلی خیلی ممنون تا حدودی متوجه شدم
فقط بنظرتون اسفاده از این روش برای سایتی مثل شبکه اجتماعی مناسبه؟؟

dcashop
شنبه 01 آبان 1395, 14:41 عصر
مرسی منم نیاز داشتم ممنون
درب اتوماتیک (https://dcashop.ir/index.php/automatic-gate1-door) کرکره اتوماتیک (https://dcashop.ir/index.php/%DA%A9%D8%B1%DA%A9%D8%B1%D9%87-%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%AA%DB%8C%DA%A9/%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D9%87-%D9%82%DB%8C%D9%85%D8%AA-%DA%A9%D8%B1%DA%A9%D8%B1%D9%87)

plague
شنبه 01 آبان 1395, 18:47 عصر
این بیشتر به درد تمرین برای یادگیری میخوره
یجورایی داری یه قسمتی از ORM رو پیاده سازی میکنی(خیلی خلاصه بگم پل ارتباطی برای تبدیل/انتقال داده ها بین برنامه شی گرای شما با دیتابیس )
که همونجوری که گفتم برای تمرین خیلی هم خوبه ولی در عمل orm یه سیستم پیچیده و مهمه که اگه شما این تکیه کد ساده رو ندونی احتمالا نمیتونی ORM مناسبی برای استفاده در یک سیستم واقعی بنویسی

مثل اینه که شما درای یه موتور ماشین میسازی بعد بیای بپرسی که مثلا این چرخ دنده چیه ؟ این برای یاد گیری خیلی هم خوبه و حتما ادامه بده ولی توصیه نمیکنم سوار ماشینی که خودت ساختی بشی

پیشنهاد میکنم از یک فریم ورک استفاده کنی که ORM خودش رو داشته باشه