<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد دولابی</title>
        <link>https://virgool.io/feed/@mdoulabi</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-22 12:37:18</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/2303992/avatar/IGUIG0.jpg?height=120&amp;width=120</url>
            <title>محمد دولابی</title>
            <link>https://virgool.io/@mdoulabi</link>
        </image>

                    <item>
                <title>راهی جدید برای اعتبار سنجی لیست ها در لاراول با enum rule</title>
                <link>https://virgool.io/@mdoulabi/%D8%B1%D8%A7%D9%87%DB%8C-%D8%AC%D8%AF%DB%8C%D8%AF-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1-%D8%B3%D9%86%D8%AC%DB%8C-%D9%84%DB%8C%D8%B3%D8%AA-%D9%87%D8%A7-%D8%AF%D8%B1-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-enum-rule-ghlzygvlm710</link>
                <description>سلامامروز با این مطلب مواجه شدم گفتم تو ویرگول بنویسم شاید به کار یه نفر دیگه هم امداسم این قابلیت Enum rule  هست که برام جالب بود توضیح مختصری در مورد enum هامعمولا تا الان برای تعریف کردن enum در PHP دست به دامن کلاس ها و کانستنت ها (constant) می‌شویم، اما پی اچ پی قرار هستش که از این تایپ به صورت مستقل تری در ورژن 8.1 پشتیبانی کنه.خودم زمانی که می‌خوام توی پی اچ پی enum تعریف کنم معمولا از این روش استفاده میکنم :حالا ببینید که خود پی اچ پی قراره که چطور این کار رو انجام بده‌ :این یه توضیح مختصری از enum بودحالا اگر بخوایم از این enum ها استفاده کنیم و اعتبار سنجی کنیم چی؟بیایید یه مثال بزنیم‌:فرض کنید یه مدل پست داریم که ۳ تا وضعیت داره :&lt;?php

namespace App\Enums;

enum PostStatus: string
{
    case Draft = &amp;quotdraft&amp;quot
    case InReview = &amp;quotin_review&amp;quot
    case Published = &amp;quotpublished&amp;quot یه پرانتز کوچیک باز کنم یه قابلیت جذابی که در ورژن 8.69 اضافه شده اینه که به ما اجازه میده تا بتونیم enum ها رو cast کنیمیعنی اینطوری:&lt;?php

namespace App\Models;

use App\Enums\PostStatus;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $casts = [
        &#039;status&#039; =&gt; PostStatus::class
    ];
}خب حالا رسیدیم به اصل ماجرا یعنی ولیدیشن کردن enum هااگر بخوایم بگیم که فیلد status فقط میتونه مقدار هایی که در enum ها براش تعیین کردیم رو داشته باشه با به این صورت بگیم :use App\Enums\PostStatus;
use Illuminate\Validation\Rules\Enum;

$request-&gt;validate([
  &#039;status&#039; =&gt; [new Enum(PostStatus::class)],
]);حالا اگر بگیم که این پست رو با یه مقداری که وجود نداره اپدیت کن با خطا مواجه میشیم :$post-&gt;update([&#x27;status&#x27; =&gt; &#x27;xyz&#x27;]); /* Fatal Error: &quot;xyz&quot; is not a valid backing value for enum ... */قبل از اینکه این قابلیت به لاراول اضافه بشه مجبور بودیم به صورت زیر  عمل کنیم :‌$validate = $request-&gt;validate([&#039;status&#039; =&gt; [&#039;required&#039;, Rule::in([&#039;draft&#039;,&#039;in_review&#039;,&#039;published&#039;])
]);باید بگم که این قابلیت فقط در  php +8.1 فعاله.امیدوارم مفید بوده باشه.منابع:لینک یک&amp;lt;br/&amp;gt;</description>
                <category>محمد دولابی</category>
                <author>محمد دولابی</author>
                <pubDate>Sun, 09 Apr 2023 14:23:08 +0330</pubDate>
            </item>
                    <item>
                <title>عملگر Null safe در php</title>
                <link>https://virgool.io/@mdoulabi/%D8%B9%D9%85%D9%84%DA%AF%D8%B1-null-safe-%D8%AF%D8%B1-php-xxts5eg5hsqz</link>
                <description>یکی از ویژگی های خوبی که در php ورژن 8 ارائه شده  قابلیت عملگر Null safe هست که خیلی جالبهقبلا اگر ما میخواستیم از یک ابجکت مقداری که وجود ندارد رو بگیریم با خطا مواجه میشدیم ولی با اضافه شدن این ویژگی میتونیم این خطا رو مدیریت کنیمیه مثال بزنیم $country = $customer-&gt;getAddress()-&gt;getCountry();
// Fatal error: Uncaught Error: Call to a member function getCountry() on nullدر کد بالا متد  ()Customer::getAddress میتواند نال باشد و اگر نال باشد با خطا مواجه میشیمبرای حل این مشکل php عملگر Null safe رو معرفی میکنه که به صورت زیر میتونیم ازش استفاده کنیم و از بروز خطا جلو گیری کنیم$country = $customer?-&gt;getAddress()?-&gt;getCountry();در مثال بالا وقتی متد ()Customer::getAddress نال باشد دیگر متد بعدی اجرا نمیشوداگر عملگر (?-&gt;)null-safe با مقدار null مواجه شود، بقیه عبارت را نادیده می‌گیرد و بلافاصله و بدون ایجاد خطا، null را برمی‌گردانداین بود عملگر null safe .البته نا گفته نماند که عملگر Null coalescing که در ورژن ۷ php ارائه شده بود برای ابجکت قابل استفاده نبود و فقط برای پراپرتی ها جواب میداد.$obj = new stdClass;

echo $obj-&gt;foo-&gt;bar-&gt;baz ?? 12; // 12امیدوارم مفید بوده باشه.منبع شماره یک&amp;lt;br/&amp;gt;منبع شماره دو</description>
                <category>محمد دولابی</category>
                <author>محمد دولابی</author>
                <pubDate>Sun, 19 Mar 2023 12:45:02 +0330</pubDate>
            </item>
            </channel>
</rss>