بایگانی نویسنده: حمید

اولین برنامه با انگولار

نوشته‌شده در توسط .

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

برای شروع کار با انگولار باید از ابزار خط فرمان انگولار استفاده کنید و برای نصب اون باید node روی سیستمتون نصب باشه. برای نصب node آخرین ورژن نود رو از لینک زیر دانلود کنید و نصب کنید : https://nodejs.org/en/download/

شما با ابزار خط فرمان انگولار میتونید برنامه های انگولار رو توی محیط خط فرمان تولید کنید و مدیریت و بیلد کنید، کد زیر رو توی cmd یا terminal یا هر چیز دیگه ای تایپ کنید تا Angular Cli نصب بشه

الان شما ابزار لازم برای شروع کار با انگولار رو دارید. برای نصب انگولار دستور زیر رو ران کنید

بعد از اتمام کار دستور انگولار برای شما نصب شده و میتونید کارتون رو انجام بدید. برای اینکه مطمئن بشید cd کنید توی دایرکتوری و دستور serve رو برای سرو شدن برنامه بزنید

الان برنامه روی آدرس  http://localhost:4200  در حال اجراست و میتونید با مرورگر بهش دسترسی پیدا کنید.

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

برای شروع میتونید از ادیتور phpstorm یا webstorm استفاده کنید که یک ابزار خیلی قوی برای کار با انگولار داره…

در روزهای بعد سعی میکنم مفاهیم پایه ای انگولار رو شروع کنم

موفق باشید 🙂

شروع کار با فریمورک انگولار

نوشته‌شده در توسط .
angular

انگولار یه فریمورک خوب جاوا اسکریپت هست که برای ساختن برنامه های تک صفحه ای سمت کاربر استفاده میشه که شما میتونید کارهای خفن رو با تعداد خط کد خیلی کم نسبت به جاوااسکریپت معمولی انجام بدید . اگه میبینید یسری سایت ها مثل یوتیوب و… دارن بدون رفرش شدن لینک های جدید رو لود میکنن و کلی کارا توی یک صفحه، احتمالا یکی از این دو تا کار رو انجام میدن : یا از یه فریم ورک SPA استفاده میکنن یا همون Single Page Application و یا خودشون کلی کد javascript زدن که این جریان رو مدیریت میکنه. البته انگولار رو توسعه دهنده های گوگل توسعه دادن و قطعا توی کارای خودشونم ازش استفاده میکنن.

 

چرا انگولار یاد بگیریم؟

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

دلیل اول این هست که فریمرک های مختلف تفاوت خیلی زیادی با همدیگه ندارن و اگه شما خیلی دو دل هستید که مثلا انگولار کار کنید یا React یا هر چیز دیگه ای، باید بگم الان نگران نیاشید، بعد از یاد گرفتن یکی از این فریمورک ها خیلی راحت میتونید از یک فریمورک سوییچ کنید روی یکی دیگه و وقت تلف کردن برای اینکه بدونید کدوم فریمورک بهتره اصلا مناسب نیست.

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

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

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

 

منابع یادگیری انگولار

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

نوشتن اولین برنامه با انگولار 

 

استاندارد PSR-1 در PHP

نوشته‌شده در توسط .
php standards

یسری نکات تو کد نویسی تو هر زبانی هستن که رعایت کردنشون میتونه شما رو خیلی حرفه ای تر نشون بده و رعایت نکردنشون زیاد جالب نیست برای یک برنامه نویس که ادعای خفن بودن میکنه 🙂

تو زبان PHP یسری استاندار تعریف شده که امروزه همه برنامه نویسای خوب PHP رعایتش میکنن، این میتونه برای همه خوب باشه… هم کسی که کد مینویسه و هم کسی که کد میخونه.

استانداردی که تو این پست میخام بصورت خلاصه در موردش حرف بزنم PSR-1 هست که اشاره میکنه استاندارد های پایه ی کد نویسی در PHP.

 

تو PHP چند روش برای باز کردن کد PHP و بستن اون وجود داره ولی این استاندارد میگه که از این روش استفاده کنید :‌ <?php ?> یا از نوع کوتاهش به این صورت :‌  <? =?>

کاراکتر انکودینگی که استفاده میشه باید UTF-8  باشه و بدون BOM .

نکته ی دیگه ای که خیلی مهمه اینه که اجرای منطق برنامه با include  و تعریف کردن تابع و… یک جا نباشن، یعنی مثلا شما اگه دارید یه فانکش تعریف میکنید بالاش مثلا echo  نکنید. این مثالی که در زیر اومده یه نمونه غلط طبق این استاندارد هست :

