برنامه نویسی

Tinker like a 10x: Mastering Artisan Tinker REPL برای لاراول

معرفی

به عنوان یک توسعه دهنده لاراول، احتمالاً زمان زیادی را در خط فرمان با استفاده از دستورات Artisan برای تعامل با برنامه خود می گذرانید. با این حال، آیا تا به حال نام Artisan Tinker را شنیده اید؟ این یک ابزار تعاملی قدرتمند REPL (Read-Eval-Print-Loop) است که به شما امکان می دهد با کد و داده های برنامه لاراول خود مستقیماً از خط فرمان تعامل داشته باشید. در این مقاله، نحوه استفاده موثر از Artisan Tinker برای افزایش بهره وری و تبدیل شدن به یک توسعه دهنده واقعی 10 برابر را بررسی خواهیم کرد.

🖥 شروع به کار

برای شروع استفاده از Artisan Tinker، به سادگی آن را اجرا کنید php artisan tinker دستور از ترمینال شما با این کار Tinker REPL راه اندازی می شود که به شما امکان می دهد کد PHP را در زمینه برنامه لاراول خود اجرا کنید.

در اینجا چند نکته وجود دارد که به شما کمک می کند تا بهترین استفاده را از Tinker ببرید:

✨ متغیرهای جادویی

Tinker چندین متغیر جادویی ارائه می دهد که می توانید از آنها برای ارجاع به بخش های مختلف برنامه Laravel خود استفاده کنید.

متغیر ارزش
$_ آخرین نتیجه
$_e آخرین استثنا
$__out آخر stdout خروجی
$__file آخرین مسیر فایل
$__line خط آخر
$__dir آخرین مسیر دایرکتوری
$__class نام آخرین کلاس
$__method نام آخرین روش
$__function نام آخرین تابع
$__namespace نام فضای نام خانوادگی

آخرین نتیجه

نتیجه آخرین اجرای (موفق) همیشه به صورت موجود است $_، بنابراین می توانید از آن در ورودی بعدی خود استفاده کنید.

>>> 10 + 11
=> 21
>>> $_ * 2
=> 42
>>> $_
=> 42

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

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

آخرین استثنا

آخرین خطا یا استثنای کشف نشده به عنوان موجود است $_e.

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

شما همچنین می توانید استفاده کنید wtf دستور مشاهده بک ردیاب آخرین استثنا و show --ex برای مشاهده کدی که استثنا را ایجاد کرده است.

برای حذف جدیدترین استثنا از جلسه جاری، از عبارت استفاده کنید throw-up فرمان

آخر stdout خروجی

را stdout خروجی از آخرین کد اجرا شده گرفته می شود و به عنوان در دسترس است $__out.

>>> echo "wat"
wat
>>> $__out
=> "wat"

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

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

آخرین فایل، خط و دایرکتوری

برخی از دستورات مانند doc، dump، ls، و show—تنظیم اضافی $__file، $__line و $__dir متغیرها، در صورت لزوم

توضیحات تصویر


>>> $__file
= "/Users/alpha/Documents/GitHub/alphaolomi/opgs/vendor/psy/psysh/src/functions.php"

>>> $__line
= 29
>>> $__dir
= "/Users/alpha/Documents/GitHub/alphaolomi/opgs/vendor/psy/psysh/src"
>>>

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

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

نام فضای نام خانوادگی، کلاس، متد و نام توابع

برخی از دستورات مانند doc و show—تنظیم اضافی $__namespace، $__class، $__method و $__function متغیرها، در صورت لزوم

>>> show Psy\Shell::debug
  > 138|     public static function debug(array $vars = array(), $boundObject = null)
    139|     {
    140|         echo PHP_EOL;
    141|
    142|         $sh = new \Psy\Shell();
    143|         $sh->setScopeVariables($vars);
    144|
    145|         if ($boundObject !== null) {
    146|             $sh->setBoundObject($boundObject);
    147|         }
    148|
    149|         $sh->run();
    150|
    151|         return $sh->getScopeVariables(false);
    152|     }

>>> $__namespace
=> "Psy"
>>> $__class
=> "Psy\Shell"
>>> $__method
=> "Psy\Shell::debug"
>>> $__function
PHP error:  Undefined variable: __function on line 1
>>>
وارد حالت تمام صفحه شوید

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

⏳ مدیریت تاریخچه

Tinker همچنین دارای یک ویژگی تاریخچه داخلی است که به شما امکان می دهد به راحتی دستورات قبلاً اجرا شده را به یاد بیاورید. برای دسترسی به تاریخچه فرمان خود، کافی است کلیدهای جهت دار بالا و پایین را فشار دهید. را hist دستور رابط اصلی شما برای تاریخ است. با این دستور می توانید تاریخچه پوسته خود را نمایش، جستجو، ذخیره یا پخش مجدد کنید.

