PDA

View Full Version : سوال: برای این کار چند تابع ایجاد کنم یا یک کلاس در PHP ؟؟؟



hgfhjgjh
چهارشنبه 01 خرداد 1398, 18:20 عصر
سلام دوستان
من برای یک کار خاص در سایت که بارها و بارها مورد استفاده قرار میگیره برای اینکه نیاز نباشه در همه جای سایت صدبار کد رو بنویسیم کدها رو تبدیل کردم به function و فقط در جای مورد نظر اون رو فراخوانی میکنم و مقادیر مربوطه رو بهش میدم

یک سری فیلدهای خاص دارم که هر کدوم باید چندین بررسی خاص روی مقدار اونها انجام بشه
- مثلاً فیلد نوع A باید از نظر تعداد کاراکتر حداقل و حداکثر و نوع کاراکتر ورودی بررسی بشه
- فیلد نوع B باید از نظر تعداد لغت بررسی بشه
- فیلد نوع C باید از نظر استفاده از کاراکترهای خاص مورد بررسی قرار داده بشه
- فیلد نوع D باید بررسی بشه که حداقل دو نوع از چهار گروه کاراکتر توی اون وجود داشته باشه

حالا چون در جاهای مختلفی از سایت از این فیلدها در فرمهای مختلف استفاده شده و باید با PHP مقدار وارد شده در هر کدام مورد بررسی قرار بگیره، من اومدم چهار تابع برای هر کدام تعریف کردم که مقدار هر کدام را به تابع مربوطه به خودش میدم و از نتیجه اون استفاده میکنم

(البته در آینده این چهار نوع به 8 نوع تبدیل میشه و باید چهار تابع دیگه هم کدنویسی و اضافه بشه)

آیا من باید این چهار یا در آینده هشت تابع رو به یک کلاس تبدیل کنم یا همینجوری به شکل چند تابع مجزا تعریف بشه؟

* یا حتی بهتر بپرسم سوالم رو :
چه مواقعی یک برنامه نویسی میاد و توابعش رو به یک کلاس تبدیل میکنه ؟
چه مزایایی داره استفاده از یک کلاس که مثلاً از 8 تابع تشکیل شده باشه با اینکه توابع مجزا باشند؟
آیا با توجه به اینکه هر فیلد عملیات کاملاً متفاوتی روی اون انجام میشه و تنها بخشی که بین دو تا از اونها یکسان هست بررسی حداقل و حداکثر طول کاراکترشون هست، آیا به یک کلاس تبدیل کنم بهتر هست ؟

ببخشید توضیحات طولانی شد چون واقعا نمیدونستم چطور مطرح کنم که به جواب مورد نظرم برسم
هر چقدر سرچ کردم فقط از نحوه ایجاد کلاس مطلب پیدا میشد
لطفاً من رو راهنمایی کنید

ali_sed
پنج شنبه 02 خرداد 1398, 12:21 عصر
سلام

شما می توانید در عرض چند ساعت php یاد بگیرید, به راحتی تابع بسازید, کلاس ایجاد کنید ولی برای ساخت یک برنامه کاربردی باید کدهای برنامه نویس های حرفه ای را مطالعه کنید مثلا از framework هایی مانند zend و ... استفاده کنید ببینید کلاس های form و validation را چطور ساخته و استفاده می کنند.

برای اینکه ذهنیت داشته باشید. فرض کنید میخوام یک مشتری جدید تعریف کنم. در بخش کنترلر برنامه کافیه من این دستورات را وارد کنم.

require_once("forms/customer.php");
$form = new Form_Customer();

if($_POST['submit']){
if($form->isValid($_POST)){
//save user in database
//redirect user to result page

}else{
$errors = $form->getErrors();
}
}
$this->view->form = $form;



تمامی بخش اعتبارسنجی فرم را در متد isValid از فرم مشتری درج کرده ام.

حالا یک کلاس دیگه ایجاد کردم که متدهای پرکاربرد اعتبارسنجی را داخل آن درج کرده ام. و می توانم بارها از آن استفاده کنم. کاری که شما قصد دارید انجام دهید. و به راحتی از آنها در متد isValid فرمم استفاده می کنم.

hgfhjgjh
پنج شنبه 02 خرداد 1398, 13:02 عصر
دوست عزیز ممنونم از پاسخ شما، بنده اطلاع دارم چطور باید تابع ایجاد کنم و چطور فرم را اعتبار سنجی کنم؛ سوال من این بود که الان فرم های من لاگین و ... نیست و فقط از فیلدهای ثابت تشکیل شده که توضیح دادم؛ میخواستم بدونم در کل همچنین کاری بصورت یک کلاس استانداردتر و بهتر هست و یا بصورت چند تابع مجزا

سرعت عملکرد کدومشون بالاتره ؟!
مثلاً اگر من 8 تابع مختلف داشته باشم و در زمان مورد نیاز فرضاً 4 مورد از اونها رو فراخوانی کنم بهتر هست و یا اینکه یک کلاس داشته باشم که هر 8 تابع توی اون کلاس درج شده باشند و کلاس رو فراخوانی کنم و با استفاده از کلاس بررسی های مورد نظر رو انجام بدم؟

سرعت کدوم حالت بیشتره و کدوم حالت صحیح تر هست ؟

peymang
پنج شنبه 02 خرداد 1398, 15:38 عصر
انقدر تفاوت سرعتش کم هست که میشه گفت از نظر سرعت فرقی ندارند. ولی اگه کدهات رو داخل کلاس داشته باشی می تونی از ویژگی های کلاس استفاده کنی و حداقلش اینکه دسته بندی کدهات هم بهتر میشه

ali_sed
پنج شنبه 02 خرداد 1398, 15:46 عصر
سلام

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

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

سرعتشون نسبت به نسخه php شما متفاوت است در اینترنت جستجو کنید. (اما با توجه به کندی لود فایل و دریافت اطلاعات از دیتابیس و ... بسیار ناچیز است)

امیدوارم بقیه دوستان شما را بهتر راهنمایی کنند
موفق باشید

plague
جمعه 03 خرداد 1398, 10:17 صبح
مزیت شی گرایی قابلیت ساختار بندی کد هاست به عبارت دیگه از جنبه مدیریتی و پکیج بندی و چیدمان کد ها تاثیر داره
تا وقتی یک پروژه متوسط/بزرگ انجام ندی متوجه نمشی این چقد مهمه و کارت رو ساده میکنه