Anophel | آنوفل
158 subscribers
284 photos
300 links
آنوفل | Anophel: دنیای بی ‌پایان امکانات برای برنامه‌ نویسان

https://anophel.com

پشتیبانی :
@anophel_support
Download Telegram
تست نویسی در لاراول : تست روابط الکونت در لاراول

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

🌐 : تست نویسی در لاراول : تست روابط الکونت در لاراول

#لاراول #laravel
1👍1
در توسعه وب با PHP، دو مفهوم "PHP workers" و "PHP memory limit" خیلی مهم هستند که باید در نظر گرفته شوند، به خصوص زمانی که در حال بهینه‌سازی عملکرد وب‌سایت یا برنامه تحت وب هستید.

PHP Workers چیست

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

به عنوان مثال، اگر تعداد PHP workers شما 10 باشد و 20 کاربر به طور همزمان به وب‌سایت شما درخواست ارسال کنند، 10 درخواست اول بلافاصله پردازش می‌شوند و 10 درخواست دیگر باید منتظر بمانند تا یکی از 10 ورکر اول کارش را تمام کند.

PHP Memory Limit

پی اچ پی مموری لیمیت به حداکثر میزان حافظه (RAM) اشاره دارد که یک اسکریپت PHP می‌تواند مصرف کند. این مقدار در فایل کانفیگ (php.ini) تنظیم می‌شود و می‌توان آن را برای هر اسکریپت نیز تنظیم کرد. این محدودیت برای جلوگیری از استفاده بیش از حد حافظه توسط اسکریپت‌ها و جلوگیری از خرابی سرور به کار می‌رود.

مثال:
memory_limit = 128M

این خط از فایل php.ini نشان می‌دهد که هر اسکریپت PHP می‌تواند حداکثر 128 مگابایت حافظه مصرف کند. اگر اسکریپت از این مقدار بیشتر بخواهد، با خطای حافظه مواجه خواهد شد.

رابطه و تعامل بین PHP Workers و PHP Memory Limit
رابطه بین این دو مفهوم زمانی مهم می‌شود که شما به میزان کلی حافظه RAM سرور خود فکر کنید. برای مثال، اگر سرور شما 1 گیگابایت RAM داشته باشد و شما 10 PHP workers داشته باشید، و هر worker بتواند تا 128 مگابایت RAM مصرف کند، ممکن است با مشکل کمبود حافظه مواجه شوید.

1. تعداد PHP workers بالا: باعث می‌شود که بتوانید درخواست‌های بیشتری را به صورت همزمان پردازش کنید، اما هر worker حافظه مخصوص به خود را مصرف می‌کند.

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

برای بهینه‌سازی سرور خود، باید بین تعداد PHP workers و میزان حافظه مجاز برای هر اسکریپت تعادل ایجاد کنید. این تعادل بستگی به میزان RAM سرور شما و نیازهای خاص برنامه‌های PHP شما دارد.

Anophel آنوفل

#php
💯1
کامنت نویسی در PHP : بهترین نکات و ترفند ها

🔺 اهمیت کد تمیز و قابل نگهداری را یکی از گام های مهم در موفقیت است. با این حال، در کنار نوشتن کد کارآمد، ترکیب کامنت های معنی‌دار که بینش‌های ارزشمند و کمک به درک و حفظ پایگاه‌های کد ارائه می‌دهند، بسیار مهم است. کامنت های کد به خوبی ساخته شده نه تنها...

🌐 : کامنت نویسی در PHP : بهترین نکات و ترفند ها

#php #لاراول #داکیومنت #laravel
👍21
آشنایی با کامنت های PHPDoc لاراول : داکیومنت نویسی به صورت حرفه ای

🔺 اگر یک توسعه دهنده لاراول هستید که به دنبال بهبود داکیومنت کد خود و بهبود فرآیند توسعه خود هستید، به جای درستی آمده اید. در این مقاله از آنوفل گام به گام، ما عمیقاً به کامنت نویسی Laravel PHPDoc (مستند سازی لاراول با PHPDoc) می پردازیم. ما همه چیز را...

🌐 : آشنایی با کامنت های PHPDoc لاراول : داکیومنت نویسی به صورت حرفه ای