ولی در مثال زیر استاندار PSR-1 بخوبی رعایت شده :

namespace ها و نام کلاس ها

هر کلاس باید توی یه فایل نوشته بشه و مثلا وسط کد کلاس تعریف نکنید و یا مثلا دو تا کلاس رو توی یه فایل ننویسید. اسم کلاس ها باید بصورت  StudlyCaps باشه که مشخصه ینی چجوری…

برای ورژن ۵٫۳ به بعد از روش رسمی فضای نام ها استفاده کنید، برای مثال :‌

ولی برای ورژن های قبل که از این قابلیت پشتیبانی نمیکنن از  pseudo-namespacing استفاده کنید که یه پیشوند  Vendor_ به اسم کلاسها اضافه میشه و sub namespace ها بعد از اون نوشته میشن و در نهایت نام کلاس نوشته میشه :

ثابت ها در کلاس ها 

ثابت ها در کلاسها طبق این استاندارد باید با حروف بزرگ تعریف بشن و برای جدا کردن از underscore استفاده کنید. یچیزی مثل کد زیر :

در مورد پراپرتی ها در کلاس ها دستور خاصی گفته نشده ولی کلاس ها باید بصورت  camelCase()  تعریف بشن.

همین روزا بقیه استاندارا رم میتویسم واستون که بخونیم و رعایت کنیم. مرسی 🙂

 

آدرس لایسنس سرور phpstorm :)

نوشته‌شده در توسط .
phpstorm licence server

همون طور که از خنده ملیح عنوان نوشته مشخصه این کار کاره زشتیه ولی خب ماها که پول نداریم phpstorm بخریم میتونیم آدرس لایسنس سرور هایی که واسمون کار میکنن رو اینجا تو کامنتا بذاریم تا بقیه هم استفاده کنن…

الان این برای من در ورژن ۲۰۱۸٫۱٫۴  کار کرد : http://wolf.3dxtras.com  ولی خب هر روز یسری احتمالا بسته میشن و ما اینجا جدیدترین هارو منتشر میکنیم تا همنوع هامون(که پول ندارن) استفاده کنن، شما هم اگه مث ما هستید آدرسی که احتمالا پیدا کردید رو توی کامنت ها بفرستید.

مرسی 🙂

آدرس های جدیدی که در کامنت ها منتشر میشن رو اینجا آپدیت میکنم تا مجبور نشید اسکرول کنید تا اون پایین(آخرین آیتم در لیست رو امتحان کنید اول) :

  • http://www.activejetbrains.gq
  • http://hb5.s.osidea.cc:1017
  • http://crius.ro.lt
  • http://jbls.vvm.space
  • http://52.13.243.210:8000
  • http://34.208.127.60:8000
  • http://lanyu.snkso.com
  • http://119.23.238.53:8888
  • http://188.40.174.70:1017
  • http://aardonyx.bid

اگه هیچ کدوم از آدرس های بالا کار نکرد و کلا خسته شدید دیگه از آدرس زدن این کار رو بکنید : توی ویندوز باید یا هر سیستم عامل دیگه ای فایل hosts رو پیدا کنید و بهش بگید که درخواست چک کردن code رو به هاست لوکال شما بفرسته

ساده تر اگه بخام بگم مثلا توی ویندوز این فایل رو باز کنید C:\Windows\System32\drivers\etc\hosts رو باز کنید و خط زیر رو به آخر فایل اضافه کنید

۰٫۰٫۰٫۰ account.jetbrains.com

بعد کد زیر رو به عنوان key وارد کرده و ثبت رو بزنید :

اگر روی لینوکس کار میکنید فایل etc/hosts رو ادیت کنید و همون خط رو اضافه کنید و بقیشم که مشخصه.

دیگه ام به این سایت سر نزنید 🙂

استفاده از Selenium در پایتون

نوشته‌شده در توسط .

اصلا چرا اینجوری شد؟؟؟ چیه این زندگی؟ تموم تن من داره میلرزه… :))

من داشتم زندگیمو میکردم، وب کار میکردم و PHP و Laravel که یهویی اومدم دانشگاه و دارم درس میخونم… البته همچنان کارم میکنم که گشنه نمونم… این وسط پایتونم تا حدودی به اجبار یاد گرفتم و الان تا یه حدودی باهاش راحتم، پایتون کارای سخت رو با سینتکس ساده انجام میده و میشه گفت آدم خوبیه!

