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

website: https://anophel.com

پشتیبانی :
@anophel_support

#anophel #آنوفل #برنامه_نویسی
Download Telegram
لاراول 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
در لاراول دیزاین پترن Repository برای جداسازی لایه دسترسی به داده‌ها از لایه منطقی استفاده می‌شود. این پترن به توسعه‌دهندگان اجازه می‌دهد تا با استفاده از یک واسط مشترک به داده‌های مختلف دسترسی پیدا کنند و تغییرات در لایه داده را بدون تأثیر بر لایه منطقی مدیریت کنند.


دیزاین پترن Repository در لاراول از سه بخش اصلی تشکیل شده است:

اینترفیس Repository: این اینترفیس متد هایی را تعریف می‌کند که برای تعامل با مکانیسم ذخیره‌سازی داده استفاده می‌شوند. این یک لایه آبسترک بین کد برنامه و دیتابیس فراهم می کند.

کلاس Repository: این کلاس اینترفیس Repository را پیاده‌سازی می‌کند و شامل اجرای واقعی متد های تعریف‌ شده در اینترفیس است. برای انجام عملیات CRUD (ایجاد، خواندن، به‌روزرسانی و حذف) با مکانیسم ذخیره‌سازی داده تعامل دارد.

کلاس سرویس: این کلاس از کلاس Repository برای انجام عملیات لاجیک استفاده می کند. به عنوان یک واسطه بین Controller و Repository عمل می کند و لایه ای از آبسترک را بین لایه ارائه و لایه ذخیره سازی داده ارائه می دهد.


مزایای استفاده از Repository
1. جداسازی نگرانی‌ها (Separation of Concerns): لایه منطقی از جزئیات دسترسی به داده‌ها جدا می‌شود.
2.قابلیت تست بهتر: با جدا کردن منطق تجاری از منطق دسترسی به داده‌ها، تست واحد آسان‌تر می‌شود.
3. مدیریت بهتر تغییرات: تغییرات در ساختار داده‌ها یا منبع داده به سادگی مدیریت می‌شود.

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

Anophel آنوفل

#لاراول #دیزاین_پترن #laravel #design_pattern
Forwarded from Golden Code (@lix)
در لاراول ، بسته به محیطی که برنامه داخلش اجرا میشه ممکنه نیاز بشه عملیات های مشخصی رو فعال یا غیر فعال کنیم .

مثلا کانفیگ های مربوط به دیباگ پروژه نباید در محیط production فعال باشه (مشکل امنیتی میسازه).

📌 دو متود با نام های isProduction و isLocal در اختیارمون هست که میتونیم به راحتی بررسی کنیم آیا برنامه در محیط local هست یا production تا عملیات مورد نیاز برای محیط مدنظر اجرا بشه.
#لاراول
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1815461812457935220?t=1ATZevlJa5FeR5AP6aKVRw&s=35
صف ها و جاب ها در لاراول 11: بررسی عمیق

🔺 در دنیای شلوغ توسعه وب، لاراول به عنوان یک فریمورک قدرتمند PHP است که توسعه دهندگان را قادر می سازد تا برنامه های کاربردی پیچیده را با کارایی قابل توجه ایجاد کنند. در میان بسیاری از ویژگی‌های آن، سیستم صف (Queue) لاراول به عنوان ابزاری حیاتی برای رسی...

🌐 : صف ها و جاب ها در لاراول 11: بررسی عمیق

#لاراول #laravel #آنوفل
تست نویسی در لاراول : تست روابط الکونت در لاراول

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

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

#لاراول #laravel
کامنت نویسی در PHP : بهترین نکات و ترفند ها

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

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

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

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

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

#لاراول #داکیومنت_نویسی #php #laravel
در لاراول بین 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
لاراول 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
Forwarded from Golden Code (علی 🇨🇴)
در لاراول با کمک FakerPHP میتونید اقدام به ساخت شماره کارتهای fake کنید.
این شماره‌ کارتهای fake در محیط تستی واقعا مفیدن و بهتون کمک میکنن تا پروژه‌ هاتونو به خوبی آزمایش کنید.👌🏾

حتی میتونیم مشخص کنیم که چه نوعی از شماره کارت رو برامون تولید کنه؟ مثلا Visa یا MasterCard؟ (در تصویر زیر فرایندش گفته شده)
#laravel
#لاراول
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1819092565561651269?t=H3Q4oXdHDOpKAIKBeFD2Yw&s=35
در 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 آنوفل