#لاراول #داکیومنت_نویسی #php #laravel
👍1🎉1
استراکچر یک پروژه Next.js بزرگ
با نقشه و ابزار مناسب، فولدر های Next.js شما می تواند به یک اکوسیستم منظم و پر رونق تبدیل شود. در تصویر زیر یک ساختار فولدر بندی برای ساختاردهی پروژه‌های Next.js در مقیاس بزرگ است.


چرا ساختار پروژه Next.js شما می تواند شما را بسازد یا شکست دهد

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

هماهنگی تیم: وقتی تیم شما می تواند پروژه را با چشم بسته هدایت کند، همکاری دلپذیر تر می شود، نه یک‌ جنگ و‌ دعوا.

مقیاس پذیری: یک پروژه با ساختار خوب، به جای جهش به یک هیولای سرسخت، به طور ارگانیک، مانند یک گیاه شاد، رشد می کند.

افزایش عملکرد: ویژگی‌های بهینه‌سازی Next.js زمانی بهترین عملکرد را دارند که پروژه شما به طور منطقی سازماندهی شده باشد.

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




Anophel آنوفل


#nextjs #next #نکست
👍1👨‍💻1
7 بهترین روش ضروری React برای کد کارآمد در سال 2024

🔺 در دنیای پر سرعت توسعه وب، ReactJS به عنوان یک کتابخانه پیشرو برای ایجاد رابط های کاربری پویا و پاسخگو ظاهر شده است. جای تعجب نیست که شرکت های توسعه برنامه ReactJS تقاضای بالایی دارند. React همچنان در سال 2024 بر چشم انداز توسعه front-end تسلط دارد....

🌐 : 7 بهترین روش ضروری React برای کد کارآمد در سال 2024
👍2👨‍💻1
در لاراول بین fillable$ و guarded$ چه تفاوتی وجود دارد؟
در لاراول، ویژگی‌های fillable و guarded برای تعیین و کنترل ویژگی‌هایی از مدل که می‌توانند به‌طور جمعی در پایگاه داده ذخیره شوند، استفاده می‌شوند.



1. $fillable: این ویژگی به شما اجازه می‌دهد مشخص کنید که کدام ویژگی‌های مدل می‌توانند به صورت دسته‌ای (bulk) پر شوند. به عبارت دیگر، تنها ویژگی‌های لیست شده در $fillable می‌توانند از طریق انتساب دسته‌ای مقداردهی شوند. این روش به شما این امکان را می‌دهد تا فقط ویژگی‌های خاصی از مدل را که برای پر کردن آن‌ها مجاز هستید، مشخص کنید.

مثال :

   protected $fillable = ['name', 'email', 'password'];

در این مثال، تنها فیلدهای name، email و password می‌توانند از طریق انتساب دسته‌ای مقداردهی شوند.

2. $guarded: این ویژگی برعکس $fillable عمل می‌کند و مشخص می‌کند که کدام ویژگی‌های مدل نمی‌توانند به صورت دسته‌ای پر شوند. به عبارت دیگر، ویژگی‌های لیست شده در $guarded در برابر انتساب دسته‌ای محافظت می‌شوند و باقی ویژگی‌ها قابل انتساب هستند.


   protected $guarded = ['id'];

در این مثال، تنها ویژگی id از انتساب دسته‌ای محافظت می‌شود و بقیه ویژگی‌ها قابل پر شدن به صورت دسته‌ای هستند.

اگر شما از
protected $guarded = [];

استفاده کنید، به این معناست که هیچ فیلدی در مدل شما از انتساب دسته‌ای (mass assignment) محافظت نمی‌شود. به عبارت دیگر، تمامی ویژگی‌های مدل می‌توانند از طریق انتساب دسته‌ای پر شوند.

این روش مشابه این است که از fillable استفاده کنید و هیچ فیلدی را مشخص نکنید، اما با یک تفاوت اساسی: در این حالت هیچ فیلدی به‌طور پیش‌فرض محافظت نمی‌شود و ممکن است آسیب‌پذیری‌هایی در برابر داده‌های مخرب یا نامعتبر ایجاد شود، به خصوص اگر به‌طور اشتباه داده‌های ورودی به مدل ارسال شوند..

برای امنیت بیشتر از
protected $guarded = [];
خودداری کنید.


امنیت: از نظر امنیتی، استفاده از fillable معمولاً توصیه می‌شود زیرا به شما کنترل بیشتری بر روی ویژگی‌های قابل پر شدن می‌دهد. با این روش، شما دقیقاً مشخص می‌کنید که کدام ویژگی‌ها می‌توانند از طریق انتساب دسته‌ای مقداردهی شوند و بقیه ویژگی‌ها به طور پیش‌فرض از این کار محافظت می‌شوند.

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

