برنامه نویسی

پالایشگاه های اواخر شب شماره 1: بسته های آهنگساز

پیشنهاد ویژه

[button color="primary" size="big" link="https://nabfollower.com/buy-real-follower/" icon="" target="true" follow="false"]خرید فالوور واقعی[/button][button color="primary" size="big" link="https://nabfollower.com/buy-instagram-like/" icon="" target="true" follow="false"]خرید لایک اینستاگرام[/button][button color="primary" size="big" link="https://nabfollower.com/buy-instagram-views/" icon="" target="true" follow="false"]خرید ویو اینستاگرام[/button][button color="primary" size="big" link="https://nabfollower.com/" icon="" target="true" follow="false"]خرید فالوور اینستاگرام[/button]

این شروع کاری است که قبلاً هرگز انجام نداده ام!
من از همه شما در ابتدای اولین سری پست های وبلاگ خود استقبال می کنم: پالایشگرهای اواخر شب 🎉🥳

در این سری از x پست های وبلاگ ، من سفر عالی Refactoring را به اشتراک می گذارم (Duh …) ** sudorealm* از ابتدا. من آن را قدم به قدم جدا می کنم و آن را از زمین به بالا بهبود می یابم.

Sudorealm یک پروژه جانبی است ، بنابراین ، من به طور عمده ، من آن را در مواقعی که خورشید دیگر درخشان نیست ، کدگذاری می کنم ، و اینها همچنین زمانهایی است که من این راکتورها را می نویسم.

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

شوخی های کنار ، هدف واقعی در اینجا ساخت یک پایگاه کد پایدار و ضد آینده است که دیگران می توانند در حفظ و کمک به آنها کمک کنند. خلاصه … من sudorealm با منبع باز هستم! آنجا ، من آن را گفتم! بالاخره من هیولا خود را بر جهان رها می کنم! البته بعد از اصلاح نهایی. ❤ امیدوارم ، هر دو در این روند چیزی یاد بگیریم!

زنده است! گیف

آماده! مجموعه برو 💥

خوب ، اولین چیزی که من برای اصلاح مجدد نیاز دارم ، پایه و اساس نحوه نوشتن کد است … Dunduuun!

من باید اطمینان حاصل کنم که sudorealm روی یک کد کد تمیز ، سازگار و قابل نگهداری قرار دارد. این به معنای اتخاذ ابزارهای مناسب برای بهبود کیفیت کد ، اجرای استانداردها و گرفتن مسائل بالقوه قبل از تبدیل شدن به کابوس در خیابان Realm است.

اینجاست که پینت ، رکتور ، لارستان و آفت بازی می کنند.

  • 🖌 پیت کردن سبک کد من را تمیز و سازگار نگه می دارد ، بنابراین من وقت خود را به صورت دستی هدر نمی دهم.
  • 🛠 رئیس به اتوماسیون کدها و بازپرداخت ها کمک می کند و زندگی من را با تکامل پروژه آسان تر می کند.
  • 🔍 لارستان به عنوان سرپرست سخت و بررسی من عمل می کند ، و اشکالات ظریف را که در غیر این صورت از دست می دهم ، جلب می کند.
  • 🧪 آفت آزمایش های مدرن ، بیانی و دوستانه لاراول را به همراه خواهد داشت تا همه چیز را که انتظار می رفت ، اطمینان حاصل کند.

با تنظیم این ابزارها از ابتدا ، من یک پایه محکم برای توسعه آینده قرار می دهم – زیرا یک اصلاح کننده خوب فقط مربوط به تغییر کد نیست ، بلکه مربوط به نوشتن کد بهتر است.

حال ، بیایید دستانمان را کثیف کنیم و شروع به تغییر سودوریال کنیم!

ارتقاء لاراول