نمایش تاریخچه

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

>>> hist
0: function z() { throw new RuntimeException; }
1: function y() { z(); }
2: function x() { y(); }
3: x()
4: wtf
>>>
وارد حالت تمام صفحه شوید

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

فقط برشی از تاریخچه را با استفاده از نشان دهید --show گزینه: --show 3 یک خط نشان خواهد داد، --show 1..3 یک محدوده را نشان خواهد داد، و --show 3.. از خط سوم تا آخر تاریخ شما نشان داده می شود.

>>> hist --show 1..3
1: function y() { z(); }
2: function x() { y(); }
3: x()
>>>

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

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

را --head N و --tail M گزینه ها اول را نشان می دهند N خطوط و آخرین M خطوط به ترتیب

>>> hist --head 3
0: function z() { throw new RuntimeException; }
1: function y() { z(); }
2: function x() { y(); }
>>> hist --tail 2
3: x()
4: wtf
>>>

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

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

جستجوی تاریخچه

استفاده کنید --grep گزینه ای برای فیلتر کردن تاریخچه شما

>>> hist --grep wtf
4: wtf
>>>
وارد حالت تمام صفحه شوید

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

استفاده کنید -i برای انجام جستجوی غیر حساس به حروف کوچک و بزرگ، و -v برای نشان دادن تنها خطوطی که نکن مطابق با الگوی جستجو

>>> hist --grep WTF -i -v
0: function z() { throw new RuntimeException; }
1: function y() { z(); }
2: function x() { y(); }
3: x()
>>>
وارد حالت تمام صفحه شوید

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

را --grep الگوی جستجو می تواند یک عبارت منظم سازگار با Perl نیز باشد.

>>> hist --grep /\{.*\}/
0: function z() { throw new RuntimeException; }
1: function y() { z(); }
2: function x() { y(); }
>>>

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

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

در حال پخش مجدد تاریخچه

تاریخچه خود را با --replay گزینه. این زمانی که با آن ترکیب شود بهترین عملکرد را دارد --show، --head، --tail و --grep.

>>> hist --head 3 --replay
Replaying 3 lines of history
-->  function z() { throw new RuntimeException; }
-->  function y() { z(); }
-->  function x() { y(); }
>>> function_exists('x')
=> true
>>>

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

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

ذخیره تاریخ

تاریخچه خود را در یک فایل محلی ذخیره کنید --save FILENAME گزینه. می توانید این را با هم ترکیب کنید --show، --head، --tail و --grep گزینه هایی برای محدود کردن برش از تاریخ ذخیره شده.

>>> hist --head 3 --save history.txt
Saving history in history.txt...
History saved.
>>>
وارد حالت تمام صفحه شوید

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

پاک کردن تاریخچه

تاریخچه خود را با --clear گزینه.

>>> hist --clear
History cleared.
>>> hist
>>>
وارد حالت تمام صفحه شوید

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

💲 یکپارچه سازی پوسته سیستم

Tinker می تواند با پوسته سیستم شما ادغام شود تا عملکرد قدرتمندتری را ارائه دهد. دسترسی به پوسته سیستم از داخل یک جلسه REPL می تواند بسیار مفید باشد.

دستورات پوسته دلخواه را اجرا کنید

برای اجرای دستورات پوسته دلخواه، دستور را در بکتیک بپیچید.

>>> `pwd`
=> "/Projects/psysh\n"
>>> `ls`
=> = """
  README.md\n
  app\n
  artisan\n
  bootstrap\n
  composer.json\n
  composer.lock\n
  config\n
  database\n
  docs\n
  history.txt\n
  package.json\n
  phpunit.xml\n
  public\n
  resources\n
  routes\n
  storage\n
  tailwind.config.js\n
  tests\n
  vendor\n
  vercel.json\n
  vite.config.js\n
  """
>>>

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

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

متغیرهای PHP را می توان در دستورات پوسته نیز درون یابی کرد.

>>> $readme = 'README.md'
=> "README.md"
>>> `ls -al $readme`
= "-rw-r--r--  1 alpha  staff  1441 May  1 12:34 README.md\n"
>>>
وارد حالت تمام صفحه شوید

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

✨ دستورات شل با متغیرهای جادویی

برخی از دستورات مانند doc، dump، ls و show—به روز رسانی $__file، $__dir و $__line بعد از دویدن این متغیرها به ویژه زمانی مفید هستند که در دستورات پوسته درون یابی شوند.

