آنوفل دنیای برنامه نویسی
117 subscribers
255 photos
274 links
آنوفل | Anophel: دنیای بی ‌پایان امکانات برای برنامه‌ نویسان

website: https://anophel.com

پشتیبانی :
@anophel_support

#anophel #آنوفل #برنامه_نویسی
Download Telegram
تست معماری در لاراول با Pest

🔺 حفظ استانداردها در یک پایگاه کد در حال رشد که چندین توسعه دهنده در آن مشارکت دارند می تواند دشوار و خسته کننده باشد. اطمینان از اینکه پایگاه کد از بهترین شیوه ها پیروی می کند و از استانداردها منحرف نمی شود برای هر پروژه ضروری است. اما این معمولاً چیز...

🌐 : تست معماری در لاراول با Pest

#تست #تست_نویسی #لاراول #pest_laravel
چقدر درباره اهمیت Todo در تست می دانید؟

در PHPunit، معمولا وقتی todo را در برخی از کدها می نویسم، به این دلیل است که چیز مهمی در مورد کدی که به آن نزدیک هستیم می‌فهمیم، اما زمانی برای اصلاح یا تغییر آن نداریم. این واقعیت که شما عمیقاً در درک کد در آن زمان هستید بسیار ارزشمند است. احتمالاً در زمانی که کار را می نویسید، بیشترین اطلاعات را در مورد آن کد دارید.

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

یا حداقل پوسته‌های تست‌ها را با todos بنویسید. به این ترتیب، می‌دانید وقتی دوباره روی آن کار می‌کنید، چه چیزی را باید تست کنید. مهم‌تر این است که بدانید با نگاه کردن به todo ها چه چیزی تست نمی‌شود. در صورت مشاهده 20 تست واحد، ممکن است فرض کنید کل فرآیند در حال تست است. اما، هنگامی که برخی از تست‌های todo را می‌بینید، مناطق خاصی را می‌شناسید که تست نشده‌اند و مناطقی را می‌شناسید که نمی‌توانید به طور کامل به آنها وابسته باشید.

با PHPUnit می توانیم تست ها را به عنوان ناقص علامت گذاری کنیم. این بدان معنی است که مجموعه تست واحد همچنان اجرا می شود، اما ما شروع به مشاهده نشانه هایی از تست هایی خواهیم کرد که ناقص هستند. اگر تست‌های todo ما به رشد خود ادامه دهند، آن‌ها را در هر تست مشاهده خواهیم کرد.

در خروجی خود، می دانید که پوشش شما به روشی اشتباه پیش می رود. این به شما کمک می کند تا بفهمید که باید تست های بیشتری بنویسید.

در نهایت، بسته به تیم خود، ممکن است افراد خاصی داشته باشید که به انواع خاصی از todo نیاز دارند، یا ممکن است بخواهید شخص جدیدی را وارد کنید. با نوشتن تست‌های todo، می‌توانید به کسی وظایف واضحی بدهید: تست‌ها را پر کنید.


اجرای تست های Todo
برای اینکه فرآیند علامت‌گذاری یک تست آسان‌تر شود، یک متد را در کلاس تست پایه خود قرار دادم. (شما همچنین می توانید این را به عنوان یک trait بنویسید و آن را در کلاس های تست قرار دهید که دارای todo هستند، اما داشتن آن در کلاس تست پایه ساده تر است).

Anophel آنوفل

#لاراول #آنوفل #laravel #تست_نویسی #تست #php #phpunit
چگونه با خواندن کد، مهارت های توسعه لاراول خود را بهبود بخشید؟!

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

از سه روش زیر می‌توانید کد خوانی را شروع کنید:
1. از خود فریمورک لاراول
2. خواندن کد های پکیج
3.تحقیق و جست و جو در یک موضوع خاص

1.از خود فریمورک لاراول

به عنوان مثال، اگر از متدی استفاده می کنید که توسط فریمورک (یا هر پکیج دیگری) ارائه شده است، اون متد را بررسی کنید و ببینید واقعاً چه کاری انجام می دهد. با انجام این کار، باعث می شود:

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

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

دانش خود را در مورد عملکرد درونی یک ویژگی خاص بهبود بخشید.

همچنین می توانید با مطالعه آنلاین از طریق issues GitHub، درخواست‌ها، انجمن‌ها ، درک درستی از زمینه پشت کد داشته باشید.

2. یادگیری از پکیج ها
همچنین می‌توانید زمانی که با هر پکیجی که در پروژه خود کار می‌کنید، از رویکرد مشابهی استفاده کنید.

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

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

