Golden Code
726 subscribers
53 photos
248 links
نکات laravel, php و...
Download Telegram
"در لاراول متود دیگه هم هست تحت عنوان ()inRandomOrder و خب این متود در شرایطی کاربرد داره که نیاز داشته باشیم نتایج query بصورته رندوم مرتب شه واسمون.✔️"

استفاده ازش هم کاره ساده ایه، در منبع و تصویره مربوطه به چگونگیه استفاده از این متود با سه مثال ذکر شده🪴🌴

@GoldenCodeir

https://x.com/OussamaMater/status/1761431101799600188?t=Q8xGY8UAoMhJWt5SAhbULw&s=35
👍6💯21
در لاراول متود دیگه ای هم هستش تحت عنوان ()saveMany که خب این امکان رو بهمون میده تا بتونیم چندین مدل مرتبط رو بطور همزمان ذخیره کنیم🌴🪴

@GoldenCodeir
همونطور که در مثالِ منبع مشاهده میکنین بصورت آرایه ای درخواست ارسال شده✔️👇🏾

https://x.com/OussamaMater/status/1763164790921335018?t=hlQCmCa8MDvBiAMOzzVHaQ&s=35
👍61
در لاراول میتونیم به فیلد هایی که فرمت json هستن هم کوئری بزنیم...✔️
چجوری؟

به مثال سوم در تصویرِ منبع نگاه کنین:
خواسته شده تا همه ی کاربرانی رو که در آرایه ی languages بیش از یک آیتم دارن رو بره و بیاره، با چه متودی؟ ()whereJsonLength 🟩

یا در مثال دوم:
همه ی کاربرانی که آرایه ی languages براشون دارای en و de هست رو برامون بیار،
متود: ()whereJsonContains🟩

@GoldenCodeir
(مثال بیشتر و سایر نکاتُ متود ها در منبع:👇🏾)
https://x.com/OussamaMater/status/1763557742273290670?t=5_H-7BcfmcaXXCe8R-7c_A&s=35
👍43💯3
"میتونیم resources controller هامونو با استفاده از متودی به نام ()resources گروه بندیشون کنیم(بصورت گروهی ایجاد کنیم).
طبیعتن در clean code تاثیره خودشو میزاره🌴🪴"

(در نظر داشته باشین که متود resource بصورته آرایه route رو تحویل میگیره )
@GoldenCodeir
📌به منبع و تصویرش توجه کنین تا تفاوت استفاده از این متود و عدم استفاده ازش رو بهتر حس کنین:)👇🏾
https://x.com/OussamaMater/status/1765047738423501309?s=09
4👍1🔥1
از عبارت match میتونیم برای پیاده سازیه منطق های شرطیه تمیز تر بهره ببریم.
در مثال زیر، اگه مقدار status$ با هیچکدوم از الگو هایی که داریم مطابقت نداشته باشه همون حالت دیفالت اجرا خواهد شد .
این عبارت از نسخه ۸ php در دسترسه.🪴🌴
@GoldenCodeir
(پیچیدگیه خاصی هم نداره،به منبع و مثالش توجه کنین👇🏾)
https://x.com/laravelbackpack/status/1777660236398244260?t=LpLUOgmUyjt-sY58J0d3cw&s=35
👍7🔥2
Forwarded from Pishro App
🩷 قابلیت Property Hooks در PHP 8.4


💡 این ویژگی که قراره توی PHP 8.4 بیاد به ما این امکان رو میده تا روش دسترسی به propertie ها رو ساده تر کنه!👍


بصورت کلی Property webhook به برنامه‌نویسان این امکان رو می‌ده تا رفتار پیش‌فرض دسترسی به properties و تغییر آن‌ها را با استفاده از توابع "get" و "set" تغییر دهند. این قابلیت از زبان‌هایی مانند Kotlin، C# و Swift الهام گرفته شده است.

🖱️ نحوه کارکرد Property Hooks

Property Hooks دو نوع "hook" برای دسترسی و تغییر مقدار properties فراهم می‌کند:

get:
این hook برای تعیین منطق دلخواه هنگام خواندن مقدار property استفاده می‌شود. به عنوان مثال، می‌توانید property را قبل از برگرداندن مقدار آن تغییر دهید.