مثلا بعد از استفاده doc برای نمایش مستندات یک کلاس یا متد، می توانید از subl دستور shell برای باز کردن آن فایل در Sublime Text و پرش به تعریف.

>>> doc Psy\Shell
class Psy\Shell extends Symfony\Component\Console\Application

Description:
  The Psy Shell application.

  Usage:

      $shell = new Shell;
      $shell->run();

Author: Justin Hileman <justin@justinhileman.info>
>>> $__file
=> "/Projects/psysh/src/Psy/Shell.php"
>>> `subl $__file:$__line`
=> null
>>>
وارد حالت تمام صفحه شوید

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

📢 دستورات

Tinker چندین دستور داخلی را ارائه می دهد که می توانید از آنها برای انجام کارهای رایج استفاده کنید. با اجرا کردن، لیست کاملی از دستورات موجود را مشاهده می کنید help.

دستورات داخلی

فرمان شرح نام مستعار
کمک نمایش لیستی از دستورات تایپ کنید help [foo] برای اطلاعات در مورد [foo].
ls متغیرهای محلی، نمونه یا کلاس، متدها و ثابت ها را فهرست کنید.
زباله یک شی یا بدوی را تخلیه کنید.
سند مستندات یک شی، کلاس، ثابت، متد یا ویژگی را بخوانید.
نشان می دهد نمایش کد یک شی، کلاس، ثابت، متد یا ویژگی.
wtf نشان دادن بک ردیاب جدیدترین استثنا.
من کجا هستم نشان دهید که در کد کجا هستید.
پرتاب کردن یک استثنا یا خطا را از پوسته Psy خارج کنید.
تایمی پروفایل با تایمر
پی گیری پشته تماس فعلی را نشان دهید.
بافر نمایش (یا پاک کردن) محتویات بافر ورودی کد.
روشن صفحه Psy Shell را پاک کنید.
ویرایش کنید یک ویرایشگر خارجی باز کنید. پس از آن، کد تولید شده را در بافر ورودی دریافت کنید.
سودو کد PHP را با دور زدن محدودیت‌های دید ارزیابی کنید.
تاریخ نمایش تاریخچه پوسته Psy.
خروج جلسه جاری را پایان دهید و به تماس گیرنده برگردید.
مهاجرت مهاجرت های پایگاه داده را اجرا کنید
مهاجرت: نصب مخزن مهاجرت را ایجاد کنید
الهام بخشیدن نمایش یک نقل قول الهام بخش
واضح تالیف شده فایل کلاس کامپایل شده را حذف کنید
پایین برنامه را در حالت نگهداری / دمو قرار دهید
env محیط چارچوب فعلی را نمایش دهید
بهینه سازی فایل های بوت استرپ فریم ورک را کش کنید
بالا برنامه را از حالت نگهداری خارج کنید

🛠 پیکربندی

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

برای انتشار فایل پیکربندی Tinker، اجرا کنید php artisan vendor:publish --provider="Laravel\Tinker\TinkerServiceProvider". این یک ایجاد خواهد کرد tinker.php فایل در برنامه شما config فهرست راهنما.

🎛 گزینه های پیکربندی

همراه با tinker.php فایل پیکربندی، همچنین می توانید مستقیماً گزینه ها را به آن منتقل کنید Psy\Shell با استفاده از فایل های پیکربندی

یک فایل به ~/.config/psysh/config.php (یا C:\Users\{USER}\AppData\Roaming\PsySH\config.php در ویندوز).

<?php
return [

    'startupMessage' => sprintf('<info>%s</info>', shell_exec('uptime')),
];
وارد حالت تمام صفحه شوید

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

فایل های پیکربندی هر پروژه

برای یک پیکربندی در هر پروژه یک را ایجاد کنید .psysh.php فایل پیکربندی در دایرکتوری ریشه پروژه. هر دو فایل پیکربندی جهانی و محلی در صورت وجود استفاده می شوند. جهانی config.php ابتدا لود می شود و محلی .psysh.php پیکربندی جهانی را لغو و گسترش می دهد.

<?php
return [
    'colorMode' => \Psy\Configuration::COLOR_MODE_FORCED,

    'startupMessage' => sprintf('%s', shell_exec('php artisan about')),

    'theme' => [
        // Use compact output. This can also be set by the --compact flag.
        'compact' => true,

        // The standard input prompt.
        'prompt' => '>>> ',
    ],
];
وارد حالت تمام صفحه شوید

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

پایانه

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

بنابراین، منتظر مقاله بعدی باشید و مهارت های توسعه لاراول خود را با Artisan Tinker به سطح بالاتری ببرید!

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

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

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

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