به طور کلی، برای افزایش امنیت و جلوگیری از مشکلات احتمالی، استفاده از fillable معمولاً بهتر است.

ادرس وبسایت آنوفل :

Anophel آنوفل

#لاراول #laravel
👍2🔥1
5 بدترین آنتی پترن در مدیریت API

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

🌐 : 5 بدترین آنتی پترن در مدیریت API
👍2🎉1
لاراول Breeze و لاراول Jetstream هر دو پکیج های تأیید هویت (authentication) برای فریمورک Laravel هستند که به توسعه‌دهندگان کمک می‌کنند تا سیستم‌های احراز هویت را به سرعت پیاده‌سازی کنند.

لاراول Breeze

ویژگی‌ها:
سادگی و مینیمال: لاراول Breeze یک پکیج سبک و ساده است که به توسعه‌دهندگان یک پیاده‌سازی پایه‌ای از احراز هویت ارائه می‌دهد.
انتخاب بین چند استک: از قالب‌های Blade و Tailwind CSS و Inertia.js و Livewire استفاده می‌کند.
احراز هویت اولیه: شامل ویژگی‌های پایه مانند ثبت نام، ورود، فراموشی رمز عبور، و تایید ایمیل است.
آموزشی: بیشتر مناسب پروژه‌های کوچک یا برای افرادی که می‌خواهند یادگیری خود را شروع کنند و به جزئیات بیشتری نیاز ندارند.

لاراول Jetstream

ویژگی‌ها:
- پیچیدگی و امکانات بیشتر: Jetstream یک بسته قدرتمندتر و پیشرفته‌تر است که امکانات بیشتری از جمله تیم‌ها، دو مرحله‌ای کردن احراز هویت (2FA)، و مدیریت پروفایل را ارائه می‌دهد.
نتخاب بین چند استک: امکان انتخاب بین Livewire و Inertia.js برای پیاده‌سازی frontend.
- نعطاف‌پذیری بالا: مناسب پروژه‌های بزرگتر که نیاز به قابلیت‌های پیشرفته‌تر دارند.

تفاوت‌ها

- پیچیدگی و قابلیت‌ها: Breeze ساده‌تر و مناسب پروژه‌های کوچک است، در حالی که Jetstream امکانات بیشتری ارائه می‌دهد و برای پروژه‌های بزرگتر مناسب است.


ویژگی‌های اضافی: Jetstream شامل امکانات پیشرفته‌تری مانند تیم‌ها و 2FA است که Breeze ندارد.

انتخاب بین Breeze و Jetstream

- پروژه‌های کوچک یا ساده: اگر پروژه شما کوچک است و به ویژگی‌های پیشرفته نیاز ندارید، Breeze گزینه مناسبی است.
- پروژه‌های بزرگ یا پیچیده: اگر نیاز به قابلیت‌های پیشرفته‌تر دارید یا پروژه شما بزرگتر است، Jetstream انتخاب بهتری است.
- آموزش و شروع کار: برای شروع یادگیری و پروژه‌های آزمایشی، Breeze مناسب‌تر است زیرا پیچیدگی کمتری دارد.

خلاصه کلام

- Breeze: سادگی و سرعت پیاده‌سازی، مناسب پروژه‌های کوچک و یادگیری.
- Jetstream: امکانات پیشرفته‌تر، مناسب پروژه‌های بزرگ و نیازمند قابلیت‌های بیشتر.

هر کدام از این پکیج ها می‌توانند بسته به نیاز پروژه و سطح تجربه توسعه‌دهنده مفید باشند. Breeze برای شروع و پروژه‌های سبک مناسب است، در حالی که Jetstream برای پروژه‌های پیچیده‌تر و حرفه‌ای انتخاب بهتری است.

خودتون از کدام پکیج استفاده می کنید؟ و چرا؟

Anophel آنوفل


#لاراول #laravel #laravel_jetstream #laravel_breeze
👍1🎉1
Forwarded from Golden Code (علی 🇨🇴)
در لاراول با کمک FakerPHP میتونید اقدام به ساخت شماره کارتهای fake کنید.
این شماره‌ کارتهای fake در محیط تستی واقعا مفیدن و بهتون کمک میکنن تا پروژه‌ هاتونو به خوبی آزمایش کنید.👌🏾

