Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/furey/tinx
⛔️ Laravel Tinx is archived and no longer maintained.
https://github.com/furey/tinx
archived deprecated laravel laravel-tinker obsolete php tinker
Last synced: about 2 months ago
JSON representation
⛔️ Laravel Tinx is archived and no longer maintained.
- Host: GitHub
- URL: https://github.com/furey/tinx
- Owner: furey
- Archived: true
- Created: 2017-10-17T14:19:20.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2019-12-14T14:53:45.000Z (almost 5 years ago)
- Last Synced: 2024-05-17T16:49:23.782Z (7 months ago)
- Topics: archived, deprecated, laravel, laravel-tinker, obsolete, php, tinker
- Language: PHP
- Homepage:
- Size: 109 KB
- Stars: 449
- Watchers: 10
- Forks: 39
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-laravel - Laravel Tinx - Reload your Laravel Tinker session from inside Tinker (Popular Packages)
README
# ⛔️ Laravel Tinx (Deprecated)
[![No Maintenance Intended](./readme/unmaintained.svg)](http://unmaintained.tech/)
**Laravel Tinx** was archived on 12th December 2019 and is no longer maintained.
Looking for a reloadable version of [Laravel Tinker](https://github.com/laravel/tinker)?
Save the following script as `tinx.sh` to your project root directory:
```bash
#!/bin/sh
while true; do php artisan tinker; done
```Run the script to launch a reloadable version of Tinker:
```console
$ . tinx.sh
```While your Tinker session is running, press:
- Ctrl + D from an empty prompt to **reload** your session
- Ctrl + C to **exit** your sessionCan't see newly created classes in Tinker?
Exit your Tinker session and run:
```console
$ composer dump -o
```Thanks for loving [Laravel](https://laravel.com), and thanks for digging Tinx.
Happy coding!
🤓👋
---
# Laravel Tinx
[Laravel Tinker](https://github.com/laravel/tinker), re()loaded.
Reload your session from inside Tinker, plus magic shortcuts for first(), find(), where(), and more!
## Contents
- [Installation](#installation)
- [Usage](#usage)
* [Reload your Tinker session](#reload-your-tinker-session)
* [Magic models](#magic-models)
* [Naming strategy](#naming-strategy)
* [Names](#names)
* [Fast factories](#fast-factories)
- [Configuration](#configuration)
- [Contributing](#contributing)
- [License](#license)
## InstallationTo install Tinx, simply require it via Composer:
```bash
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](https://laravel.com/docs/5.5/packages#package-discovery)):
```php
[
// etc…
Ajthinking\Tinx\TinxServiceProvider::class,
// etc…
],
// etc…
];
```## Usage
From the command line, instead of running `php artisan tinker`, run:
```
php artisan tinx
```### Reload your Tinker session
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 -o` before `re()`, ensuring any new classes added to your codebase since starting Tinx are automatically aliasable/resolvable by Laravel Tinker.
### Magic models
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` |### Naming strategy
Tinx calculates shortcut names via the implementation defined by your `strategy` config value.
Lets say you have two models: `Car` and `Crocodile`.
If your naming `strategy` was set to `pascal` (default), Tinx would define the following shortcuts in your session:
- Car: `$c`, `$c_`, `c()`
- Crocodile: `$cr`, `$cr_`, `cr()`### Names
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_limit` config value.
To filter the shortcuts returned by `names()`, simply pass your filter terms like so:
```
names('car', 'user')
```### Fast factories
Shortcut methods are a great way to create factory models fast.
```php
// Instead of this…
factory(App\User::class)->create()// …try substituting a shortcut method, like this:
factory(u())->create()
```When tinkering, every keystroke counts!
## Configuration
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.php` where appropriate to suit your needs:
```php
[
'/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,];
```## Contributing
Please post issues and send PRs.
## License
MIT