set:
این hook برای تعیین منطق دلخواه هنگام تنظیم مقدار property استفاده می‌شود. به عنوان مثال، می‌توانید مقادیر را اعتبارسنجی یا تغییر دهید قبل از اینکه به property اختصاص داده شوند.
class User {
    public string $fullName {
        get => $this->first . " " . $this->last;
        set {
            [$this->first, $this->last] = explode(' ', $value, 2);
        }
    }

    public function __construct(public string $first, public string $last) {}
}

$user = new User('John', 'Doe');
echo $user->fullName; // John Doe
$user->fullName = 'Jane Smith';
echo $user->first; // Jane

👾 مزایای استفاده از Property Hooks

کاهش کدهای تکراری: نیازی به تعریف متدهای getter و setter برای هر property نیست.
انعطاف‌پذیری بیشتر: امکان تعریف منطق دلخواه برای دسترسی و تغییر properties.
کد خواناتر: خوانایی و نگهداری کدها بهتر می‌شود.

ویژگی Property Hooks قابلیت‌های متعددی برای بهبود و ساده‌سازی دسترسی به properties فراهم می‌کنند و از این جهت یک ابزار قدرتمند برای توسعه‌دهندگان PHP خواهند بود.

#php

👾 pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51🤮1
Forwarded from Pishro App
💡 اولین ورژن از نسخه php 8.4 منتشر شد و شما میتونید برای آزمایش از این نسخه استفاده کنید.
نسخه 8.4 php قراره 21 نوامبر ۲۰۲۴ بطور رسمی منتشر بشه


نسخه Alpha 1 از php 8.4 رو از اینجا میتونید ببینید و برای تست دانلود کنید


https://www.php.net/archive/2024.php#2024-07-05-1

#php

👾 @pishraopp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Forwarded from CleverDevs (Mammad)
توی این پست میخوام یه فیچر باحال لاراول به اسم macro رو معرفی کنم

ممکنه بخواید برای یکی از کلاس های خود لاراول متدی اضافه کنید طبیعتا رفتن و اضافه کردنشش به سورس کد خود لاراول کار منطقی ای نیست تو این موقعیت میتونید از macro ها استفاده کنید

در واقع کلاس های لاراول یه متد macro دارن که دوتا آرگیومنت میگیره اولی اسم متدی که میخوایم اضافه کنیم و دومی یه تابع که بدنه متد رو تشکیل میده

حالا چطور ماکرو هارو تعریف کنیم و ازشون استفاده کنیم ؟ برای اینکار میتونید ماکرو رو توی بوت AppServiceProvider تعریف کنید یا نه برای اینکه پروژتون تمیز تر باشه یه پروایدر مخصوص برای ماکرو ها بسازید

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

use Illuminate\Support\Collection;

public function boot()
{
Collection::macro('even', function () {
return $this->filter(function ($value) {
return $value % 2 === 0;
});
});
}


حالا هرجا بخوایم میتویم کلاس Collection رو use کنیم و از متد even استفاده کنیم :