دیروز از سر کنجکاوی باید یه صفحه ای رو هی باز میکردم لاگین میشدم و یه فرمی رو پر میکردم و سابمیت میکردم و یه آیدی رو هی افزایش میدادم و توی صفحات جدید بازش میکردم. یکم که خسته شدم گفتم چرا برنامه ننویسم که این کارو بکنه. رفتم گشتم دیدم یه کتابخونه ای هست که تقریبا واسه همه زبونای اسکریپت نویسی دسکتاپ هم موجوده، اسمش سلنیومه! با این کتابخونه میتونید مرورگر های مختلف رو باز کنید به المنت هاش دسترسی داشته باشید و در کل اکثر کارایی که یه آدم پشت مرورگر میتونه انجام بده رو میتونید باهاش انجام بدید. سلنیوم برای پایتون رو میتونید اینجا ببینید : selenium-python.readthedocs.io

برای نصب میتونید از pip استفاده کنید :  pip install selenium

درایور هر مرورگر رو هم باید نصب کنید تا با این کتابخونه مچ بشه، مثلا برای کروم میتونید از اینجا اقدام کنید

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

بصورت خلاصه اگه بخوام بگم، کد بالا سایت پایتون.ارگ رو باز میکنه و توی سرچ باکسش یچیزی رو سرچ میزنه… بعضی وقتا خیلی به درد میخوره باور کنید 🙂

منابع یادگیری فریمورک لاراول

نوشته‌شده در توسط .
منابع یادگیری لاراول

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

داکیومنت های خود سایت لاراول

سایت خود لاراول بهترین جا هست که ازش یاد بگیرید. البته میتونید بعنوان مرجع داشته باشیدش و ازش استفاده کنید : https://laravel.com/docs/5.5 و میتونید هر جور که دوست دارید یه نسخه آفلاین ازش تهیه کنید و استفاده کنید ازش

ویدئو های آموزشی لاراکستس

سایت لاراکستس توسط یکی از توسعه دهنده های لاراول به نام جفری وی مدیریت میشه و کورس های آموزشیش بی نظیر هست در مقایسه با ویدئو هایی که برخی از دوستان وطنی ارائه میدن و… آدرس سایت : http://laracasts.com

سایت لاراول نیوز

اکه میخواید از روند تغییرات و اخبار لاراول با خیر باشید سایت لاراول نیوز رو دنبال کنید : https://laravel-news.com

سایت لاراول تریکس

این سایتم کلی تریک لاراولی داره و میتونه به دردتون بخوره، فقط من نمیدونم چرا ایرانیها بیشتر از همه استفاده میکنن از این سایت(الکساش روی ایران ست شده) : http://laravel-tricks.com

سابتهای ایرانی از جمله سایت git.ir هم کلی ویدئو گذاشتن که میتونید دانلودشون کنید اگه به حلال و حروم اعتقاد ندارید 🙂

و کلی منبع دیگه که میتونید با سرچ برسید بهشون

ساختن توابع Helper در لاراول

نوشته‌شده در توسط .

هلپر در لاراول به توابعی گفته میشن که همه جای پروژه بهشون دسترسی داریم بدون اینکه هر بار لودشون کنیم.

لاراول کلی هلپر خوب بصورت آماده داره که خیلی از کارهارو براتون آسون میکنه، مثل کار با آرایه ها، فایل ها، رشته ها، روت ها و یکی از پر کاربرترینشون هم همین dd  خودمون :). شما میتونید هلپر های خودتون رو بصورت دستی هم تعریف کنید و با کمپوزر بصورت خودکار لودشون کنید.

نحوه ساختن فایل Helper در لاراول

همونطور که گفتم هلپر ها تابع هستند پس باید داخل یه فایل نوشته بشن. لاراول هیچ دایرکتوری خاصی برای helper ها در نظر نگرفته و شما میتونید بصورت دلخواه براش جا در نظر بگیرید. من مثلا داخل app/Http/Helpers  رو برای این کار در نظر میگیرم و داخلش فایل main.php  رو قرار میدم.

لود خودکار فایل ها در لاراول با کمپوزر

یکی از کاربردهای باحال کمپوزر جدا از مدیریت نیازمندی ها، همین autoload هست که به شما این امکان رو میده که در ران تایم فایل های دلخواهتون رو توی کدتون لود کنید بدون اینکه اون بالا بنویسید require_once any.php . در پروژه لاراولتون یه فایل دارید به اسم composer.json ، توی این فایل یه key به اسم autoload وجود داره و داخلش میتونید مشخص کنید که چه فایل هایی به autoload اضافه بشن. یه مثال واستون میزنم که کاملا بدونید چی به چیه :