قبل از غواصی پیشانی در بازپرداخت ، اولین قدم ارتقاء سودورالیم به آخرین نسخه Laravel 11 در آن زمان بود. چرا؟ از آنجا که یک اصلاح کننده مناسب فقط مربوط به تمیز کردن کد نیست ، بلکه در مورد ادامه کار است. ماندن در آخرین نسخه تضمین می کند:

  1. امنیت 🔒 – نرم افزار منسوخ یک زمین بازی هکر است. به روز نگه داشتن لاراول به معنای لکه دار کردن آسیب پذیری ها قبل از تهدید واقعی است.
  2. ویژگی های جدید ✨ – اکوسیستم به جلو حرکت می کند ، و همچنین بهترین بسته ها را انجام دهید. چسبیدن به یک نسخه قدیمی به معنای از دست دادن ویژگی ها و پیشرفت های جدید قدرتمند است.

یک پایگاه کد غفلت مانند یک خانه متروکه است ، یک شبه از هم پاشیده نمی شود ، اما یک روز ، از خواب بیدار می شوید تا آن را غیرمجاز پیدا کنید.
~ تانوس استنتزوریس

خوب ، حالا ، بیایید کار کنیم! 💻🔥

چگونه رفت

به آسانی که فکر می کردم آسان نبود ، مجبور شدم در اینجا و آنجا با برخی از تغییرات شکستگی روبرو شوم اما خوشبختانه لاراول یک راهنمای ارتقاء بسیار مرتب و مرتب برای پیگیری دارد.
سردرد اصلی ، همگام سازی بین بسته های از قبل نصب شده بود. من نیاز به یافتن و به روزرسانی آخرین نسخه های بسته هایی که استفاده می کنم. Chatgpt واقعاً در این روند کمک کرد. بعضی اوقات ، خطاهای آهنگساز می توانند کمی ترسناک باشند ، اما چتپپ بی ترس مراحلی را که باید به وضوح انجام دهید توضیح می دهد.

عجیب ، هرچند ، بعد از اینکه با موفقیت دویدم composer update, من نمی توانم اشکالی در برنامه پیدا کنم. اوه خوب به مورد بعدی!

نگه داشتن کد با پینت

بزرگترین چالش من در حالی که کدگذاری SudoreAlm ، مقابله با ناسازگاری های کد بین ویژگی ها بود ، ناشی از استراحت های طولانی که من بین جلسات توسعه گرفتم. من می دانم که شما می توانید با این موضوع ارتباط برقرار کنید! اینجاست لاراول/پین 🍺 به بازی می آید.

پینت چیست؟

PINT یک اصلاح کننده سبک کد PHP برای برنامه های Laravel است که در بالای PHP-CS-Fixer ساخته شده اما با استانداردهای جامعه Laravel ساخته شده است.
این به طور خودکار کد PHP شما را بر اساس سبک برنامه نویسی پیش فرض لاراول فرم می کند. این به اجرای کمک می کند تمیزبا قابل خواندنوت قابل حفظ کد بدون نیاز به رفع دستی مشکلات سبک.

نصب

composer require laravel/pint --dev
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

شما می توانید کل مستندات را ببینید ، اما من می خواهم به شما ارائه دهم که چگونه می خواهم از آن استفاده کنم:

بازرسی کد

./vendor/bin/pint --test
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

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

./vendor/bin/pint --test app/Http/Controllers
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

راه اندازی

من از یک تنظیم دقیق برای پروژه خود استفاده می کنم. به طور کلی ، من می خواهم مهارت های برنامه نویسی خود را به سطح پایین تری برسانم Go, C, Rust، با گذشت زمان ، بنابراین من معتقدم خوب است که با کدگذاری PHP من سختگیر باشید.

