متد load در yii2 – آموزش فریم ورک PHP

( بخوانید ییی ) yii که مخفف yes it is میباشد، یکی از فریم ورک های متعدد زبان php است. اولین آشنایی من با فریم ورک ها از یادگیری لاراول شروع شد و به محض اتمام دوره ی یادگیری با آن خداحافاظی کردم و در اولین قدم ( بعد از یاد گرفتن مفاهیم مشترک فریم ورک ها ) در هتل درویشی مشهد با فریم ورک codeigniter شروع به کار کردم. دلیل خداحافظی کردن با لاراول به دلیل موقعیت ها و شرایط کاری بود. همانگونه که بعد از کدایگنیتر در ModiranDev مجبور به کار کردن با فریم ورک yii2 بودم و اینگونه بود که تا همین اواخر نتوانسته بودم با فریم ورک لاراول کار کنم.

فریم ورک چیست؟

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

معماری MVC چیست؟

معماری mvc الگویی که به شما کمک می کند تا قسمت های کنترلر ( controller ) و نمایشگر (view) و بالاخره منطق (model) را از یکدیگر جدا کنید. از مزایای آن می توانم به سهولت مدیریت کدها، خطایابی ها و به طور خلاصه توسعه و نگهداری کد ها اشاره کنم. حدود سه سال پیش خبرگذاری ژورنال افغانستان را با استفاده از MVC ای خودم نوشته بودم، توسعه دادم. بعد از گذشت حدود یک سال زمانی که به برنامه ی مربوطه مراجعه کردم، با وجود اینکه این سه قسمت از یکدیگر جدا بود اما باز هم فهمیدن برخی از قسمت ها برایم سخت بود، برنامه ای که خودم نوشته بودم! اینجا همان نقطه ای است که MVC و فریم ورک با استفاده از مستندات خود به کمک شما می آید.


فریم محبوب من yii می باشد چون نسبت به دیگر فریم ورک ها پایدارتر است
فریم محبوب من yii می باشد چون نسبت به دیگر فریم ورک ها پایدارتر است

مزیت فریم ورک ها؟

فریم ورک علاوه بر MVC مجموعه ای از کدهایی که ممکن است در روند توسعه ی یک برنامه به آن نیاز داشته باشید را در اختیار شما قرار می دهد، از طرفی روزانه افراد بسیاری در جهت بهینه سازی و امنیت همین کد ها تلاش می کنند. پس می توان فریم ورک ها امن تر از pure php ( برنامه ای که صرفا با php و بدون استفاده از فریم ورک نوشته باشد ) دانست.

فریم ورک باعث می شود که یک برنامه را سریع تر لانچ کنید و خیلی از قسمت های تکراری را انجام ندهید!

علاوه بر آن فریم ورک به شما این امکان را می دهد که برنامه نویس های دیگر راحت تر روی پروژه ی شما کار کنند، چرا که تمامی مستندات یک فریم ورک در سایت رسمی آن در دسترس عموم است. بعلاوه کد ها نیز از قوانین خاصی پیروی می کنند. به طور مثال می توانم به پروژه ی اخیرم که با استفاده از laravel نوشته بود اشاره کنم ( سامانه مدیریت حضور و غیاب schoex ) با وجود اینکه توسط فرد دیگری نوشته شده بود اما باز هم توانستم با کمترین مشکلات ممکن، برنامه را با توجه به معیار ها و درخواست های کارفرما ویرایش کنم.

متد Load در yii2 یا همان model->load

متد load مربوط به بخش model (منطق) بوده و وظیفه ی انتقال مقادیر درون متغیر post به مدل مربوطه می باشد. به عنوان مثال قصد داریم مقادیر آیدی و نام را که در    $_POSTذخیره است به مدل مربوطه پاس دهیم. برای اینکار اینگونه عمل می کنیم.


https://gist.github.com/2bb102b2340773be843a964b8893e35d.git


اما yii راه ساده تری را در نظر گرفته است که به صورت خودکار شرط فوق را نیز در نظر می گیرد و آن استفاده از load می باشد. برای نسبت دادن مقادیر به مدل با استفاده از load

https://gist.github.com/be5691c931776e4b5845ee7c5d6443dc.git

تک کد فوق به صورت خودکار تمامی مقادیر درون post  را به همان فیلد های در مدل ارجاع می دهد، نام این کار  massive assignments می باشد. اما نکته ای که وجود دارد ، این متد گاهی تمامی موارد خصوصیات را در مدل ذخیره نمی کند.

چرا load در yii کار نمی کند؟

برای جلوگیری از این مشکل باید قسمت Rules مدل مربوطه را چک کرد! در حقیقت مدل مربوطه قسمتی به نام Rules وجود دارد. یکی از مقادیری که rule می تواند داشته باشد مقدار safe می باشد. در حقیقت متد load تنها متغییر هایی را درون مدل می گذارد که پیش از ان قسمت safe قرار داشته باشد.


https://gist.github.com/2543ef987a860ef77caffc826ef90e69.git






مطالب مرتبط منتشر شده در وبسایت عباس شکیبا:

  1. ذخیره کردن تمام branch در فایل زیپ؛ آموزش گیت یا همان git
  2. چند نکته ی کوچک در مورد سیستم اشتراک گذاری فیس بوک
  3. معمای حل نشده! (قسمت اول: باگ! )