<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Mehrab</title>
        <link>https://virgool.io/feed/@heismehrab</link>
        <description>برنامه نویس و توسعه دهنده ی وب</description>
        <language>fa</language>
        <pubDate>2026-04-14 22:12:45</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/148463/avatar/5cVRB4.jpg?height=120&amp;width=120</url>
            <title>Mehrab</title>
            <link>https://virgool.io/@heismehrab</link>
        </image>

                    <item>
                <title>ساپورت PHP از تایپ enum در ورژن 8.1</title>
                <link>https://virgool.io/laravel-community/%D8%B3%D8%A7%D9%BE%D9%88%D8%B1%D8%AA-php-%D8%A7%D8%B2-%D8%AA%D8%A7%DB%8C%D9%BE-enum-%D8%AF%D8%B1-%D9%88%D8%B1%DA%98%D9%86-81-tl5hr8qjgciz</link>
                <description>سلام، امیدوارم که همگی در سلامت کامل باشید.موضوعی که امروز می‌خوام با شما به اشتراک بزارم برای خودم خیلی هیجان انگیز هستش (احتمالا چونهمه اش چند دقیقه هست که باهاش آشنا شدم :دی );معمولا تا الان برای تعریف کردن enum در PHP دست به دامن کلاس ها و کانستنت ها (constant) می‌شویم، اما پی اچ پی قرار هستش که از این تایپ به صورت مستقل تری در ورژن 8.1 پشتیبانی کنه.خودم زمانی که می‌خوام توی پی اچ پی enum تعریف کنم معمولا از این روش استفاده میکنم :حالا ببینید که خود پی اچ پی قراره که چطور این کار رو انجام بده‌ : ما به راحتی میتونیم از این نوع دیتا به صورت type hint در کلاس ها استفاده کنیم، مثال ::) خیلی تمیز، یه سری کار های دیگه هم درون این ساختار میشه انجام داد، برای مثال تعریف کردن متد (method) در داخلش و استفاده از آن توسط کیس های enum ، به شکل زیر‌ :بعلاوه : * میتونیم متد ها رو به صورت استاتیک هم تعریف کنیم،* تایپ enum همچنین میتونه از اینترفیس ها (interface) بهره ببره،* میتونیم نوع خروجی رو برای این تایپ اضافه کنیم، در حال حاظر فقط میتونیم از string و int استفاده کنیم.این مثال میتونه به درک بهتر موارد بالا کمک کنه:ما میتونیم مستقیما به کیس های enum مقدار بدیم و به راحتی به مقدار آن ها دسترسی داشته باشیم،به صورت زیر: پراپرتی value در واقع رزرو شده هستش و امکان دسترسی به مقادیر کیس ها رو به ما میدهبه این نوع از enum ها که مستقیما مقدار میگیرن backed enum گفته میشه،- نکته ای که باید بهش دقت کنیم: کیس های enum از لحاظ مقدار گیری باید  در شرایط مشابه هم قرار داشته باشند، ما نمیتونیم به بعضی از کیس ها مقدار بدیم و به بعضیا ندیم.علاوه بر دسترسی به مقدار enum ها، ما میتونیم از طریق مقدار ها هم به enum ها دسترسی داشته باشیم،مثال: همونطور که میبینید از طریق متد های ()from و ()tryFrom برای اینکار استفاده کنیم، تفاوت این دو متد در هندل کردن مقدار هستش، ()from در صورتی که مقدار ارسالیش موجود نباشه ارور میده، در حالی که ()tryFrom مقداره null رو برمیگردونه.و مورد آخر اینه که به کمک متد ()cases میتونیم به یک array که شامل کیس های enum هستش دسترسی داشته باشیم، مثال:* نکته ی مهمی که نیاز به دونستنش هست اینه که در حال حاظر نمیتونیم از enum هابه عنوان ایندکس در array ها استفاده کنیم، به دلیل اینکه اون ها از جنس آبجکت (object) هستن،فقط میشه به عنوان weakMap key ها مورد استفاده قرار بگیره و همچنین در SPL method هایی مثل ()splObjectStorage .امیدوارم این پست براتون مفید و به دانش شما اضافه کرده باشه.شاد و سلامت باشید.</description>
                <category>Mehrab</category>
                <author>Mehrab</author>
                <pubDate>Fri, 05 Mar 2021 01:51:13 +0330</pubDate>
            </item>
                    <item>
                <title>برسی امکان Class constructor property promotion در PHP 8.0</title>
                <link>https://virgool.io/@heismehrab/%D8%A8%D8%B1%D8%B3%DB%8C-%D8%A7%D9%85%DA%A9%D8%A7%D9%86-class-constructor-property-promotion-%D8%AF%D8%B1-php-80-riu8uiogzmfi</link>
                <description>سلام به همه، امیدوارم آخر هفته‌ی خوبی داشته باشین،این امکان جدیدی که قراره راجبش بخونیم همونطوری که از اسمش میشه حدس زد مربوط به کلاس ها و متد  کانستراکتور هستش، مخصوص مواقعی که میخوایم یه آبجکت یا نمونه از کلاسمون بسازیم و نیاز داریم که یه سری آرگومان رو به کانستراکتور پاس بدیم; تا الان برای انجام این کار با این روش پیش میرفتیم :به این صورت، ما اول یه پراپرتی داخل کلاس تعریف میکردیم و بعدش آرگومانی که به کانستراکتور پاس داده شده رو به اون پراپرتی اختصاص میدادیم، حالا تو ورژن جدید میتونیم همین کار رو به صورت خلاصه ترو جمع و جور تر انجام بدیم، به این شکل :به این صورت دیگه نیازی نیست که اول پراپرتی رو تعریف کنیم و بعد آرگومان رو بهش اختصاص بدیم،بلکه با تعین کردن سطح دسترسی (visibility) برای آرگومان ورودی در کانستراکتور، در واقع از PHP میخوایم که برای کلاسمون یه پراپرتی تعریف کنه و مقدار آرگومان رو بهش اختصاص بده.در آخر این مثال میتونه بهتون درک بهتری بده :امیدوارم که این پست براتون مفید بوده باشه، موفق و پیروز باشید.</description>
                <category>Mehrab</category>
                <author>Mehrab</author>
                <pubDate>Thu, 10 Sep 2020 21:29:21 +0430</pubDate>
            </item>
                    <item>
                <title>PHP 8.0 در Match Expression امکان جدید و جذاب</title>
                <link>https://virgool.io/@heismehrab/php-80-%D8%AF%D8%B1-match-expression-%D8%A7%D9%85%DA%A9%D8%A7%D9%86-%D8%AC%D8%AF%DB%8C%D8%AF-%D9%88-%D8%AC%D8%B0%D8%A7%D8%A8-vykhyhd3pkag</link>
                <description>خب خب  سلام .. همونطور که احتمالا باید بدونید ورژن 8 پی اچ پی قراره آذر ماه امسال ریلیز بشه;کلی فیچر و امکان جدید تو این ورژن اضافه شده که راجبش هم بحث و صحبت هایی صورت گرفته اما خب اینجا راجب این امکان من ندیدم که پست یا مقاله ای نوشته شده باشه, پس تصمیم گرفتم که اولین پست خودم رو با این داستان شروع کنم.خب این ویژگی جدیدی که میخوام راجبش صحبت کنم قراره که کاری مشابه کار ( )switch رو انجام بده, اما به روش خیلی ساده تر و مینیمال تر, به مثال ها دقت کنید.. مثال بالا در واقع روشی رو داره نشون میده که ما همیشه برای نوشتن دستور  ( )switch استفاده میکنیم و تقریبا به چشم همه آشنا میاد..حالا تو ورژن 8 میتونیم مثال بالا رو به روش زیر بنویسیم:بنظر باحال میاد نه؟ :)همونطور که دیدید سینتکس این کد در مقایسه با مثال اولی خیلی کوچیک تر و خوانا تر (به نظر من خوانا تر) شده, اما خب یه چیزی که شاید ایراد محسوب بشه (البته به نظر من نه) اینه که برای هر case دیگه نمیشه که چندین خط کد نوشت, در واقع این ویژگی اساسا برای case های یک خطی طراحی شده.امیدوارم که این پست مفید بوده باشه براتون, خیلی خوشحال و متشکر میشم اگر لطف کنین از نظرات یا نکته هایی که بنظرتون میتونه من و این پست رو تکمیل تر و بهتر کنه رو با من به اشتراک بزارین.لازم به ذکره که عکس های استفاده شده برای مثال ها از سایت ditty.ir هستش, که خیلی هم ازشون ممنونم.موفق و پیروز باشید.</description>
                <category>Mehrab</category>
                <author>Mehrab</author>
                <pubDate>Mon, 20 Jul 2020 21:36:30 +0430</pubDate>
            </item>
            </channel>
</rss>