gere-lajos / laravel-web-tinker
v0.3.1
2024-05-15 19:29 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^11.0||^10.0
- laravel/framework: ^11.0||^10.0
- nesbot/carbon: ^3.0||^2.63
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.15
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
README
注意
我们已经将此项目的持续开发转移到新的仓库。您可以通过luminarix/laravel-web-tinker访问它。请注意,此当前仓库将不再接收更新。
一个小型Laravel包,用于在浏览器中使用Tinker
此包允许您在浏览器中使用Tinker。深受Spatie的Laravel Web Tinker的启发,但增加了功能,并添加了React前端。
🚨 谨慎的话 🚨
此包可以运行任意代码。除非您知道自己在做什么,否则您不应该在生产环境中或任何处理真实世界数据的环境中安装或使用此包。
已知问题
- 如果您使用ctrl+enter或cmd+enter运行代码,编辑器也会开始新的一行。
- 历史记录在标签页之间共享,关闭标签页时不会清除。
- 大输出处理得不好,可能会推送到网格而不是断行。
- 我们必须验证存储的代码结构,以免破坏编辑器。
安装
您可以通过composer安装此包。
composer require gere-lajos/laravel-web-tinker --dev
接下来,您必须运行此命令以发布此包的资源。
php artisan web-tinker:install
可选地,您可以发布包的配置文件。
php artisan vendor:publish --provider="GereLajos\LaravelWebTinker\WebTinkerServiceProvider" --tag="config"
以下内容将被发布到config/web-tinker.php
如果您之前安装了Spatie的Web Tinker,您可能配置文件中存在冲突。您可以安全地从config
目录中删除web-tinker.php
文件。
return [ /* * The web tinker page will be available on this path. */ 'path' => '/tinker', /* * By default this package will only run in local development. * Do not change this, unless you know what your are doing. */ 'enabled' => env('APP_ENV') === 'local', /* * This class can modify the output returned by Tinker. You can replace this with * any class that implements \Spatie\WebTinker\OutputModifiers\OutputModifier. */ 'output_modifier' => \GereLajos\LaravelWebTinker\OutputModifiers\PrefixDateTime::class, /* * These middleware will be assigned to every WebTinker route, giving you the chance * to add your own middlewares to this list or change any of the existing middleware. */ 'middleware' => [ Illuminate\Cookie\Middleware\EncryptCookies::class, Illuminate\Session\Middleware\StartSession::class, GereLajos\LaravelWebTinker\Http\Middleware\Authorize::class, ], /* * If you want to fine-tune PsySH configuration specify * configuration file name, relative to the root of your * application directory. */ 'config_file' => env('PSYSH_CONFIG', null), ];
用法
默认情况下,此包只会在本地环境中运行。
访问您的应用本地环境中的/tinker
来查看Tinker页面。
授权
如果您想在其他环境中运行此包(我们不推荐这样做),您必须执行以下两个步骤。
- 您必须在
AuthServiceProvider
中注册一个viewWebTinker
权限。一个好的地方是在Laravel附带的AuthServiceProvider
中做这件事。
public function boot() { $this->registerPolicies(); Gate::define('viewWebTinker', function ($user = null) { // return true if access to web tinker is allowed }); }
- 您必须将
web-tinker
配置文件中的enabled
变量设置为true
。
修改输出
您可以通过在web-tinker
配置文件的output_modifier
键中指定输出修改器来修改tinker的输出。输出修改器是任何实现\GereLajos\LaravelWebTinker\OutputModifiers\OutputModifier
的类。
接口看起来是这样的。
namespace GereLajos\LaravelWebTinker\OutputModifiers; interface OutputModifier { public function modify(string $output = ''): string; }
默认安装的此包将使用PrefixDataTime
输出修改器,它将当前日期时间作为前缀添加到Tinker的输出中。
测试
composer test
鸣谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。