前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过 Tinker 实现 Laravel 命令行交互式 Shell

通过 Tinker 实现 Laravel 命令行交互式 Shell

作者头像
学院君
发布2021-01-08 15:50:33
1.8K0
发布2021-01-08 15:50:33
举报
文章被收录于专栏:学院君的专栏学院君的专栏

REPL 与 PsySH

Laravel 自带了一个功能强大的 REPL —— Tinker,所谓 REPL,是 Read–Eval–Print-Loop 的缩写,这是一种交互式 Shell:获取用户输入并执行它们,然后将结果打印出来返回给用户。

在原生 PHP 中,我们也可以使用类似的交互式 Shell,通过 php -a 命令即可:

此外,还可以通过 PsySH 实现,相较于原生的 php -a,PsySH 拥有更多高级特性,因此功能更加强大。在使用 PsySH 之前,需要通过 Composer 全局安装:

代码语言:javascript
复制
composer g require psy/psysh:@stable

然后就可以在命令行执行 psysh 进入交互式 Shell 了(确保全局 Composer 的 bin 目录在系统路径中),在 PsySH 中我们能编写各种代码,打印语句、计算表达式、编写函数等等:

甚至还支持基于 XDebug 进行代码调试、与系统 Shell 集成等等,更多使用方法可以参考官方文档。

Laravel Tinker 就是基于 PsySH 实现的,与 Artisan 主要用于编写和执行 Artisan 命令不同,通过 Tinker,我们可以在命令行中实现与 Laravel 应用的各种交互,包括数据库的增删改查。

Laravel Tinker 使用

下面我们一起来看一下如何通过 Tinker 赋能本地 Laravel 开发。在命令行中通过 php artisan tinker 即可进入 Laravel Tinker 的交互式 Shell。

查看帮助文档

在 Laravel Tinker 中,doc 命令可用于查看某个函数或方法的帮助文档,例如,我们想查看辅助函数 config() 如何使用,可以这么做:

就会将 config() 函数的文档信息打印出来,如果你还想进一步查看该函数的代码,通过 show 命令来实现:

是不是很方便?当然,仅限于函数查看,类方法虽然支持,但是还是通过 PHPStorm 的跳转功能快(因为要输入完整的命名空间)。

运行 Artisan 命令

此外,每次我们运行 php artisan tinker 就相当于从控制台启动了 Laravel 应用,在运行交互式命令前,tinker 命令会添加一些命令到 Shell,这些命令定义在 Laravel\Tinker\Console\TinkerCommand$commandWhitelist 属性中:

代码语言:javascript
复制
protected $commandWhitelist = [
    'clear-compiled', 'down', 'env', 'inspire', 'migrate', 'optimize', 'up',
];

因此,你可以在 Tinker Shell 中直接运行这些命令:

测试 Laravel 代码

看完前面两个功能,可能你对 Tinker 还是提不起来兴趣,毕竟都是可以借助其他方式可以快速完成的,甚至效率更高。接下来要介绍的,则是 Tinker 最有用的功能了,我们可以在 Tinker Shell 中演练测试 Laravel 代码。比如模型和服务,你可以使用控制台来创建一个新的模型,将其保存到数据库,然后查询这条记录(如果之前没有运行过 php artisan migrate 命令创建 users 表,先运行 migrate 命令创建):

当然,我们还可以通过工厂方法 factory() 批量创建用户,这在测试的时候很方便,比如说我们随机创建三个用户:

此外,Tinker 还是个手动触发队列任务、体验服务和事件的好地方,例如,下面我们从容器获取一个日志服务并新增一条日志:

打开 storage/logs/laravel.log,就会看到日志已经写进去了:

代码语言:javascript
复制
[2018-11-21 02:13:05] local.INFO: test 

了解更多

这里,我们只是介绍了一些入门级的使用示例,更多好玩的东西有赖于你自己在日常开发中去探索,PsySH 官方文档 有很多资源让你了解 Tinker 的底层,如果你想了解更多关于 Tinker 的内容,可以去 Tinker 的 GitHub 仓库逛逛。

本系列教程首发在学院君网站(xueyuanjun.com),你可以点击页面左下角阅读原文链接查看最新更新的教程。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客书房 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • REPL 与 PsySH
  • Laravel Tinker 使用
    • 查看帮助文档
      • 运行 Artisan 命令
        • 测试 Laravel 代码
        • 了解更多
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档