• 选项卡 Stack trace —— 是程序调用堆栈,这里看到脚本调用的顺序,包括哪个地方执行错误的;
  • 选项卡 Request —— 是一些运行环境的信息,包括:
    • Request —— 请求简介;
    • Headers —— 请求头信息;
    • Query String —— URL 请求参数,用户提交的 GET 请求,PHP 超级全局变量 $_GET 里的内容
    • Body —— 表单提交的数据,PHP 超级全局变量 $_POST 里的内容
    • Files —— 用户上传文件的数据,PHP 超级全局变量 $_FILES 里的内容
    • Session —— 当前用户会话信息,PHP 超级全局变量 $_SESSION 里的内容
    • Cookies —— 当前用户的 Cookie 信息,PHP 超级全局变量 $_COOKIE 里的内容
  • 选项卡 App —— 应用启动信息,执行逻辑,包括路由调用、中间件调用、控制器调用、模板文件等信息;
  • 选项卡 User —— 登录用户信息,以及浏览器等客户端信息;
  • 选项卡 Context —— 环境信息,项目 .env 里的内容等;
  • 选项卡 Debug —— 将显示异常发生之前发生的事情。比如查询、日志和转储。在转储旁边,我们还显示您将 dump 语句放在何处的文件名等。

上面只是一个简单介绍,请先按照课程思路走下去,后续想要深入学习 Laravel Ignition ,请见 翻译:Laravel Ignition 功能全解析

1使用zh-CN.json 自定义配置文件

这是 Laravel 提供的本地化特性,使用 __() 函数来辅助实现。按照约定,本地化文件存储在 resources/lang 文件夹中,为 JSON 格式。在 config/app.php 文件中,我们设置了:

对应翻译文件就是 resources/lang/zh-CN.json ,需新建此文件:

resources/lang/zh-CN.json

2使用中文语言包

会有很多人会遇到翻译 Laravel 自带模板的问题,所以我们无需自己一个个去翻译,这种通用的问题找找扩展包来处理即可。

我们将使用 Laravel Lang 项目来实现,此项目支持了 52 个国家的语言,使用以下命令安装:

完成上面的操作后,将项目文件 config/app.php 中的下一行

替换为:

Laravel Lang 同自定义语言包一样,都是根据 config/app.php 里 locale 的选项来选择语言的。

值得一提的是,如果你想修改扩展包提供的语言文件,可以使用以下命令发布语言文件到项目里:

 

1.生成命令文件

2.编辑生成文件app/Console/Commands/MakeTransformer.php

3.创建模板文件app/Console/Commands/stubs/transformer

4.使用命令 ,可以没有后缀

文件路径app/Transformers/{name}.php

1.编辑html

2.JavaScript 脚本

3.laravel php config/filesystems.php 编辑配置文件,添加uploads

在controller编辑代码

 

 

『Horizon』是 Laravel 官方推出的一个集成在 Laravel 项目中的 Redis 队列管理工具,包含了一个可视化面板和几个管理命令,可以让我们更加方便地管理异步任务。

我们可以通过 composer 直接安装:

安装完成之后还需要把 Horizon 的配置文件和前端文件放到项目目录中:

现在我们访问 http://shop.test/horizon 看看 Horizon 的管理面板:

默认情况下这个页面只能在 APP_ENV=local 的环境可以看到,所以不用担心线上站点信息泄露。

可以看到状态是 Inactive,我们需要在终端调用 Horizon 的命令来启动:

现在我们到管理后台任意找一个商品进入编辑页面然后保存,使之触发一个异步任务,然后看看终端:

可以看到这个命令和 queue:work 一样能够正常处理异步任务。现在再到 Horizon 的管理页面看看:

 

 

 

 

 

 