{
    "preset": "laravel",
    "rules": {
        "array_push": true,
        "backtick_to_shell_exec": true,
        "date_time_immutable": true,
        "declare_strict_types": true,
        "lowercase_keywords": true,
        "lowercase_static_reference": true,
        "final_public_method_for_abstract_class": true,
        "fully_qualified_strict_types": true,
        "global_namespace_import": {
            "import_classes": true,
            "import_constants": true,
            "import_functions": true
        },
        "mb_str_functions": true,
        "modernize_types_casting": true,
        "new_with_parentheses": false,
        "no_superfluous_elseif": true,
        "no_useless_else": true,
        "no_multiple_statements_per_line": true,
        "ordered_class_elements": {
            "order": [
                "use_trait",
                "case",
                "constant",
                "constant_public",
                "constant_protected",
                "constant_private",
                "property_public",
                "property_protected",
                "property_private",
                "construct",
                "destruct",
                "magic",
                "phpunit",
                "method_abstract",
                "method_public_static",
                "method_public",
                "method_protected_static",
                "method_protected",
                "method_private_static",
                "method_private"
            ],
            "sort_algorithm": "none"
        },
        "ordered_interfaces": true,
        "ordered_traits": true,
        "protected_to_private": true,
        "self_accessor": true,
        "self_static_accessor": true,
        "strict_comparison": true,
        "visibility_required": true
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

حال نگاه کنید … این ممکن است در آینده مرا نیش بزند … اما بیایید نگران آینده باشیم که سرانجام فرا رسید. از پیش تنظیمات دقیق Pint را بررسی کنید و اگر می خواهید یاد بگیرید که هر قانون چه کاری انجام می دهد. خوب ، من به شما نمی گویم … برو اینجا را پیدا کنید

کد یک ظاهر طراحی شده

من این قلاب قبل از Commit GitHub را اضافه می کنم تا Pint بتواند پرونده هایی را که من بالا می برد بازرسی و تغییر دهد.

 #!/bin/sh

 # Run Laravel Pint
 # This script will run Laravel Pint on newly staged PHP Files. 

 files=$(git diff --cached --name-only --diff-filter=AMCR | grep "\.php$")
 if echo "$files" | grep --quiet "\.php$"; then
     echo "Running Laravel Pint..."
     ./vendor/bin/pint --dirty
 fi
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

با این قلاب پیت کردن فقط پرونده هایی که قرار است مرتکب شوند. بنابراین روند فشار به این شکل خواهد بود.

 - git add . # stage all the files that you changed
 - git commit -m 'feature: best feature ever bro!' # commit the files
 # if pint fixes files. 
 - git commit --amend --no-edit # commit pint changes to previous commit
 - git push # push to prod and break it
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

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

  • پیکربندی صفر مورد نیاز است – با راهنمای سبک لاراول از جعبه خارج می شود.
  • اتهام اتوماسیون– دیگر تورفتگی ، فضاها یا تراز را به صورت دستی برطرف نمی کند.
  • همکاری بهتر – قالب بندی مداوم را در بین همه اعضای تیم تضمین می کند.
  • وابسته به ادغام – با قلاب های Git و خطوط لوله CI/CD خوب کار می کند.

خداحافظ وقت در قالب بندی دستی.

ارتقاء خودکار کد با رکتور

یکی از بزرگترین درد و رنج در حفظ سودورالیم یا هر پروژه ، صادقانه است ، به روز نگه داشتن پایه کد ، به ویژه هنگام به روزرسانی نسخه ها یا اتخاذ بهترین شیوه های جدید است. اینجاست رئیس بازی می شود

رکتور چیست؟

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

نصب

composer require rector/rector --dev
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

راه اندازی

به دنبال اسناد رکتور ، من ایجاد کردم rector.php در فهرست اصلی من و من قوانین زیر را درج کردم:



declare(strict_types=1);

use Rector\Config\RectorConfig;

return RectorConfig::configure()
    ->withPaths([
        __DIR__.'/app',
        __DIR__.'/bootstrap/app.php',
        __DIR__.'/database',
        __DIR__.'/public',
    ])
    ->withPreparedSets(
        deadCode: true,
        codeQuality: true,
        typeDeclarations: true,
        privatization: true,
        earlyReturn: true,
        strictBooleans: true,
    )
    ->withPhpSets();

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تجزیه آن:

  • withPaths([...]): به رکتور می گوید کدام بخش از پروژه را برای اسکن و بازپرداخت. در این مورد:
  • برنامه/ دایرکتوری (منطق برنامه اصلی)
  • پرونده bootstrap/app.php (تنظیم برنامه)
  • پایگاه داده/ دایرکتوری (مهاجرت ، بذر ، کارخانه ها)
  • عمومی/ دایرکتوری (نقطه ورود ، دارایی ها و غیره)
  • withPreparedSets([...]): مجموعه های قانون از پیش تعریف شده را فعال می کند که به پاکسازی و بهبود پایگاه کد کمک می کند:
  • رمز مرده – متغیرها ، روشها و کلاسهای بلااستفاده را حذف می کند.
  • کیفیت کد – بهترین روشهای کلی را برای کد پاک تر و قابل حفظ تر اعمال می کند.
  • اعلامیه ها – تضمین می کند که نکات نوع (int ، رشته و غیره) به درستی اعمال می شود.
  • خصوصی سازی – خصوصیات و روشهای کلاس را در صورت امکان به خصوصی تبدیل می کند.
  • بازگشت زودهنگام – در صورتی که شرایط برای کاهش لانه سازی و بهبود خوانایی باشد ، بازنویسی کنید.
  • بول های سخت – نیروها به جای مقایسه های سست ، بررسی های صریح/نادرست را انجام می دهند.
  • withPhpSets(): به روزرسانی های خاص نسخه PHP را برای مدرن نگه داشتن کد اعمال می کند.

دویدم ./vendor/bin/rector و من مانند:

1) app/Listeners/User/AwardBadgeAfterUserVerified.php:34

    ---------- begin diff ----------
@@ @@
             $this->badgeAwardService->awardBadgesToUser($user, BadgeTypeEnum::USER);
         } else {
             Log::warning('Verified event user is not an instance of App\Models\User', [
-                'user_type' => get_class($user),
+                'user_type' => $user::class,
             ]);
         }
     }
    ----------- end diff -----------
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