به کمپوزر گفتم که فایل main.php  رو بذار توی autoload. حالا باید به کامپوزر بگیم که فایل های autoload رو از اول بسازه، برای این کار توی روت پروژه این کامند رو اجرا کنید :

حالا main.php  و فانکشن هایی که داخلش تعریف میکنید همیشه در دسترس خواهند بود.

تعریف توابع helper در لاراول

توابع هلپر مثل بقیه توابع هستند فقط باید حواسمون باشه که تابع دیگه ای رو رونوشت نکنیم :

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

 

موفق باشید 🙂

یک ربات ساده تلگرام با لاراول

نوشته‌شده در توسط .

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

تصور غلط در مورد ربات تلگرام

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

ساخت یک ربات خام در تلگرام

عملیات ساخت ربات تلگرام خودش از طریق یه ربات انجام میشه، بات فادر اسم رباتی هست که این کار رو انجام میده و برای دیدن اون میتونید به این آیدی مراجعه کنید : @BotFather، نحوه ساخت ربات با botfather خیلی مشخصه و نیازی به توضیح نیست. بعد از ساخت ربات یه توکن به ربات تعلق میگیره و از این به بعد این توکن بعنوان شناسه ربات شما استفاده میشه. توکن شما یه چیزی شبیه  ۱۲۳۴۵۶:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 هست که توی این نوشته به اختصار از  <token>  برای نشون دادنش استفاده میکنیم.

نحوه ی اهراز هویت ربات توسط تلگرام

همه درخواست های شما به آدرس زیر ارسال خواهد شد :

که  METHOD_NAME  نام متدی هست که قراره در هر درخواست ازش استفاده کنید.

شما میتونید با هر زبان سمت سروری بک اند رباتتون رو بنویسید. برای اینکه درخواست هایی که از طریق کاربران ربات به ربات ارسال شدن رو دریافت کنید دو روش دارید:

  1. دریافت آپدیت ها با ارسال لحظه ای درخواست از طرف شما
  2. تنظیم وب هوک برای دریافت آپدیت بدون ارسال درخواست لحظه ای

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

درخواست  getUpdates ربات تلگرام

در این روش شما offset و limit رو میدید و آپدیت های مورد نظر رو دریافت میکنید. توجه کنید که offset بر اساس آیدی پیام ارسال میشه نه چیز دیگری.

تنظیم  setWebhook برای ربات تلگرام

برای این کار شما باید آدرسی که میخواید هوک روی اون fire بشه رو میفرستید و تلگرام به محض دریافت پیام جدید درخواست رو به این آدرس ارسال میکنه. برای ارسال درخواست هاتون میتونید از افزونه postman برای کروم استفاده کنید که کارتون رو راحتتر میکنه. توجه داشت باشید که برای این کار شما حتما باید گواهینامه ssl داشته باشید و آدرس بصورت https ارسال بشه.

استفاده از پکیج irazasyed/telegram-bot-sdk

اگه توی لاراول دارید کار میکنید میتونید از irazasyed/telegram-bot-sdk استفاده کنید. این پکیج کارتون رو خیلی راحتتر میکنه… بعد از نصب این پکیج میتونید برای تست اون از طریق زیر عمل کنید

ابتدا توی فایل  .env  توکنی که برای ربات دریافت کردید رو بصورت زیر وارد کنید

و توی کدتون هم یچیزی مثل این رو بنویسید

در صورتی که اطلاعات ربات رو دریافت کردید ینی ربات شما درست ایجاد شده است. تنها کاری که الان باید بکنید اینه که یه route رو از csrf protection در بیارید و اون روت رو بعنوان url برای هوکتون در نظر بگیرید و درخواست ها رو هندل بکنید.

 

دیزاین پترن singleton در PHP

نوشته‌شده در توسط .

در ادامه بحث هامون در مورد دیزاین پترن ها امروز میخوام بصورت خلاصه در مورد singleton design pattern بنویسم که فکر میکنم به درد خیلی هاتون بخوره و خیلی از پیچیدگی کد نویسی رو براتون کمتر کنه. بصورت خلاصه و مفید اگه بخوام بگم این دیزاین پترن همونطور که از اسمش پیداست از تکرار جلوگیری میکنه و جاهایی استفاده میشه که بخوایم یه کد تکراری رو فقط یکبار بنویسیم. پس سینگلتون جاهایی به کارمون میاد که ما به یه نمونه از شی بصورت گلوبال میخوایم دسترسی داشته باشیم. مثلا شما ممکنه مجبور باشید توی یک سیستم بارها به دیتابیس وصل بشید. یا ممکنه بخواید از api یه سایت دیگه هر چند بار پشت سر هم استفاده کنید یا هر چیز دیگه ای که خودتون صلاح میدونید… با مثال توضیح میدم که ایده ی این الگو چطور هست. در زیر یه پیاده سازی پایه از این الگو رو میبینیم :