php 
$numbers = collect([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);

$evenNumbers = $numbers->even();

// $evenNumbers will now contain [2, 4, 6, 8, 10]


برای درک بهتر میتونید این مقاله از دیتی رو هم بخونید

https://ditty.ir/posts/laravel-macro/J6dqn

#Laravel #php
@CleverDevs - @CleverDevsGp
🔥5👍3🤔1
در لاراول متود is برای مقایسه دو مدل استفاده میشه. این متود بررسی میکنه که آیا دو شی مدل دارای همون ID و از همون جدول در دیتابیس هستن یا نه.
یعنی با استفاده ازین متود میتونید تشخیص بدید که آیا دو مدل دقیقا یکی هستن یا خیر.

کاربردش؟
مثلا زمانی که میخوایم بررسی کنیم که آیا کاربری که وارد شده، با کاربر خاصی که دسترسی ادمین داره، یکی هست یا نه میتونیم ازین متود استفاده کنیم.
#Laravel
@GoldenCodeir
(در منبع چگونگیه استفادش ذکر شده👇🏾)
https://x.com/MilwadDev/status/1826975907027849647?t=zrwzckb_Q5-nwjYITz0doA&s=35
👍41🔥1🤔1
Forwarded from CleverDevs (Mammad)
‏Named Arguments توی php چیه و چه کاربردی داره ؟

این فیچر که توی php8 اضافه شده به ما کمک میکنه که آرگومان های تابع رو به جای ترتیب بر اساس اسم هاشون به تابع پاس بدیم

مثلا تابع زیر رو تصور کنید

function createNewUser($name , $city = "Tehran" , $age = "18", $gender = ""){

$user = new User();
$user->name = $name;
$user->city = $city;
$user->age = $age;
$user->gender = $gender;
$user->save();
}


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



createNewUser(name : "Mammad" , gender : "male");


حالا اگه اسم آرگومان هارو مشخص نمیکردیم مجبور بودیم هر چهارتا آرگومان رو پاس بدیم و خب کدوم شلوغ تر و سخت تر میشد

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

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

https://stitcher.io/blog/php-8-named-arguments

#php
@CleverDevs - @CleverDevsGp
👏122
Forwarded from CleverDevs (Mammad)
کامند های artisan توی لاراول 11

#php #laravel
@CleverDevs - @CleverDevsGp
👍85🔥2
وقتی که نیاز داریم چندین کلاس رو از یک namespace وارد کنیم، معمولاً هر کدوم رو با use جداگانه درج میکنیم. اما میشه همه‌ی این کلاس هارو توی یک خط use کنیم!

چجوری؟
use Namespace\{ClassA, ClassB, ClassC};

مزایاش چیه؟؟
تمیزتر شدن و کمتر شدنه تعداد خطوط.
#PHP
#clean_code
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/laravelbackpack/status/1856313510768324670?t=qOO4OC7jKWvPITFKNSHOtA&s=1
7👍7🏆1
وقتی از دستور "%LIKE "%fo برای جستجو استفاده می‌کنیم، درین شرایط دیتابیس باید تمام اطلاعات رو برامون بررسی کنه که خب باعث میشه سرعت پایین بیاد. راه بهتر برای جستجوی سریعتر استفاده از full-text هستش.

این روش کمک میکنه تا دیتابیس خیلی سریع‌تر و کارآمدتر فرایند جستجو رو انجام بده.
(طریقه استفادش در تصویر درج شده)
#SQL
#PHP
@GoldenCodeir
(به‌منبع و مثالش دقت کنید 👇🏾)
https://x.com/mmartin_joo/status/1902014134561947783?t=jHjPbh6DAmevpRPeQSCDWg&s=35
🔥51👏1🤔1
"چطوری تو لاراول از پس پردازشهای سنگین بر بیایم؟

وقتی حجم ترنزاکشنها بالا میره (مثلاً ۱ میلیون رکورد!)، خیلیها تصور میکنن Laravel جواب نمیده! ولی واقعیت اینه که اگر از ابزارها و تکنیکهای درست استفاده کنی، Laravel خیلی هم قدرتمنده

استفاده از Queue Jobs
ارسال عملیاتهای سنگین به صف برای پردازش در پسزمینه

بهینهسازی دیتابیس: تعریف Index مناسب

استفاده از Query Builder به جای Eloquent برای کوئریهای سنگین یا حتی اگه می تونین کوئری خام بنویسین معجزه رو می بینید

استفاده از Transaction
برای تضمین atomic بودن عملیاتهای حساس جاهایی که چند کار مرتبط با هم رو می خواین انجام بدین عالیه

استفاده از chunk
بارگذاری و پردازش دادههای بزرگ بهصورت تکهای

۵. استفاده از Redis یا Kafka

برای صفهای سریع و سبک Redis
برای پروژه های بزرگ و real-time کافکا باور کنید معجزه می کنه

بهینه سازی کد PHP و مصرف حافظه

استفاده از cursor() بهجای بارگذاری کل دیتا

جلوگیری از لوپهای سنگین و غیرضروری

نتیجه؟
اگه این موارد رو به درستی پیاده کنید، Laravel بهراحتی از پس میلیونها ترنزاکشن برمیاد بدون اینکه اپلیکیشنت کرش کنه! "

#Laravel

@GoldenCodeir
(به منبع توجه کنید👇🏾)

https://www.linkedin.com/posts/fererydoon-salemi_laravel-php-backenddevelopment-activity-7327385475915128832-DtQB?utm_source=share&utm_medium=member_android&rcm=ACoAACtoqKYB5Pk8cjIxolPHpdjShKtRL0tcolQ
👍72🔥1👏1
Forwarded from Anophel | آنوفل
در PHP 8.1 و بالاتر، می‌توان از Enum ها برای تعریف مجموعه‌ای از ثابت‌ها که با هم مرتبط هستند استفاده کرد. Enum (مخفف Enumeration)  یک نوع داده خاص است که شامل مجموعه‌ای از مقادیر ثابت و از پیش تعریف‌شده است. این مقادیر معمولاً با هم مرتبط هستند و به یک مفهوم خاص اشاره می‌کنند. به عنوان مثال، می‌توان برای وضعیت‌های مختلف یک سفارش (مانند "در انتظار"، "در حال پردازش"، "ارسال شده" و غیره) یک Enum تعریف کرد.

کی از Enum استفاده کنیم؟

تعریف مجموعه‌ای از مقادیر ثابت و مرتبط: زمانی که مجموعه‌ای از مقادیر ثابت وجود دارد که با هم مرتبط هستند و نیاز به مدیریت آنها دارید، می‌توان از Enum استفاده کرد. مانند وضعیت‌های مختلف یک سفارش، روزهای هفته، ماه‌های سال و غیره.

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

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

کاهش استفاده از "عددهای جادویی": استفاده از Enum به جای اعداد یا رشته‌های ثابت پراکنده در کد، باعث می‌شود که کد تمیزتر و قابل فهم‌تر باشد.

در اینجا یک مثال از یک Enum برای وضعیت‌های یک سفارش در یک سیستم خرید آورده شده است.

ویژگی‌های Enum در PHP:
1. تعریف به صورت Enum : Enum ها با استفاده از کلمه کلیدی enum تعریف می‌شوند.
2. مقادیر ثابت: Enum ها مجموعه‌ای از مقادیر ثابت را تعریف می‌کنند که با هم مرتبط هستند.
3. پشتیبانی از انواع داده: Enum ها می‌توانند انواع داده‌ای مختلف مثل string یا int را به عنوان مقدار خود داشته باشند.
4. قابلیت استفاده در توابع: Enum ها می‌توانند به عنوان پارامتر به توابع و متدها ارسال شوند.
5. سازگاری با Match Expression: از match expression می‌توان برای پردازش مقادیر Enum استفاده کرد.
6. تعریف متدها: می‌توان متدهایی را در داخل Enum تعریف کرد که به مقادیر آن مرتبط هستند.

من در Anophel آنوفل بیشتر به این موضوع پرداختم لینک مقاله :

لینک مقاله

#لاراول #php
👍6🔥21
🧠 جی آی تی JIT یعنی چی؟

در اصل JIT مخفف Just-In-Time compilation هست، یعنی کامپایل هم‌زمان با اجرا. این تکنیک باعث می‌شه که کدهایی که به صورت معمول تفسیر (interpret) می‌شن (مثل PHP یا JavaScript)، در زمان اجرا به کد ماشین تبدیل بشن، و این یعنی اجراشون خیلی سریع‌تر بشه.


مزایای JIT

- سرعت اجرای بهتر
- کاهش مصرف منابع در برخی سناریوها
- عملکرد نزدیک‌تر به زبان‌های کامپایل‌شده (مثل C)


🧪 کار JIT در PHP چیه؟

در PHP 8 به بعد، Zend Engine دارای یک JIT Compiler شد. قبل از اون، PHP فقط تفسیر می‌کرد.

کار JIT باعث می‌شه:
بخش‌هایی از کد که زیاد استفاده می‌شن (مثلاً حلقه‌ها یا توابع پرتکرار)، به کد ماشین واقعی تبدیل بشن.

⚙️ این باعث افزایش سرعت اجرای برنامه‌ها می‌شه، مخصوصاً در کارهای محاسباتی سنگین مثل:

- پردازش تصویر
- بازی‌سازی
- پروژه‌های علمی
- کدهایی که زیاد اجرا می‌شن مثل فریم‌ورک‌ها یا CMSها

#PHP #JIT #Milwad #Tutorial

📱 @MilwadKhosravi
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥2👍1
متود segment() در لاراول به شما این امکان رو میده که بخش‌های مختلف مسیر URL رو به راحتی استخراج و بررسی کنید. این متود برای ساخت منطق‌های داینامیک بر اساس URL بسیار کاربردیه.

📌 کاربردهای اصلی:

خواندن بخش‌های جداگانه مسیر URL

شرط گذاری و تصمیم گیری بر اساس مسیر فعلیمون

فیلتر کردن دیتاها یا تنظیم نمایش محتوا براساس URL

نحوه استفاده
$segment1 = $request->segment(1);  // بخش اول مسیر
$segment2 = $request->segment(2); // بخش دوم مسیر

شماره بخش‌ها از 1 شروع میشه.

مثال:
اگه URL برابر باشه با:
https://example.com/products/electronics/phones

$request->segment(1) مقدار "products"

$request->segment(2) مقدار "electronics"

$request->segment(3) مقدار "phones"

نکته :
اگه بخش مورد نظر در URL وجود نداشته باشه، مقدار null برمی‌گردد.
@GoldenCodeir

#Laravel
(به منبع و مثالش دقت 👇🏾)
https://x.com/MilwadDev/status/1943673513291690462?s=35
👍6🆒31🔥1
خیلی مواقع بعده گرفتنه داده از دیتابیس، نیاز داریم سریع و تمیز به اطلاعات دسترسی داشته باشیم.
تابع array_column در PHP دقیقا برای همین ساخته شده!

🔹 چی کار میکنه؟

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

حتی میتونه آرایه رو با کلید دلخواهتون reindex کنه.

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

📌 یه مثال:
$users = [
['id' => 1, 'name' => 'Ali', 'email' => '[email protected]'],
['id' => 2, 'name' => 'Sara', 'email' => '[email protected]'],
['id' => 3, 'name' => 'Reza', 'email' => '[email protected]'],
];

// Reindex بر اساس id
$indexed = array_column($users, null, 'id');

حالا $indexed[2] مستقیما اطلاعات Sara رو برمیگردونه،
بدون هیچ حلقه یا جستجوی اضافه.


کاربردهاش؟

ساخت lookup table سریع

کدنویسی تمیزتر و کوتاه‌تر

عالی برای caching و join کردن دیتاست‌ها

خلاصه که : با array_column میتونیم از یک آرایه ساده، یک ساختار قوی برای دسترسی مستقیم بسازیم.
یک ترفند کوچیک، اما تاثیره بزرگ در سرعت و خوانایی کد.
#php #اموزش_php #php_tip

@GoldenCodeir

(به منبع و مثالش توجه کنید👇🏾)
https://x.com/wendell_adriel/status/1969010695279989061?t=h88vjyQnlMap9vvVDFxhXQ&s=35
👍11
به گفته ی Taylor Otwell

نسخه‌ای جدید از لاراول منتشر شد که دو ویژگی قدرتمند و کاربردی بهش اضافه شده:

📌 شماره ۱ : Cache Failover

یکی از چالش‌های رایج در پروژه‌های بزرگ، خرابی کش (مثل Redis) است. در گذشته اگه کش از کار میفتاد، ممکن بود پروژه با خطا مواجه بشه و از کار بیفته.

حالا لاراول از cache failover پشتیبانی میکنه:
اگه کش اصلی در دسترس نباشه لاراول بصورت خودکار سراغ کش پشتیبان (مثل فایل یا دیتابیس) میره و از بروز خطا جلوگیری میکنه.


📌 شماره ۲: Deferred Queue

قابلیت دوم، نوع جدیدی از صف هست با نام deferred.
این صف‌ها به شما اجازه میدن که اجرای job هارو تا زمانی خاص به تاخیر بندازید ، نه صرفا با delay زمانی، بلکه با منطق‌ های انعطاف‌ پذیرتر.

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

#Laravel #PHP #Laravel_tip #لاراول

@GoldenCodeir 🔥

داکیومنته لاراول:
https://laravel.com/docs/12.x/cache#cache-failover
(منبع👇🏾)
https://x.com/taylorotwell/status/1980664560492376378?t=AW_V157KGhHWfyPOqCy1Lg&s=35
👍114
در نسخه‌ی جدید PHP 8.5 تابع filter_var() یه قابلیت کاربردیه تازه داره:

FILTER_THROW_ON_FAILURE

تا قبل ازین اگه اعتبارسنجی دیتا (مثلا ایمیل نامعتبر) fail میشد،
تابع فقط مقدار false برمیگردوند و باید دستی بررسیش میکردی.

اما حالا بااین گزینه، بجای برگردوندنه false، یک Exception پرتاب (throw) میشه 👇🏾

try {
$email = filter_var('not-an-email', FILTER_VALIDATE_EMAIL, FILTER_FLAG_THROW_ON_FAILURE);
}
catch (ValueError $e)
{
echo "ایمیل نامعتبر است!";
}

مزایاش؟

کد تمیزتر ، خطایابی سریع‌تر ، هماهنگی بهتر با Exception Handling در پروژه‌های مدرن PHP

#php #backend

@GoldenCodeir 🔥

(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/AshAllenDesign/status/1983537236403794361?t=IIrUtS60L_j-Rl6cHxtwlg&s=19
👍10🔥1👏1