سلام دوستان
درباره کدنویسی استاندارد توی لاراول یه چندتا سوال داشتم:
1-من توی کنترلر کاربرهام کدهای زیادی دارم.تقریبا حدود 250 خط کد دارم که همشون هم ضروری هستن و تا جایی که ممکن بوده ریفکتور کردن رو انجام دادم.بنظرتون این تعداد از خط کد غیر استاندارد نیست؟یا اینکه چون واقعا نیاز هستن چاره دیگه ای نیست؟
2-قراره از API دیتای زیادی دریافت کنم.تقریبا باید باهاشون حدود 4 جدول رو توی دیتابیس پر کنم که نزدیک 40 فیلد میشن.به خاطر دیتای زیادشون 4 جدول رو ایجاد کردم و با کمک روابط باهاشون کار میکنم.حالا سوال اینجاست که این دیتا رو به چه شکل ذخیره کنم که بهینه باشه؟همش رو یه جا با استفاده از یک مسیر دریافت کنم و عمل insert رو همزمان توی هر 4 یا 5 جدول انجام بدم یا اینکه دیتا رو بصورت چندین آرایه و آبجکت از مسیرهای جداگانه بگیرم و هر کدوم رو با متد مربوطه خودش ذخیره کنم؟
اصلا این کار اصولیه که این بخش رو به چندین جدول تقسیم کردم یا همه باید توی یه جدول باشن؟
3-میخوام احراز هویت کاربر با sms باشه.نیازی هست که کدهای هسته لاراول رو تغییر بدم یا همین کافیه که بعداز ارسال sms به کاربر و اعتبارسنجی اون، کاربر رو لاگین یا رجیستر کنم؟
4-از پکیج passport استفاده میکنم.استفاده از میدلور auth:api برای امنیت کافیه یا باید موارد بیشتری رو برای امنیت در نظر بگیرم؟
5-برای صفحه اصلی و خانه مجبورم دیتایی رو برگردونم که از چندین جدول باید دریافتشون کنم.مثلا واسه هر آیتم باید از 3 جدول دیتا رو بگیرم.بنظرتون این میتونه مشکل ایجاد کنه یا غیر اصولی باشه و باعث کندی بشه؟
6-در رابطه با جستجوی پیشرفته چطور؟فرضا توی سایدبارمون مثلا 8 تا فیلتر قرار دادیم و کاربر میتونه بر اساس اونا فیلتر کنه دیتا رو.آیا این درسته که یه متد قرار بدیم و 8 متغیر بسازیم و مقدار پیش فرضشون خالی باشه و اگه کاربر یکی رو درخواست کرد ما اون رو مقداردهی میکنیم و جستجو رو از دیتابیس بر اساس اون انجام میدیم.یعنی کد به این شکل میشه.البته در مراحل بعدی کد ریفکتور خواهد شد و این فقط یه مثال هستش که روال کار رو مشخص میکنه.. آیا این روش بهینه و اصولی هستش؟بهترین راه حل چیه؟
تمامی سوالات بر این فرضه که ترافیک سایت بالا هستش.
خیلی ممنون
@ali.bayat
@milad
@mhyeganeh
@Rp76
@mehdi.shahabbasian
۱. راه های زیادی برای ریفکتور کنترلر ها هست.. از کوئری آبجکت ها گرفته تا استفاده از تریت ها و Strategizing و پالیسی و غیره
اما پایه ای ترین کاری که میشه انجام داد اینه که داخل کنترلرها فقط ۷ متد restfull رو داشت (index, show, update, edit...)
اگر داخل کنترلر متدهایی داری مثل storeUserCredit -> این یعنی اینکه میتونی اون لاجیک رو در کنترلر جدایی بگذاری مثلا UserCreditController@store
۲. این مورد کاملا به وب سرویست بستگی داره. اگر داده ها یک جا میاد خوب شما هم باید همه رو یکجا بگیری و ذخیره کنی. اگر هم داده ها تیکه تیکه به سمت وب سرویست فرستاده میشه میتونی جدا جدا ذخیرشون کنی
۳. در کنار احراز هویت لاراول میتونی سبک پیام کوتاه رو هم پیاده کنی و بعد با متدهای لاراول کاربر رو لاگین کنی
۴. کاملا کافیه
۵. رابطه های مورد نظر رو eager-load کن و فقط فیلدهایی که لازم داری برگردون
۶. اگر اصلاعاتی که قراره برگردونی در جوادل مختلفند و ترافیک خیلی بالایی هم داری، استفاده از الستیک گزینه جالبیه.. البته میتونی تست کنی شاید همون جستجوی معمولی هم کارت رو راه بندازه
یه راهنمایی کلی: با پرسیدن سوالات بصورت جدا از هم، معمولا جواب های کاملتری میگیری
تشکر @ali.bayat
فقط در رابطه با مورد ششم...
این توضیحاتی که من دادم روش درستیه واسه سرچ پیشرفته?
چون مثلا فرض کنید ما ٨ معیار واسه فیلتر دیتا داریم,بعد بیام واسه هر معیار یه شرط بزارم که ایا فرستاده شده یا نه.اگه فرستاده شده بود که مقدار دهیش میکنم و کویری رو بر اساس اون دیتا انجام میدم.حالا مثلا ممکنه از چندین کویری و چندین جدول دیتا رو بگیرم...روش درستیه? بهترین روش واسه این نوع جستجوها چیه?
چندین منابع انگلیسی هم نگاه کردم اونا هم شرط ها رو به همین شکل گذاشته بودن...
به تصویر دقت کنین به همرا توضیحات
ممنون
سلام
برای مورد اول پیشنهاد می کنم از پکیج لاراول میکروسکوپ(لینک گیتهاب) استفاده کنید
که برای ریفکتور کردن کد های کنترلر خیلی کاربردی هست
کارکردش هم به این صورت هست که اول با دستورات:
composer require imanghafoori/laravel-microscope --dev
php artisan vendor:publish
با استفاده از کامپوزر پکیج رو نصب می کنید و بعد با استفاده از دستور :
php artisan check:all
لاراول میکروسکوپ شروع به اسکن کل کدهاتون می کنه و مواردی مثل اصول و دیزاین پترن های کد نویسی صحیح و مشکلات و ارور ها کد را بهتون نشون میده و پیشنهاد تصحیح میده که اگر تایید کنید خودش به صورت خودکار موارد تصحیح می کنه
برا توضیحات و مستندات بیشتر پیشنهاد میکنم صفحه گیتهاب پروژه را نگاه کنید
در کل روش جستجو روی جداول دیتا بیس همینه
اگر جدول محصولات به درستی ایندکس گذاری شده باشه نباید با در حجم بالای داده هم به مشکل خاصی برخورد کنی
حالا کار دیگه ای که میتونی انجام بدی اینه که تنها اطلاعات لازم رو از اون جدول بگیری یا اگر قرار داده های چند جدول رو بگیری، بین جداول Join بزنی و باز هم تنها فیلد های لازم رو بگیری..
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