چقدر خونسرد است؟ اکنون می دانم که می توانم کلاس را از یک مدل مدل فقط با انجام کار بگیرم $modelVar::classبشر
منظورم این است که من ، مهربان ، قبلاً این را می دانستم ، اما اگر این کار را نکردم ، اکنون انجام می دهم … شما آن را دریافت می کنید …

من همچنین می توانم این کار را انجام دهم:

./vendor/bin/rector --dry-run
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

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

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

ویدیوی جالب از Nuno Maduro About Rector: چرا امروز باید استفاده از Rector PHP را شروع کنید

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

  • ارتقاء لاراول بی دردسر -رکتور قوانین خاص لاراول را برای کمک به مهاجرت بین نسخه های چارچوب با حداقل کار دستی فراهم می کند.
  • اصلاح مجدد – این بهترین شیوه ها و سبک های رمزگذاری مدرن را بطور خودکار اعمال می کند.
  • صرفه جویی در وقت – نیازی به ردیابی دستی و به روزرسانی کد مستهلک نیست.
  • بسیار قابل تنظیم – شما می توانید مجموعه ای از قوانین اصلاح مجدد خود را برای مطابقت با نیازهای پروژه خود تعریف کنید.

بنابراین اکنون نه تنها قالب بندی جالب دارم ، بلکه یک دوست رمزگذار نیز دارم که کد احمقانه خود را بدون مغز اصلاح می کند و آن را با آخرین استانداردها به روز نگه می دارد! بله لطفا! چه چیزی بعدی؟

اطمینان حاصل کنید که همه اینها با لارستان کار می کند

اتوماسیون مجدد با رکتور تضمین می کند که کد من مدرن است و از بهترین شیوه ها پیروی می کند ، اما این بدان معنی نیست که بدون خطا است. حتی تغییرات کوچک می تواند عدم تطابق نوع ، خصوصیات نامشخص یا روش های نادرست را معرفی کند-مواردی که ممکن است بلافاصله برنامه را بشکنند اما بعداً می توانند باعث خرابی سخت شوند.

نصب

composer require --dev "larastan/larastan:^3.0"
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

راه اندازی

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

مال من به این شکل است:

includes:
    - vendor/larastan/larastan/extension.neon
    - vendor/nesbot/carbon/extension.neon

parameters:

    paths:
        - app/

    # The level 9 is the highest level
    level: 2
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

من با level: 2 از آنجا که من می خواهم تا 9 سال کار کنم. و من کاملاً مطمئن هستم که 9 مورد بیش از حد است. 🤓

./vendor/bin/phpstan analyse #--memory-limit=2G
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

حتی با level:2 من 70 خطا کردم …

