PDA

View Full Version : ایا این روش شی گرایی صحیح است



learn30t
یک شنبه 19 دی 1395, 13:08 عصر
سلام
من جدیدا شی گرایی با php رو شروع کردم
حالا یک کلاس نوشتم که چندین متد داره ، میخواستم ببینم این روش که در پایین هست صحیح است یا باید برای هر کدام از کارها مثل ثبت نام ، ورود ، دریافت اطلاعات و ... کاربر یک کلاس بنویسم
ممنون میشم راهنمایی کنید
نمونه کد :
چون کدها رو اینجا درست نشون نمیده میتونید از آدرس زیر کدها رو ببینید :
http://pastecode.ir/?view=1730

مهرداد سیف زاده
یک شنبه 19 دی 1395, 16:35 عصر
کلاسی که نوشتید درست هست
کنترل کاربر بیشتر روی دیتابیس کا میکنه و یه قسمت کوکی هم داره. معمولا برای کار با کوکی کلاس جدا میزارن و کنترل دیتابیس رو هم جدا.
حالا کوکی یه چیز کلی هست مثلا کلاس Cookie که key و value میگیره و ذخیره میکنه و key میگیره و مقدار برمیگردونه
کلاس دیتابیس هم User که به تیبل user وصل هست.
حالا برای رجیستر،لاگین،چک کردن لاگین بودن کاربر میتونید کلاس مجزا درست که به کمک کلاس User و Cookie عملیات رو انجام میده
مزیت این روش در جدا بودن بخشها هست. مثلا شاید در آینده تصمیم بگیرید که بجای ذخیره فعلی اصلا از کوکی استفاده نشه و فقط از session استفاده کنید. و حتی session رو هم در دیتابیس ذخیره کنید. با جدا بودن دیگر لازم نیست کل نر افزار رو برای پیدا کردن بخشهای کوکی و توابعش شخم بزنید بلکه صرفا کلاس کوکی رو دست کاری میکنید.

plague
دوشنبه 20 دی 1395, 09:53 صبح
به نظر من بعضی توابع رو بهتره استاتیک کنی
مثلا تابع userloign الان شما به این شکل استفاده میکنی


$user = new user();
$user->userloign($username , $passwod);

شما اینجا یه شی خالی میسازی و بعد چک میکنی وجود داره یا نه
که اگه وجود نداشت یعنی یوزر و پسورد غلط بود این شی شما عملا هدر میره و بی استفاده میشه


میتونی با استاتیک کردن تابع کاری کنی که اگه وجود داشت توی دیتبایس اونوقت تازه شی ساخته بشه
هم اینکه مقدار کد نویسی برای هر لاگین رو کمتر کنی




static function userloign($user, $pass)
{
if ($rows > 0) {

$user = $result->fetch(PDO::FETCH_OBJ);
$object = new user();
$object->user = $user->user;
$object->pass = $user->pass;
$object->name = $this->pass;
$object->id = $this->id;
setcookie("login", $this->user, time() + 86400);
echo 'Your Are SUscessfully LoGined In My SIte';
return $object ;
} else {
echo 'User Or Password Incorrect';
}


}


$user = user::userlogin($user, $pass);