همونطور که میبینید Instance  به صورت متد استاتیک تعریف شده و بصورت استاتیک بهش دسترسی پیدا میکنیم.

دیزاین پترن Simple Factory در PHP

نوشته‌شده در توسط .

سلام، بعد از یه وقفه ی نسبتا طولانی امروز دوباره تصمیم گرفتم که این وبلاگ متروکه رو آپدیت کنم و یسری پست که احساس میکنم خوبن رو اینجا بفرستم… البته پستای قبلیمو دارم میبینم اکثرا چرت و پرتن و ارزش خوندن ندارن ولی به هر حال وبلاگ خودمه و کلی پول هاست و دامین دادم و دوس دارم که بعنوان یادگاری همینجا باشن و کسی اگه اعتراض داره میتونه مراتب اعتراضش رو تحت یک کامنت برام ارسال کنه تا بررسی و پاسخ داده بشه 🙂

Design patternها یا فارسیش میشه احتمالا الگوهای طراحی نرم افزار توی همه زبان ها خیلی خیلی مهمن. معمولا وقتی کدی مینویسیم که قرار نیست در آینده گسترش داده بشه خیالمون راحته و از یجای کار شروع میکنیم و یجا تموم میکنیم و کار رو تحویل میدیم، ولی وقتی کارفرما میگه که “در آینده قراره امکانات زیادی از قبیل فلان۱ و فلان۲ و… به سیستم اضافه بشه”، اونجا باید یه فکر پایه ای تر برای سیستم داشته باشیم. طوری که اگه قرار شد یه بخش جدید رو به سیستم اضافه کنیم مجبور نباشیم تو بخشای قبلی دست اندازی کنیم یا حداقل کم مجبور باشیم(!).

فرض کنید که میخواید یه فروشگاه بنویسید که ادمین روزی چند تا محصول از نوع اسباب بازی به سیستم اضافه میکنه. ابتدایی ترین روشی که به فکر همه ما میرسه اینه که یه کلاس ایجاد کنیم تحت نام Product  و توی اون درج، اصلاح، حذف و … محصول که فعلا اسباب بازی هست رو انجام بدیم. یه چیزی شبیه این :

 

 

تا اینجا همه چی خوبه و شما در آرامش قبل از طوفان به سر میبرید! مشکل زمانی پیش میاد که مجبور بشید مثلا بجز اسباب بازی ، کتاب هم در فروشگاهتون بفروشید. اینجا دیگه روش ایجاد و اصلاح و … فرق میکنه و نمیتونید همین متد های قبل رو استفاده کنید. توی دیزاین پترن بالا شما مجبورید یه $type  زمان نمونه گیری از کلاس بگیرید و توی هر متد if و else بذارید و بگید اگه این دسته بود این کارو بکن و اگه… که قطعا روش خوبی نیست و مثلا وقتی چنتا دسته دیگه بعدها اضافه بشه کدمون خیلی داغون میشه.

نحوه ی پیاده سازی دیزاین پترن Simple Factory در PHP

سیمپل فکتوری دیزاین پترن میگه که شما این کارو بکنید :

 

اول یه کلاس factory بسازید :

 

حالا واسه ساخت اسباب بازی از روش خیلی ساده زیر استفاده کنید :  

حالا اگه یه دسته جدید مثل کتاب به محصولاتون اضافه شه خیلی راحت میتونید کلاسش رو بسازید محصولتون رو اضافه کنید :

احتمالا الان میگید که این که خیلی پیش پا افتاده بود و شاید شما خیلی کارای خفن تر هم میتونید انجام بدید ولی خب بعضی وقتا همین کارای ساده باعث منظم شدن برنامه میشن و در آینده خودتون و مخصوصا دیگران کمتر اذیت میشن. البته این دیزاین پترن همونطور که از اسمش مشخصه سیمپل بود و  در آینده در مورد پترن های دیگه هم صحبت خواهیم کرد حتما…

 

امیدوارم کمکتون کرده باشم و خوشحال میشم نظراتتون رو بشنوم 🙂