تصویر من در sudorealm.com ذخیره شده است

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

  • با کد موجود کار می کند – نیازی به بازنویسی همه چیز نیست. فقط شروع به تجزیه و تحلیل و بهبود گام به گام کنید.
  • خطاهای منطقی را تشخیص می دهد – ویژگی های نامشخص ، تماس های روش نادرست ، انواع بازگشت اشتباه و غیره را پیدا می کند.
  • جادوی لاراول را درک می کند – از روش های لاراول ، نمای ، وضوح ظرف و غیره می داند.
  • می تواند قوانین سفارشی ایجاد کند – هنگامی که من با نیاز به اجرای یک قانون خاص در پایگاه کد خود روبرو هستم ، می توانم یک قانون سفارشی ایجاد کنم که آن را بررسی کند.

همچنین می توانید برای کسب اطلاعات بیشتر در مورد لارستان ، README را دنبال کنید.

رکتور و لارستان – BFFS.

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

از تجزیه و تحلیل استاتیک تا آزمایش دنیای واقعی

در حالی که لارستان قبل از زمان اجرا به من کمک می کند تا مشکلات احتمالی را به طور قابل توجهی بدست آورم ، اما ثابت نمی کند که برنامه من در واقع همانطور که می خواهم کار می کند. منظورم این است که نگاه کن! این ممکن است کار کند و کاملاً خوب باشد ، بدون اشکالات ، خطاهای سرور و همه … اما ، این احتمال وجود دارد که منطق کسب و کار من ممکن است از این تغییرات خودکار جدا شود! هیچ برنامه ای قادر نخواهد بود دقیقاً منطق کسب و کار من را درک کند ، حتی اگر این ساده ترین برنامه باشد.

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

به همین دلیل مرحله بعدی در گردش کار من است آفت– یک چارچوب تست مدرن و زیبا برای لاراول ساخته شده توسط افسانه ، نونو مادورو. بیایید در مورد اینکه چگونه آزمایش تضمین می کند برنامه من فقط در تئوری “درست” نباشد ، صحبت کنیم ، اما در واقع همانطور که انتظار می رفت کار می کند.

آفت

من این کار را برای پایان ترک کردم زیرا به نظر من ، این مهمترین افزودنی به صفحه ابزار است.

نصب

composer remove phpunit/phpunit
composer require pestphp/pest --dev --with-all-dependencies

./vendor/bin/pest --init
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در آخر ، می توانید با اجرای دستور PEST تست های خود را اجرا کنید.

./vendor/bin/pest
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

همچنین راهی برای مهاجرت تمام آزمایشات خود از phpunit به آفت وجود دارد. اما من تست های صفر دارم … بنابراین …

چرا آفت را از روی phpunit انتخاب کنید

در مرحله اول ، بیایید به فیل موجود در اتاق بپردازیم ، آفات Phpunit است. این یک جایگزینی نیست بلکه یک بسته بندی است که تجربه توسعه دهنده را تقویت می کند. پرسیدن “چرا آفت بیش از phpunit؟” شبیه به پرسیدن “چرا لاراول بیش از وانیل PHP؟” است ، هر دو روشی نرم و ظریف تر برای دستیابی به همان نتایج ارائه می دهند.

PEST برای سادگی و سهولت در استفاده از زمین طراحی شده است و روشی مدرن ، بیانگر و سرگرم کننده برای نوشتن تست در PHP ارائه می دهد. این درهم و برهمی نحو سنتی phpunit را از بین می برد و باعث می شود آزمایشات طبیعی تر و خواندنی تر شود.

نحو پاک کننده ، بیان بیشتر
آفت کلام phpunit را ساده می کند و دیگ بخار را کاهش می دهد. به جای نوشتن:

//this function
public function test_example()
{
    $this->assertTrue(true);
}

//can be written like this in Pest
test('example')->assertTrue(true);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این دنیای خیلی واقعی نیست. اما این فقط نمونه ای از کلامی و قدرتی است که آفت می کند.

ساخته شده برای لاراول

