gitlab 搭配 gitlab runner 的 CI/CD 在项目中实现自动化部署、前端文件打包,也是最简单的部署方式 关于 gitlab 和 gitlab runner 的安装方式网上有很多教程这里不过多赘述 需要注意的是如果你的项目是搭配 web 服务运行,那么 runner 是的安装和启动用户最好选择和 web服务器 相同的用户或用户组 否则会遇到权限问题导致无法拉取仓库代码,当然你也可以用 shell 脚本去解决此问题 你可以在 gitlab runner 安装时指定用户
策略模式 将算法分别封装起来,让它们可以相互替换,此模式让算法的变化不会影响到其调用者 实现一个简单的收银功能 假如需要更多的折扣、满减、购买赠送积分,那么这里明显不能这么编写,总不可能一个折扣就新增一个 case 单纯使用工厂模式并不能解决问题,应当使用策略模式,把相同的算法归纳在一个策略里 例如不管打几折,都算是一种策略,满减和普通支付是另外的策略 建立一个抽象类 CashSuper 类,约束继承的子类(每个策略)都实现自己的计算方式 acceptCach 建立一个 CashContext 类,用来维护引用的对象,CashContext 类的构造方法传递进来的是抽象类 CashSuper 类型 而不是某个子类类型,而我们的子类都实现了计算方法,只需要传不同的子类就可以实现不同的策略
## 面向对象 ### 封装 实现一个简单的计算器功能 ```php class Program { public function calculate() { $number_a = 12; $number_b = 5; $operate = '+'; $result = 0; switch ($operate) { case '+': $result = $number_a + $number_b; break; case '-': $result = $number_a - $number_b; break; case '*': $result = $number_a * $number_b; break; case '/': $result = $number_a / $number_b; break; default: # code... break; } echo $number_a . $operate . $number_b .'='. $result; } } $program = new Program(); $program->calculate(); ``` 虽然能够满足需求,但假设另外一个地方也需要用到计算,那么你这部分的代码无法直接被其他人调用,这个时候我们需要对代码进行封装
查询作用域 全局作用域 全局作用域允许你对给定模型的所有查询添加约束。使用全局作用域功能可以为模型的所有操作增加约束。 软删除功能实际上就是利用了全局作用域功能 实现一个全局作用域功能只需要定义一个实现Illuminate\Database\Eloquent\Scope接口的类,该接口只有一个方法apply,在该方法中增加查询需要的约束
## WSL2&Ubuntu 安装 PHP 开发环境 - 更新并升级 ``` sudo apt update sudo apt upgrade ``` - 安装 nginx ``` sudo apt install nginx ``` 验证 nginx 配置 `nginx -t` 报错: ``` nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied) 2020/12/16 16:47:58 [warn] 19050#19050: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 2020/12/16 16:47:58 [emerg] 19050#19050: open() "/run/nginx.pid" failed (13: Permission denied) nginx: configuration file /etc/nginx/nginx.conf test failed ``` 原因是当前用户权限不足 `su root` 切换到 root 即可 `service nginx start` 启动服务
1:打开laradock/.env配置文件 WORKSPACE_INSTALL_WORKSPACE_SSH=true 将其改为true,然后重新build workspace 2:打开shell工具连接workspace
1:composer安装laravel-log-viewer 2:在config/app.php的providers添加服务 3:在路由器中添加路由 4:创建view文件 5:在config/logging.php新增一个自定义配置 6:测试
在实际开发中肯定遇到过项目用不同的laravel版本,服务器也是用不同的php版本 导致本地跑项目的时候会存在php版本不兼容的问题,想着能不能用laradock配置多版本php共存 在网上找了很久没有能直接拿到就用的,不过在其中却得到一些启发
1:在laradock/nginx中新建一个vhost文件 2:打开laradock目录下的docker-compose.yml新增一条nginx配置信息 - ${NGINX_VHOST_PATH}:/etc/nginx/vhost 3:打开laradock目录下.env文件新增新增一条变量信息 NGINX_VHOST_PATH=./nginx/vhost/ 这样就可以把laradock目录下的nginx里的vhost文件挂载到nginx容器里