مثلا با خواندن کد های پکیج spatie/laravel-permission می توانید خیلی چیز های جدید یاد بگیرید.

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

به عنوان مثال، فرض کنید که میخواهید درباره نحوه عملکرد سیستم صف در لاراول بیشتر بدانید. بنابراین هر روز حدود نیم ساعت داکیومنت های صف ها و کد های آن را میخوانید و هر وقت به تمامی موارد داخل این داکیومنت و کد پرداختید می‌توانید سراغ بخش دیگر از لاراول بروید به عنوان مثال سیستم احراز هویت لاراول.

آنوفل | Anophel

#لاراول #کد #توسعه_مهارت #laravel #code
در فرایند تست‌نویسی در لاراول، اغلب اوقات نیاز است که بررسی کنیم آیا رکوردی از دیتابیس حذف شده است یا خیر. روش رایج استفاده از متد assertDatabaseMissing است.

روش سنتی با assertDatabaseMissing
در این روش، برای بررسی حذف شدن یک رکورد خاص از دیتابیس، از متد assertDatabaseMissing استفاده می‌کنیم.

روش بهینه با assertModelMissing
از طرف دیگر، می‌توانیم از متد assertModelMissing استفاده کنیم که به طور خاص برای بررسی مدل‌ها طراحی شده است. این متد کد را کوتاه‌تر و خواناتر می‌کند. کد نمونه داخل تصویر را مشاهده کنید.


مزایای assertModelMissing
- کد کوتاه‌تر و خواناتر.
- تمرکز بیشتر بر روی منطق مدل به جای جزییات دیتابیس.
- کمک به کلین کد و بهبود نگهداری کد.

استفاده از assertModelMissing می‌تواند به بهبود کیفیت کد و سرعت تست‌نویسی کمک کند و به ویژه در پروژه‌های بزرگ و پیچیده، مزایای خود را نشان دهد.


آنوفل| Anophel

#لاراول #کدنویسی #laravel #تست_نویسی
کش در لاراول : همه چیز درباره Laravel Caching

🔺 کش برای دستیابی به عملکرد بالا و مقیاس پذیری ضروری است. برای جلوگیری از تاخیر در APIها و کاهش زمان بارگذاری صفحه، اجرای استراتژی ذخیره سازی مناسب درست از مرحله توسعه بسیار مهم است. لاراول یکی از محبوب‌ترین فریم ورک‌های PHP است، بنابراین پیاده‌سازی اس...

🌐 : کش در لاراول : همه چیز درباره Laravel Caching

#لاراول #کش_لاراول #laravel
در لاراول بین with و load چه تفاوتی وجود دارد؟

وقتی از with استفاده می‌کنیم، Laravel تلاش می‌کند تمام اطلاعات مرتبط با رابطه را به صورت eager loading از پیش بارگذاری کند، یعنی داده‌ها با یک کوئری از دیتابیس به صورت همزمان خوانده می‌شوند. این کار معمولاً برای بهینه‌سازی عملکرد و کاهش تعداد کوئری‌ها به دیتابیس مفید است.

از طرف دیگر، load به ما اجازه می‌دهد که داده‌های یک رابطه را به صورت lazy loading، و تنها در صورتی که به آن‌ها نیاز داشته باشیم، بارگذاری کنیم. این متد به دلیل کارآمدی زمانی مناسب است که نیازمندیم که داده‌ها به صورت پویا و بسته به شرایط خاصی بارگذاری شوند.

خلاصه کلام:
متد with: برای بارگذاری eager loading که داده‌ها به صورت پیش‌فرض با یک کوئری از پایگاه داده درخواست می‌شوند.

متد load: برای بارگذاری lazy loading که داده‌ها فقط زمانی بارگذاری می‌شوند که به آن‌ها نیاز داریم و به صورت جداگانه از هر مدل فراخوانی می‌شود.

Anophel آنوفل

#لاراول #کد_نویسی #laravel #php
لاراول Macro چیست؟ آشنایی عمیق با Laravel Macro

🔺 لاراول یک فریمورک محبوب PHP است که به دلیل ظرافت و ویژگی‌های مناسب برای توسعه‌دهندگان شناخته می‌شود. یکی از این ویژگی‌ها که انعطاف‌پذیری لاراول را افزایش می‌دهد، ماکروها هستند. ماکروهای لاراول به شما این امکان را می دهند که متد های اصلی را گسترش دهید...

🌐 : لاراول Macro چیست؟ آشنایی عمیق با Laravel Macro

#لاراول #لاراول_ماکرو #laravel
در لاراول داده ها را با ()forPage به صورت Paginate در بیارید.

