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 به سطح بالاتری ببرید!