حتی میتونیم مشخص کنیم که چه نوعی از شماره کارت رو برامون تولید کنه؟ مثلا Visa یا MasterCard؟ (در تصویر زیر فرایندش گفته شده)
#laravel
#لاراول
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1819092565561651269?t=H3Q4oXdHDOpKAIKBeFD2Yw&s=35
👍1💯1
فریمورک تست Pest در مقابل PHPUnit
Pest یک چارچوب تست عالی است که بر روی PHPUnit ساخته شده است. سینتکس زیبا دارد که تست های شما را تا حد امکان ساده می کند.

شروع کار با Pest بسیار آسان است و در صورت عادت به PHPUnit خواهیم دید که چگونه با آن تست های خواناتری بنویسیم.

در اینجا برخی از تفاوت های اصلی بین PHPUnit و Pest آورده شده است:

سینتکس:

PHPUnit: PHPUnit یک چارچوب تست بالغ و پرکاربرد برای PHP است. از یک سینتکس سنتی و پرمخاطب برای نوشتن تست ها پیروی می کند. متد های تست معمولاً با پیشوند «test» قرار می‌گیرند و از متد های ادعایی مانند assertEquals، assertTrue و assertFalse استفاده می‌کنند.

Pest: Pest یک چارچوب تست نسبتاً جدید است که هدف آن ارائه یک سینتکس ظریف تر و مختصرتر برای نوشتن تست ها است. از یک سینتکس گویاتر و طبیعی تر برای ادعاهای تست استفاده می کند و باعث می شود تست ها مانند انگلیسی ساده خوانده شوند. Pest طوری طراحی شده است که برنامه نویس پسندتر و خوانا باشد.

جامعه و پذیرش:

PHPUnit: PHPUnit برای مدت طولانی وجود داشته است و پایگاه کاربری بزرگ و مستقری دارد. این به طور گسترده در جامعه PHP پذیرفته شده است و دارای داکیومنت و پشتیبانی گسترده است.

Pest: Pest یک فریمورک جدیدتر است و به دلیل سینتکس مناسب برای توسعه‌دهندگان مورد توجه قرار گرفته است. در حالی که جامعه آن در حال رشد است، ممکن است سطح داکیومنت و منابع مشابه PHPUnit را نداشته باشد.

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


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

#لاراول #pestphp #phpunit

Anophel آنوفل
👍2
تزریق وابستگی (Dependency Injection) در تایپ اسکریپت

🔺 تزریق وابستگی (Dependency Injection) یک تکنیک قدرتمند است که کدهای ماژولار و آزادانه را با مدیریت وابستگی‌های یک برنامه کاربردی و تسهیل تزریق آن‌ها به کلاس‌ها ترویج می‌کند. در تایپ اسکریپت، پیاده سازی تزریق وابستگی گاهی اوقات می تواند دست و پا گیر و...

🌐 : تزریق وابستگی (Dependency Injection) در تایپ اسکریپت
👍2
معماری multi-tenancy (multi-tenant architecture) چیست؟
معماری Multi-tenancy (چند مستاجری) یک پترن طراحی نرم‌افزار است که در آن یک برنامه یا سرویس واحد به صورت مشترک توسط چندین کلاینت یا "مستاجر" (tenant) استفاده می‌شود. هر مستاجر به طور منطقی جدا شده و داده‌های خود را دارد، اما همه آن‌ها از یک نسخه از نرم‌افزار و زیرساخت مشترک استفاده می‌کنند. این معماری به طور گسترده در سرویس‌های ابری و نرم‌افزار به عنوان سرویس (SaaS) مورد استفاده قرار می‌گیرد.

ویژگی‌های معماری Multi-tenancy
1. اشتراک منابع: منابع مانند سرورها، دیتابیس ها و برنامه‌ها بین مستاجران به اشتراک گذاشته می‌شوند.
2. جداسازی منطقی: داده‌ها و تنظیمات هر مستاجر به صورت منطقی از دیگر مستاجران جدا هستند، به طوری که هیچ مستاجری به داده‌های دیگران دسترسی ندارد.
3. مقیاس‌پذیری: به راحتی می‌توان تعداد مستاجران را افزایش داد بدون نیاز به تغییرات بزرگ در زیرساخت.
4. مدیریت متمرکز: به‌روزرسانی‌ها، تعمیرات و نگهداری‌ها به صورت متمرکز انجام می‌شود و به همه مستاجران اعمال می‌شود.
5. کاهش هزینه‌ها: از آنجایی که منابع به اشتراک گذاشته می‌شوند، هزینه‌های نگهداری و مدیریت به طور کلی کاهش می‌یابد.