我们在代码中使用了 PHP 的官方扩展 bcmath 提供的函数来进行金额计算,这是为了避免浮点数运算不精确的问题。但是 bcmath 函数用起来很不方便,我们通常会使用 moontoast/math 这个库来作为替代,这个库的底层也是依赖于 bcmath,主要是做了面向对象的封装。

这个库主要提供了 \Moontoast\Math\BigNumber 这个类,这个类的构造函数接受两个参数,第一个参数就是我们要参与运算的数值,第二个参数是可选参数,用于表示我们希望的计算精度(即精确到小数点后几位)。

同时这个类提供了许多常见的算术运算方法,比如 加法 add()、减法 subtract()、乘法 multiply()、除法 divide() 等等。

现在修改我们之前计算金额的代码:

修改前:

修改后:

是每次使用都要 new 一次对象并且设定精度,还是比较麻烦的,我们可以在 helpers.php 里创建一个辅助函数来方便我们调用:

再次修改:

什么是Heroku

Heroku 是一个支持多种编程语言的 PaaS (Platform-as-a-Service)。在 2010 年被 Salesforce 收购。Heroku 作为最开始的云平台之一,从 2007 年 6 月起开始开发,当时它仅支持 Ruby,后来增加了对 Java、Node.js、Scala、Clojure、Python 以及 PHP 和 Perl 的支持。由于其应用部署流程异常简单,因此倍受广大开发者欢迎。

Heroku的基本安装配置

首先我们需要先注册一个Heroku的账号,然后安装 heroku命令行工具集。最后我们就可以开始配置heroku,

在Heroku上面创建一个应用

在Heroku上面使用PostgreSql

安装完成之后,Heroku 将为我们生成一个唯一的数据库 URL – DATABASE_URL,我们可以通过下面命令查看 Heroku 的所有配置信息:

我们需要对当前环境进行判断。如果环境为本地环境,则使用 MySQL 数据库,若为 Heroku 环境,则使用 PostgreSQL 数据库。

添加帮助方法判断使用环境

app/helpers.php

载入帮助方法

composer.json

使用命令重写加载

 

 

 

Laravel 提供了一个叫做 ViewComposer 的解决方案,ViewComposer 可以在不修改控制器的情况下直接向指定的模板文件注入变量。

1.创建ViewComposer

我们先创建一个 ViewComposer 类,通常放在 app/Http/ViewComposers 目录下:

2.编写创建的CategoryTreeComposer

3注册app/Providers/AppServiceProvider.php

这样就可以变量共享了

1.下载新的盒子

下载最新版的 Homestead 虚拟机盒子 。这个版本是个人定制的,

2.删除旧盒子

3.添加新盒子

将下载的文件解压

添加盒子

4.修改配置文件

vim /scripts/homestead.rb

5启动盒子

组件是打包的代码,用于帮你解决php应用中某个具体的问题。

作用单一:

php组件的作用带一,能很好地解决一个问题。组件不是万能钥匙,不能杂而不精,要术业有专攻,组件专注于解决一个问题,而且使用简单的接口封装功能。

小型:

php组件小巧玲珑,只包含解决某个问题所需的最少代码。组件中的代码量各异。一个php组件可以只有一个php类,也可以有多个php类,分别放在不同的子命名空间中。php组件中类的数量没有统一限制,更具解决问题的所需,想使用多少个就使用多少个

合作:

php组件之间能良好合作。毕竟组件就是为了和其他组件合作,解决更复杂的问题。php组件不会让自己的代码搅乱全局命名空间,而会把代码放在自己命名空间中

测试良好:

php组件测试良好。因为体型小,因此很容易测试。如果php组件体型小,而且作用单一,很可能也已于测试,因为组件关注的太少,而且以来易于识别和模拟。做好的php组件本身会提供测试,而且有充足的测试覆盖度。

文档完善:

php组件的文档完善,组件因该能让开发这轻易安装,理解和使用。好的文档可以做到这一点。php组件应该有一个README文件,说明组件的作用,如何安装,以及如何使用