...
咱们团队的多语言编程规范小册子
yix 著
概述

![代码风格指南](/im/sys/simple-flower.jpg) ** 任何一个傻瓜都能写出计算机可以理解的程序,只有写出人类容易理解的程序才是优秀的程序员 – Martin Fowler ** 许多优秀的编程项目需要开发团队长期维护升级,随着项目推进,项目管理难度会增大,因管理维护产生的时间和金钱成本也会大幅增加。 作为程序员,能做出的最直观的贡献是输出易于理解的代码,增强代码一...

序言

![代码风格指南](/im/sys/simple-flower.jpg) ** 任何一个傻瓜都能写出计算机可以理解的程序,只有写出人类容易理解的程序才是优秀的程序员 – Martin Fowler ** 许多优秀的编程项目需要开发团队长期维护升级,随着项目推进,项目管理难度会增大,因管理维护产生的时间和金钱成本也会大幅增加。 作为程序员,能做出的最直观的贡献是输出易于理解的代码,增强代码一...

工具链

出于开发成本考虑,本站后端开发语言以php为主,采用了php+vue的技术路线。 脚本为主,用vsode开发很方便。 至于为什么不用JetBrains家的webstorm或者phpstorm,原因仅仅是因为许多团队像我们一样既不愿意购买他们的正版又不喜欢用破解版,所以免费又好用的vscode成为了首选。 其他相关的比如mariadb、centos、apache等工具或环境的选择,大多是出于入...

我们有哪些开发成果呢?

我们团队在成长过程中完成了许多大大小小的项目,本文挑选几个比较有代表性的成果讲一讲。 1、团队在互联网上线一众小工具,比如九型人格在线测评、考试搜题器、IP小助手、翻译小助手、税后工资计算小助手等。小工具每天免费为大量访客提供帮助。仅以[九型人格专业版](https://www.yixzm.cn/appraisal/character/jxrg_pro/homepage.html) 为例,上线至...

编程风格指南文档结构

文档分三个部分,第一部分是本站相关项目涉及编程语言都要遵守的公共风格;第二部分是各编程语言特色编程风格;第三部分是规约。 ## 目录 [序言](/code_style_guide/common/introduce.html) [工具链](/code_style_guide/common/tool_chain.html) [我们有哪些开发成果呢?](/code_style_guide/com...

查询构造器

查询构造器 ===== 作为ORM中最核心的部分,`ThinkORM`查询构造器为数据库查询提供了统一、安全、灵活并且优雅的查询机制,内置支持PDO参数绑定,可用于执行大多数数据库的CURD操作,并封装了包括聚合查询、分页查询、时间查询等常用查询方法,还可以配合原生查询语句完成复杂的查询。...

查询数据

查询数据 ==== 查询单个数据 ------ 查询单个数据使用`find`方法: ``` // table方法必须指定完整的数据表名 Db::table('think_user')->where('id', 1)->find(); ``` 最终生成的SQL语句可能是: ``` SELECT * FROM `think_user` WHERE `id` = 1 LIMIT 1 ``` ...

添加数据

添加数据 ==== 添加一条数据 ------ 可以使用`save`方法统一写入数据,自动判断是新增还是更新数据(以写入数据中是否存在主键数据为依据)。 ``` $data = ['foo' => 'bar', 'bar' => 'foo']; Db::name('user')->save($data); ``` 或者使用 `insert` 方法向数据库提交数据 ``` $data = ...

更新数据

更新数据 ==== 更新数据 ---- 可以使用save方法更新数据 ``` Db::name('user') ->save(['id' => 1, 'name' => 'thinkphp']); ``` 或者使用`update`方法。 ``` Db::name('user') ->where('id', 1) ->update(['name' => 'thinkphp']); ``` ...

删除数据

删除数据 ==== 删除数据 ---- ``` // 根据主键删除 Db::table('think_user')->delete(1); Db::table('think_user')->delete([1,2,3]); // 条件删除 Db::table('think_user')->where('id',1)->delete(); Db::table('think_user')->wh...

查询表达式

查询表达式 ===== 查询表达式 ----- 查询表达式支持大部分的SQL查询语法,也是`ThinkPHP`查询语言的精髓,查询表达式的使用格式: ``` where('字段名','查询表达式','查询条件'); ``` 除了`where`方法外,还可以支持`whereOr`,用法是一样的。为了更加方便查询,大多数的查询表达式都提供了快捷查询方法。 表达式不分大小写,支持的查询表达式有...

聚合查询

聚合查询 ==== 在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数、所有用户的最大积分、用户的平均成绩等等,ThinkPHP为这些统计操作提供了一系列的内置方法,包括: 方法说明count统计数量,参数是要统计的字段名(可选)max获取最大值,参数是要统计的字段名(必须)min获取最小值,参数是要统计的字段名(必须)avg获取平均值,参数是要统计的字段名(必须)s...

分页查询

分页查询 ==== 分页实现 ---- `ThinkPHP`内置了分页实现,要给数据添加分页输出功能变得非常简单,可以直接在`Db`类查询的时候调用`paginate`方法: ``` // 查询状态为1的用户数据 并且每页显示10条数据 $list = Db::name('user')->where('status',1)->order('id', 'desc')->paginate(10)...

时间查询

时间查询 ==== 时间比较 ---- > 框架内置了常用的时间查询方法,并且可以自动识别时间字段的类型,所以无论采用什么类型的时间字段,都可以统一使用本章的时间查询用法。 ### 使用`whereTime`方法 `whereTime`方法提供了日期和时间字段的快捷查询,示例如下: ``` // 大于某个时间 Db::name('user') ->whereTime('birthday'...

高级查询

高级查询 ==== 快捷查询 ---- 快捷查询方式是**一种多字段相同查询条件**的简化写法,可以进一步简化查询条件的写法,在多个字段之间用`|`分割表示`OR`查询,用`&`分割表示`AND`查询,可以实现下面的查询,例如: ``` Db::table('think_user') ->where('name|title','like','thinkphp%') ->where('crea...

视图查询

视图查询 ==== 视图查询可以实现不依赖数据库视图的多表查询,并不需要数据库支持视图,是JOIN方法的推荐替代方法,例如: ``` Db::view('User', 'id,name') ->view('Profile', 'truename,phone,email', 'Profile.user_id=User.id') ->view('Score', 'score', 'Score.us...

子查询

子查询 === 首先构造子查询SQL,可以使用下面三种的方式来构建子查询。 使用`fetchSql`方法 -------------- fetchSql方法表示不进行查询而只是返回构建的SQL语句,并且不仅仅支持`select`,而是支持所有的CURD查询。 ``` $subQuery = Db::table('think_user') ->field('id,name') ->where...

原生查询

原生查询 ==== `Db`类支持原生`SQL`查询操作,主要包括下面两个方法: > 原生查询仅支持Db类操作,不支持在模型中调用原生查询方法(包括`query`和`execute`方法)。 `query`方法 --------- `query`方法用于执行`SQL`查询操作,返回查询结果数据集(数组)。 使用示例: ``` Db::query("select * from think...

获取查询参数

获取查询参数 ====== 获取数据库查询参数 ========= 有时候我们的查询条件是不固定的,这时候我们可以通过`getOptions()`获取最终的查询条件,这样我们可以很方便的对这次查询生成一次单独的缓存。 ``` $model_list = User::order(); if (!empty($create_time)) { $model_list->where('create_...

1 2 3 4 5 6 7 8 9