موارد استفاده از معماری Multi-tenancy
- نرم‌افزار به عنوان سرویس (SaaS): شرکت‌های ارائه‌دهنده SaaS معمولاً از این معماری استفاده می‌کنند تا یک نسخه از نرم‌افزار را به چندین مشتری ارائه دهند.
- سرویس‌های ابری: پلتفرم‌های ابری مانند AWS و Azure از این معماری استفاده می‌کنند تا منابع را بین کاربران مختلف به اشتراک بگذارند.
- برنامه‌های سازمانی: شرکت‌ها ممکن است از این معماری برای ارائه خدمات به شعب مختلف یا شرکت‌های تابعه خود استفاده کنند.

معایب معماری Multi-tenancy
- امنیت: هر چند جداسازی منطقی وجود دارد، اما به دلیل اشتراک زیرساخت، احتمال خطرات امنیتی بیشتر است.
- سفارشی‌سازی کمتر: چون همه مستاجران از یک نسخه از نرم‌افزار استفاده می‌کنند، میزان سفارشی‌سازی ممکن محدود است.

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

این معماری معمولاً در مواردی کاربرد دارد که خدمات مشابهی برای تعداد زیادی از کاربران یا سازمان‌ها ارائه می‌شود و نیاز به سفارشی‌سازی عمیق و متفاوت برای هر مشتری وجود ندارد.

Anophel مقاله های برنامه نویسی آنوفل
👍2💯1
هوک useActionState در React و Next.js
هوک useActionState برای انجام یکپارچه اکشن های سرور طراحی شده است. وقتی یک کنش سرور را به useActionState ارسال می‌کنید، شیئی حاوی خطا (یا استیت)، وضعیت isPending و خود عمل را برمی‌گرداند. این راه‌اندازی به‌ویژه برای مدیریت ارسال‌های فرم و ردیابی وضعیت بارگذاری قبل از بازگرداندن نتیجه مفید است.

این useActionState در کتابخانه‌های دیگر مانند Remix استفاده می‌شود. این هوک به شما امکان می‌دهد تا وضعیت اجرای یک اکشن (مثل ارسال فرم) را در کامپوننت‌های React مدیریت کنید. به طور خاص، useActionState به شما اجازه می‌دهد تا وضعیت درخواست (loading, success, error) را دنبال کنید و به تناسب آن‌ها رفتار مناسب را در کامپوننت پیاده‌سازی کنید.

ویژگی‌ها و مزایا
- مدیریت وضعیت درخواست: با استفاده از این هوک می‌توانید به سادگی وضعیت‌های مختلف یک درخواست را مدیریت کنید.
- تجربه کاربری بهتر: با استفاده از وضعیت‌ها (مانند isLoading) می‌توانید انیمیشن‌های لودینگ، پیام‌های خطا، یا تاییدیه‌های موفقیت را نمایش دهید.
- سازگاری با فرم‌ها و اکشن‌ها: به خصوص برای مدیریت فرم‌ها و اکشن‌هایی که نیاز به ارتباط با سرور دارند مناسب است.

بهترین زمان استفاده از هوک useActionState
- فرم‌ها و ارسال داده‌ها: زمانی که نیاز دارید وضعیت ارسال فرم را مدیریت کنید.
- درخواست‌های API: برای مدیریت وضعیت درخواست‌های API (loading, error, success).


اگر نکته یا مورد خاصی بود خوشحال میشم در بخش نظرات اشتراک بگذارید.

#نکست #ری_اکت #react #nextjs

Anophel آنوفل
👍1
مهم ترین هوک در React/Next.js در 2024 : هوک useActionState

🔺 فرم ها بخشی جدایی ناپذیر از برنامه های کاربردی وب هستند که تعامل کاربر و ارسال داده ها را تسهیل می کنند. از لحاظ تاریخی، مدیریت استیت های فرم و رسیدگی به ارسال فرم ها شامل هوک ها و استراتژی های مختلفی بود. با معرفی useActionState، چشم انداز مدیریت فر...

