laravel 开发流水

43 篇文章 0 订阅
27 篇文章 0 订阅

  • 步骤
    • 初始化
      • composer create-project laravel/laravel blog57 --prefer-dist
      • npm install 安装前端资源
      • vendor/bin/phpunit 配置测试
      • composer test 执行测试命令
    • 建表及模型
      • make:model -m 表结构及模型
      • make:factory PostFactory 模型工厂文件
      • make:seeder PostsTableSeeder 填充类文件
        1. 清理表数据
        2. 使用工厂方法填充指定条目
        3. DatabaseSeeder 进行填充调用
      • php artisan db:seed 填充初始化数据
    • 建路由及控制器
      • web.php 路由
      • make:controller 生成控制器
    • 模板指令与布局
    • tinker工具创建后台用户
      • php artisan tinker 通过该命令行与应用进行交互,而非直接操作数据库
    • 前端美化
      • 引入 DataTables 和 FontAwesome
        • npm install datatables.net-bs4 --save-dev
        • @import "~datatables.net-bs4/css/dataTables.bootstrap4" 引入CSS库
    • 文件上传
      • 配置本地文件系统
        1. php artisan storage:link
          • 在根目录下的 public 目录中创建一个软链 storage 指向 storage/app/public 目录
        2. 创建辅助函数文件
          • "files": ["app/helpers.php"] 配置自动加载
          • composer dumpauto 确保在命名空间下新建的类文件,被加入到自动加载文件
        3. 创建文件上传管理服务(一段通常的商业逻辑代码)
          • 检测文件MIME类型
            • composer search mime -t package 检索包
          • 创建管理
          • 请求验证类
    • 修改数据表列
      • composer require doctrine/dbal
    • 前端美化
      • 常用组件
        • Selectize.js 下拉框UI
        • Pickadate.js 日期
      • Laravel Mix 管理前端资源
        • 资源编译,合并,复制转移
        • mix.js().sass() 资源编译到指定目录
        • mix.combine([],dist) 资源文件合并
        • mix.copy() 资源文件复制
      • Clean Blog
        • 免费博客模板,美化博客前端页面 npm install startbootstrap-clean-blog --save-dev
        • 支持tooltip
    • 表单请求类
      • 职责单一性
      • 检查两个方面
        • 请求者是否有发送此顶请求的权限
        • 检查请求的内容是否合规
    • 模型
      • 设置器与获取器
        • getPublishDateAttribute, setPublishDateAttribute
      • 服务与控制器
        • 瘦控制器,肥模型
        • 参数在前,类型注入在后
    • 邮件队列
      • 邮件发送流程
        • 配置帐号密码,邮件服务器及端口,加密方式
        • 邮件内容构建,实现build方法构建
        • 使用tinker测试邮件发送,控制器内用Mail::to发
          • 发送方式
            • send(new ContactMail($data)) 同步发送
            • queue(new ContactMail($data)) 异步推送到队列任务
        • 关键:邮件内容的生成,Mail门面负责管理邮件发送,QQ使用465端口
      • 队列原理(两个进程,生产者/消费者)
        • 前台web请求负责将附件推送到队列
        • 队列任务在后台异步执行
        • 驱动
          • 对接口方法的实现
        • 用法
          • 修改队列配置,修改任务的推送方式(默认为同步)
          • QUEUE_CONNECTION 将队列的同步默认值,配置为指定的连接类型,比如database
          • 建立相应的数据表并迁移
            • php artisan queue:table
            • php artisan migrate
            • php artisan queue:work 执行队列(需手动登录到服务器)
          • 队列系统解决方案
            • Laravel Horizon 队列的查看管理
            • 自动处理队列
              • Supervisor 用 Supervisor 来管理 queue:listen 进程
              • 调度任务(小任务)
                1. 书写laravel任务调度命令
                  • 在kernel内使用Schedule类实例,关联queue:work命令
                2. 通常与linux服务器cronta调度命令结合,有点计划任务的味道
                3. 流程
                  • 借助服务器crontab调度 驱动–> laravel任务调度
                  • * * * * * php /path/to/artisan schedule:run 1>> /dev/null 2>&1
                  • php artisan schedule:run
              • 原理
                • 成为守护进程一部分,后台执行

实用功能实现思路

  • 垃圾评论解决方案
    • 验证码,黑白名单
    • 使用第三方评论系统
  • 分享方案
    • 借助第三方分享代码工具
    • 通过share.js来实现
  • Rss订阅
    • 使用suin/php-rss-writer生成Rss文件,依据RSS规范channel,item,rss
    • 创建通用逻辑RSS订阅服务
    • 临时性的内容使用缓存接口
  • 生成站点地图
    • SiteMap 服务 规范url,日期
    • 生成xml文件内容,使用缓存门面
    • cache使用流程
      1. has获取缓存
      2. 无缓存则生成缓存,并返回生成内容

笔记

  • httpOnly作用
    • 如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息
  • 419错误与中间件csrf验证有关
  • 用户退出流程
    • 退出guard
    • 使用session无效
    • 重定向到指定页面
  • 页面不合理布局也会导致操作失败
  • 服务
    • laravel中所谓的创建服务,通常就是将一段公用的逻辑代码,或称之为领域代码封装出去
    • 框架的服务提供者依据功能可分为:引导服务,管理服务,基础服务
    • static::call 在类方法体内使用,延迟静态绑定,它将使用的是运行时绑定调用类

redis

  • 工作模式:单进程,阻塞性;而memercache是多进程
  • 集合(set唯一性),字符串,字典hash,list(可进行切片操作)
  • 应用场景
    • 缓存,内存数据库
    • 消息代理,订阅发布(生产环境通常用专门MQ消息队列)
    • 不适合存储大尺寸对象存储 100kb以上的
  • redis 计数器应用场景
    • 频率控制:接口防刷,密码尝试次数限制
    • 数量统计:请求量统计
    • 数量控制:商品控制,奖励额度控制
  • 相关基本命令
    • 时限,计数操作,键读取判断
    • exists 判断key是否存在
    • set,get 存取
      • setnx key 存在则存值失败
    • incr, incrby -/+ 2 增加
    • expire mycounter 30 设置键的生存时间
    • ttl mycounter 查看键的生存时间

php7新特性

  • ?? NULL合并操作符
    • 从左往右第一个存在且不为 NULL 的操作数。
    • 如果都没有定义且不为 NULL,则返回 NULL。PHP7开始提供
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值