در لاراول، متد forPage روی Collections برای تقسیم داده‌ها به صفحات (pagination) استفاده می‌شود. این متد برای موقعیت‌هایی مناسب است که شما داده‌ها را به صورت Collection دارید و می‌خواهید آن‌ها را به صفحات کوچک‌ تر تقسیم کنید.



تفاوت forPage با Pagination

1. متد forPage
- این متد فقط روی مجموعه‌ها کار می‌کند.
- ساده و سریع برای تقسیم داده‌های موجود در حافظه به صفحات.
- مناسب برای داده‌هایی که قبلاً از دیتابیس دریافت شده‌اند و نیاز به تقسیم‌بندی دارند.

2. متد Pagination
- در Pagination استاندارد لاراول، داده‌ها مستقیماً از دیتابیس به صورت صفحه‌بندی شده دریافت می‌شوند.
- بهینه‌تر برای مجموعه‌های بزرگ داده که نیاز به صفحه‌بندی در سطح دیتابیس دارند.
- از متدهایی مانند paginate و simplePaginate روی کوئری بیلدر (Query Builder) استفاده می‌شود.

حالا کی از هرکدام استفاده کنیم؟

- متد forPage:
- زمانی که مجموعه داده‌ها کوچک است و قبلاً در حافظه وجود دارد.
- برای مواردی که داده‌ها را از منابعی غیر از دیتابیس (مثلاً فایل‌های JSON یا API‌های دیگر) دریافت کرده‌اید و نیاز به صفحه‌بندی دارند.

- متد Pagination استاندارد:
- زمانی که مجموعه داده‌ها بزرگ است و می‌خواهید مستقیماً از دیتابیس داده‌ها را به صورت صفحه‌بندی شده دریافت کنید.
- برای حفظ کارایی و جلوگیری از بارگذاری تمامی داده‌ها در حافظه.

#لاراول #laravel


Linkedin
تفاوت دیزاین پترن Observer و Event در لاراول چیست؟

در لاراول، دیزاین پترن Observer و Event برای مدیریت و پاسخ به تغییرات و وقایع استفاده می‌شوند، اما هر کدام ویژگی‌ها و کاربردهای خاص خود را دارند.

دیزاین پترن Observer
پترن Observer در لاراول برای نظارت بر تغییرات مدل‌ها استفاده می‌شود. این الگو به شما اجازه می‌دهد تا رویدادهای خاصی مانند ایجاد، به‌روزرسانی، یا حذف یک مدل را شناسایی کرده و به آنها پاسخ دهید. Observer ها به طور مستقیم با مدل‌های Eloquent ارتباط دارند و برای مدیریت رویدادهای خاص مدل‌ها بسیار مفید هستند.

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

مثال:
فرض کنید یک سیستم داریم که وقتی یک کاربر جدید ثبت‌نام می‌کند، می‌خواهیم دو کار انجام شود:
1. ارسال ایمیل خوش‌آمدگویی به کاربر.
2. ثبت یک لاگ در دیتابیس.



خلاصه کلام:
پترن Observer و رویدادها اصلاً یک کار را انجام نمی دهند.

- دیزاین پترن Observer برای نظارت بر رویدادهای خاص مدل‌ها (مانند ایجاد، به‌روزرسانی، حذف) استفاده می‌شود و به طور مستقیم با مدل‌های Eloquent در ارتباط است.

- و Event برای مدیریت رویدادهای عمومی در سراسر برنامه استفاده می‌شود و به شما اجازه می‌دهد تا رویدادهای دلخواه خود را تعریف کرده و به آنها گوش دهید.

استفاده از هر کدام بستگی به نیاز و ساختار پروژه شما دارد. اگر نیاز دارید که به تغییرات مدل‌ها به صورت مستقیم واکنش نشان دهید، Observer گزینه مناسبی است. اما اگر نیاز دارید رویدادهای عمومی‌تری را مدیریت کنید، Event ها مناسب‌تر هستند.

Anophel آنوفل

#لاراول #laravel #دیزاین_پترن
دیزاین پترن Observer در لاراول 11 | بررسی کامل با مثال

🔺 لاراول با مجموعه ای قوی از ویژگی های طراحی شده برای ساده سازی وظایف پیچیده، راه را برای توسعه وب هموار می کند. یکی از این ویژگی‌ها که اغلب نادیده گرفته می‌شود، اما فوق‌العاده قدرتمند است، کلاس Observer در لاراول است. Observer در لاراول به توسعه دهندگ...

🌐 : دیزاین پترن Observer در لاراول 11 | بررسی کامل با مثال

#لاراول #دیزاین_پترن #laravel #لاراول11 #laravel11