🌐 : مهم ترین هوک در React/Next.js در 2024 : هوک useActionState
1👍1
هنگامی که دارید کد هاتون رو کامیت می کنید هیچ وقت کد های کامنت شده رو کامیت نکنید این باعث کثیف شدن پایگاه کد هاتون می شود و همچنین این باعث میشه از اصل کنترل ورژن دورتر شوید.

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

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

پایبندی به فلسفه کد تمیز:
کد تمیز (Clean Code) به معنای کدی است که خوانا، قابل فهم و بدون شلوغی‌های اضافی باشد. وجود کدهای کامنت‌شده در مخزن شما برخلاف این فلسفه است، زیرا این کدها می‌توانند باعث ایجاد ابهام و سردرگمی شوند. مثلاً ممکن است یک توسعه‌دهنده دیگر از خودش بپرسد که آیا این کد کامنت‌شده باید به کد اصلی اضافه شود یا نه. این موضوع می‌تواند باعث کاهش بهره‌وری و ایجاد خطاهای غیرمنتظره در آینده شود.


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

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

Anophel آنوفل

#گیت #کامیت #commit
👍2
8 بهترین روش امنیتی در لاراول

🔺 بسیاری از توسعه دهندگان جدید این سوال را مطرح می کنند که آیا لاراول ایمن است یا خیر. لاراول ویژگی های امنیتی مختلفی را ارائه می دهد، اما خود چارچوب نه ذاتا امن است و نه ناامن. به اندازه اقداماتی که توسعه دهندگان اجرا می کنند، ایمن است. اجازه دهید در...

🌐 : 8 بهترین روش امنیتی در لاراول
👍1
در PHP، یک Closure یا Closure Function تابعی است که می‌تواند درون یک متغیر ذخیره شود و به عنوان آرگومان به توابع دیگر ارسال شود. Closure ها توابع ناشناس هستند این نوع توابع با استفاده از کلمه کلیدی function ایجاد می‌شوند و ممکن است به متغیرها و منابعی از حوزه‌ای که در آن تعریف شده‌اند، دسترسی داشته باشند. این ویژگی به Closure اجازه می‌دهد که به صورت دینامیک رفتار کند و با شرایط محیطی که در آن تعریف شده است، همگام باشد.

یکی از قابلیت‌های مهم Closure در PHP استفاده از کلمه کلیدی use برای دسترسی به متغیرهای خارجی است. این امکان به توابع Closure اجازه می‌دهد که به داده‌هایی که خارج از دامنه‌ی تابع تعریف شده‌اند، دسترسی داشته باشند.

در این مثال، Closure به متغیر message$ که خارج از تابع تعریف شده است، دسترسی دارد و آن را در خروجی به کار می‌برد.

تفاوت Closure با روش‌های دیگر

1. قابلیت حمل داده : برخلاف توابع معمولی که تنها درون حوزه‌ای که تعریف شده‌اند به متغیرها دسترسی دارند، Closure Function می‌تواند داده‌های محیط خود را حمل کند. این امر با استفاده از کلمه کلیدی use ممکن می‌شود.

2. استفاده در برنامه‌نویسی فانکشنال : Closureها در برنامه‌نویسی فانکشنال (Functional Programming) کاربرد زیادی دارند. به عنوان مثال، می‌توان آن‌ها را به عنوان آرگومان به توابع دیگر ارسال کرد که این ویژگی در توابع معمولی ممکن نیست.

3. انعطاف‌پذیری بیشتر : Closureها به دلیل قابلیت حمل داده و دسترسی به متغیرهای بیرونی، انعطاف‌پذیری بیشتری نسبت به توابع معمولی دارند. این امر باعث می‌شود که بتوان از آن‌ها در شرایط پیچیده‌تر استفاده کرد.

علت استفاده از Closure
استفاده از Closure در مواردی که نیاز به حمل داده‌های خارج از تابع به همراه تابع داریم بسیار مفید است. این امر به ویژه در مواردی که نیاز به ایجاد توابع callback، استفاده از توابع higher-order، یا ایجاد کدهای پویا داریم، اهمیت پیدا می‌کند.

به عنوان مثال، در هنگام کار با توابعی مثل array_map یا array_filter که نیاز به تابع callback دارند، Closureها می‌توانند برای ایجاد توابع callback پیچیده با داده‌های مرتبط استفاده شوند.

نتیجه‌گیری

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

#php #laravel #لاراول #closure_php

Anophel آنوفل
👍1