⛔️ Laravel Tinx is archived and no longer maintained.
Laravel Tinx was archived on 12th December 2019 and is no longer maintained.
Looking for a reloadable version of Laravel Tinker?
Save the following script as
tinx.shto your project root directory:
#!/bin/sh while true; do php artisan tinker; done
Run the script to launch a reloadable version of Tinker:
$ . tinx.sh
While your Tinker session is running, press:
Can't see newly created classes in Tinker?
Exit your Tinker session and run:
$ composer dump -o
Thanks for loving Laravel, and thanks for digging Tinx.
Happy coding!
🤓👋
Laravel Tinker, re()loaded.
Reload your session from inside Tinker, plus magic shortcuts for first(), find(), where(), and more!
To install Tinx, simply require it via Composer:
composer require --dev ajthinking/tinx
If using Laravel <=5.4, register Tinx's service provider in
config/app.php(Laravel >=5.5 does this automatically):
return [ // etc… 'providers' => [ // etc… Ajthinking\Tinx\TinxServiceProvider::class, // etc… ], // etc… ];
From the command line, instead of running
php artisan tinker, run:
php artisan tinx
To reboot your current session, simply call:
re()
This will allow you to immediately test out your application's code changes.
Aliases:
reboot(),
reload(),
restart().
To regenerate Composer's optimized autoload files before rebooting your current session, call:
reo()
Calling
reo()simply runs
composer dump -obefore
re(), ensuring any new classes added to your codebase since starting Tinx are automatically aliasable/resolvable by Laravel Tinker.
Tinx sniffs your models and prepares the following shortcuts:
| Example Shortcut | Equals | |:--------------------------- |:--------------------------------------------------- | |
$u|
App\User::first()| |
$u_|
App\User::latest()->first()| |
$c|
App\Models\Car::first()| |
u(3)|
App\User::find(3)| |
u("gmail")|
Where "%gmail%" is found in any column.| |
u("mail", "[email protected]")|
App\User::where("mail", "[email protected]")->get()| |
u("id", ">", 0)|
App\User::where("id", ">", 0)->get()| |
u()|
"App\User"| |
u()::whereRaw(...)|
App\User::whereRaw(...) // Note: >= PHP 7.0 only|
Tinx calculates shortcut names via the implementation defined by your
strategyconfig value.
Lets say you have two models:
Carand
Crocodile.
If your naming
strategywas set to
pascal(default), Tinx would define the following shortcuts in your session:
$c,
$c_,
c()
$cr,
$cr_,
cr()
The shortcuts defined for your session will display when Tinx loads and on subsequent reloads.
To see your shortcuts at any time during your session, run:
names()
Your shortcuts will initially display only if your session satisfies the
names_table_limitconfig value.
To filter the shortcuts returned by
names(), simply pass your filter terms like so:
names('car', 'user')
Shortcut methods are a great way to create factory models fast.
// Instead of this… factory(App\User::class)->create()// …try substituting a shortcut method, like this: factory(u())->create()
When tinkering, every keystroke counts!
Tinx contains a number of helpful configuration options.
To personalise your Tinx installation, publish its config file by running:
php artisan vendor:publish --provider=Ajthinking\\Tinx\\TinxServiceProvider --force
Once published, edit
config/tinx.phpwhere appropriate to suit your needs:
return [/** * Base paths to search for models (paths ending in '*' search recursively). * */ 'model_paths' => [ '/app', '/app/Models/*', // '/also/search/this/directory', // '/also/search/this/directory/recursively/*', ], /** * Only define these models (all other models will be ignored). * */ 'only' => [ // 'App\OnlyThisModel', // 'App\AlsoOnlyThisModel', ], /** * Ignore these models. * */ 'except' => [ // 'App\IgnoreThisModel', // 'App\AlsoIgnoreThisModel', ], /** * Model shortcut naming strategy (e.g. 'App\User' = '$u', '$u_', 'u()'). * Supported values: 'pascal', 'shortestUnique' * */ 'strategy' => 'pascal', /** * Alternatively, you may pass a resolvable fully qualified class name * implementing 'Ajthinking\Tinx\Naming\Strategy'. * */ // 'strategy' => App\CustomNamingStrategy::class, /** * Column name (e.g. 'id', 'created_at') used to determine last model shortcut (i.e. '$u_'). * */ 'latest_column' => 'created_at', /** * If true, models without database tables will also have shortcuts defined. * */ 'tableless_models' => false, /** * Include these file(s) before starting tinker. * */ 'include' => [ // '/include/this/file.php', // '/also/include/this/file.php', ], /** * Show the console 'Class/Shortcuts' table for up to this many model names, otherwise, hide it. * To always view the 'Class/Shortcuts' table regardless of the model name count, * pass a 'verbose' flag when booting Tinx (e.g. "php artisan tinx -v"), * or set this value to '-1'. * */ 'names_table_limit' => 10,
];
Please post issues and send PRs.
MIT