当前位置: 首页 > news >正文

Yii - [新]项目开发流程指南

1.应用场景

主要用于使用Yii 快速进行「新」项目开发, 借助该指南能按部就班,合理高效地落地项目/服务。

2.学习/操作

1.文档阅读

Yii Framework 中文网 - 文档手册 - 视频教程 - 扩展下载

Yii 2.0 权威指南 | Yii PHP Framework -- 国外官方-中文版

2.整理输出

Yii
1. 开发项目指南

    1.1 项目结构组织
        适用于:小项目开发/新项目开发

        在设计良好的应用中,控制器很精练,包含的操作代码简短; 
        如果你的控制器很复杂,通常意味着需要重构, 转移一些代码到其他类中。

        归纳起来,控制器
        可访问 请求 数据;
        可根据请求数据调用 模型 的方法和其他服务组件;
        可使用 视图 构造响应;
        不应处理应被模型处理的请求数据;
        应避免嵌入HTML或其他展示代码,这些代码最好在 视图中处理.

        简单说,项目采用框架的默认的目录结构
        controllers
        models
        views

        至于
        repositories // 当业务逻辑重复比较多的时候,可以抽离出来,放到该目录下
        components // 可以在使用到新的component时使用
        extensions // 可以在使用到新的extension时使用

      

        可以在后面需要增加,小重构时再使用
        至于components,extensions之间的区别 ---------- TBD

2. 性能考虑

        1. 请尽量不要注册太多引导组件【框架启动时】只有他需要在 HTTP 请求处理的全部生命周期中都作用时才需要使用它。
        

        2. 在生产环境中,可以开启字节码缓存,比如 APC, 来进一步最小化加载和解析 PHP 文件所需的时间。
        

        3. 一些大型应用都包含有非常复杂的应用配置, 它们会被分割到许多更小的配置文件中。 「文件放到一个文件中和放到多个文件中的差别,和性能开销?TBD」
        此时,可以考虑将整个配置数组缓存起来, 并在入口脚本创建应用实例之前直接从缓存中加载 「意思是放到内存中,如:redis?但是会存在网络开销吧」

        

        4. 在开发复杂的 Web 应用程序时,优化 URL 规则非常重要,以便解析请求和创建 URL 所需 的时间更少。
        通过使用参数化路由,您可以减少 URL 规则的数量,这可以显著提高性能。
        当解析或创建URL时,URL manager 按照它们声明的顺序检查 URL 规则。 
        因此,您可以考虑调整 URL 规则的顺序,以便在较少使用的规则之前放置更具体和/或更常用的规则。 -- 越早匹配越好,执行概率越大的放到前面

        如果多个 URL 规则使用相同的前缀,你可以考虑使用 yii\web\GroupUrlRule, 这样作为一个组合,URL管理器会更高效。 --- Laravel也是如此
        特别是当应用程序由模块组合而成时,每个模块都有各自的 URL 规则且都有各自的模块 ID 作为前缀。

后续补充

...

3.问题/补充

TBD

4.参考

参见上面文档列表

后续补充

...

相关文章:

  • 优秀的你在哪里?《阿里云SLS团队2023校园招聘》
  • 【图像分类】基于matlab多种特征结合支持向量机脑MRI肿瘤分类【含Matlab源码 2149期】
  • 06-使用pytorch实现手写数字识别
  • 高级特效开发阶段学习总结
  • WPF 简单的ComboBox自定义样式。
  • Servlet 规范和 Servlet 容器
  • 切面的优先级、基于XML的AOP实现
  • 【Java面试宝典】常用类中的方法重写|equals方法与逻辑运算符==的区别
  • 重构的原则
  • Restyle起来!
  • 【Unity3D日常BUG】Unity3D中出现“unsafe code 不安全的代码”的错误时的解决方法
  • Node中实现一个简易的图片验证码流程
  • java-Lambda表达式
  • Robotics System Toolbox中的机器人运动(7)--RRT规划避障路径
  • 和一个海归的博士聊人生
  • Android单元测试 - 几个重要问题
  • Apache Spark Streaming 使用实例
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Spring框架之我见(三)——IOC、AOP
  • underscore源码剖析之整体架构
  • WebSocket使用
  • windows下mongoDB的环境配置
  • 简单基于spring的redis配置(单机和集群模式)
  • 使用putty远程连接linux
  • 事件委托的小应用
  • 数据仓库的几种建模方法
  • 原生JS动态加载JS、CSS文件及代码脚本
  • MyCAT水平分库
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 函数计算新功能-----支持C#函数
  • 说说我为什么看好Spring Cloud Alibaba
  • ###STL(标准模板库)
  • (arch)linux 转换文件编码格式
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .Net 应用中使用dot trace进行性能诊断
  • .NET上SQLite的连接
  • .NET项目中存在多个web.config文件时的加载顺序
  • .NET中两种OCR方式对比
  • @Transactional 详解
  • [20180224]expdp query 写法问题.txt
  • [acwing周赛复盘] 第 94 场周赛20230311
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测
  • [EFI]ASUS EX-B365M-V5 Gold G5400 CPU电脑 Hackintosh 黑苹果引导文件
  • [LeetCode] Sort List