PEST توسط Nuno Maduro ، عضو اصلی تیم Laravel ساخته شده است. در نتیجه ، از درجه یک برای آزمایش Laravel پشتیبانی می کند ، با ویژگی هایی مانند:

  • تست API
  • کارخانه های مدل
  • دستورات صنعتگر
  • LiveWire Support (تمایز دهنده اصلی برای من)

افزونه های آفات برای ویژگی های خاص لاراول

PEST چند افزونه خنک دیوانه وار دارد که به ما ابزاری می دهد تا زندگی ما را آسانتر کنیم:

composer require pestphp/pest-plugin-laravel --dev
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اکنون می توانم تست هایی مانند:

php artisan pest:test UsersTest
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

و بسیاری از دستورات مفید دیگر که مطمئناً در طول این ادیسه دیوانه کننده دیوانه کشف خواهم کرد.

PEST حتی افزونه های رسمی را برای آزمایش LiveWire حتی نرم تر نیز فراهم می کند:

composer require pestphp/pest-plugin-livewire --dev
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

بنابراین ، بله ، این اصلی ترین دلایلی است که من با PEST رفتم ، حتی اگر تیم من با Phpunit کار کند. چه کسی می داند ، شاید در آینده ، من می توانم آنها را متقاعد کنم که به آفت تغییر کنند … یا می فهمم که phpunit بهترین انتخاب است! 🫣

واقعیت سرگرم کننده: در Laraconeu 25 ، من با هم سازندگان Phpunit و هم با آفات آشنا شدم

درباره بسته ها بیشتر بدانید

این بسته ها مطمئناً دارای سربار ، راه اندازی و عادت کردن هستند اما من معتقدم که آنها آبهای این بازپرس هستند ، زیرا آنها راهنمای یک پروژه ایمن تر و ساختار یافته تر خواهند بود.

پایان

برای بسته بندی کارها ، می خواهم دوباره تکرار کنم که چرا این سریال Refactor را شروع کردم. پس از حضور در LaRacon EU ، من به اهمیت به اشتراک گذاری کد خود ، نه فقط برای کمک به دیگران و گسترش امکانات توسعه منبع باز ، بلکه برای همکاری بیشتر و ادامه یادگیری خودم فهمیدم.

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

در آینده ، من می دانم که من به پایگاه کد Sudorealm باز می گردم و چیزهای جدیدی را برای بهبود نشان می دهم ، و این فکر من را هیجان زده می کند! این اثبات خواهد بود که من به عنوان یک توسعه دهنده رشد کرده ام. اما دفعه بعد ، یک تفاوت وجود خواهد داشت: این پروژه منبع باز خواهد بود ، در معرض چشمان تیز و مانند کرکس مانند همه شما که رمزگذاران با استعداد دیوانه وار در آنجا قرار دارند.
بنابراین لطفاً با من همراه باشید ، امیدوارم ، افرادی در آنجا حضور داشته باشند که چیزی از این شهوانی که من را در اختیار دارد ، دریافت کنند.

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

آرون فرانسیس لاراکونو 2025

این قسمت از صحبت ها را اینجا بگیرید.
با تشکر از هارون فرانسیس

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

اگر از این پست لذت بردید و می خواهید به بهبود پروژه کمک کنید ، این روشهای سریع را برای مشارکت در نظر بگیرید:

  • 🛍 گنجینه های وابسته در زیر – لیست وسایل جالب زیر را بررسی کنید
  • توسعه قهوه: ما چیزی جز ماشین های قهوه به کد نیستیم! کامی

عشق را گسترش دهید

👑 تاج و اشتراک گذاری: اگر در این پست ارزش پیدا کردید ، لطفاً آن را تاج بدهید و آن را با علاقه مندان به رمزگذار/هکر خود به اشتراک بگذارید. گسترش دانش همان چیزی است که Sudorealm در مورد آن است! واقعیت جالب نویسنده با بیشترین تاج در یک قلمرو به عنوان پادشاه قلمرو تاج خواهد شد! 🤴

🆇 X فریاد: احساس سپاسگزار اضافی یا بازخورد خوبی دارید؟ در توییتر فریاد بزنم – دوست دارم از شما بشنوم! d3adr1nger در x

💬 به سرور Discord ما بپیوندید: به سرور Discord Sudorealm

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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا