请选择 进入手机版 | 继续访问电脑版
查看: 2339|回复: 0

[php] Git和Laravel的学习心得

[复制链接]

2

主题

2

帖子

16

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
16
发表于 2016-11-11 16:47:30 | 显示全部楼层 |阅读模式
这一个月的学习总结

1. Git
Git 部署:
linux : sudo apt-get install git
yum install git
windows : 下载git客户端

部分命令:
git config --global user.name "name" : 设置提交git的用户名
git config --global user.email "email" : 设置提交git的email

git init : 初始化, 对工作目录下的文件进行版本控制.
git remote add origin url : 将项目添加到远程服务器端.
git clone url project_name : 克隆已有项目到本地.
git status : 查看版本状态, 可查看修改的文件和新添加的文件有哪些

git add file_name: 将新文件和修改的文件加入缓存, 记录版本历史.
git commit -m "message" : 提交已经add的缓存文件, 并添加注释
git add . : 添加所有新文件和修改的文件
git commit -a -m "message" : 把所有修改的文件添加到缓存并commit并且添加注释
git push : 将本地commit的文件更新到远程仓库
--- git push origin test:master : 更新本地test项目到master分支
--- git push origin test : 将本地test分支push到远程仓库
git pull : 将本地的项目与远程仓库同步.

git log : 查看commit的历史日志
git diff : 查看还没有缓存的更新.

git branch (-r): 查看本地分支(远程分支)
git branch name : 创建本地分支
git checkout name :  切换到name分支
git checkout -d name : 删除已经参与了合并的分支
git checkout . : 还原代码, 回滚到未提交之前

在根目录添加.gitignore文件, 可以添加哪些文件不受版本控制

2. Laravel 5.3
1) 安装:
php >=5.6.4
composer create-project --prefer-dist laravel/laravel project_name
2) CSRF  VerifyCsrfToken中间件自动验证token
3) 日志   Facades\Log   Log::info()
4) 依赖注入

5) 路由
基本路由:



使用中间件:

6) 控制器  
普通控制器:

RESTful:
{{ method_field('PUT') }}
用URL来表示对象 (参数).
用HTTP请求协议完成逻辑, get  查询, post 创建, put 更新, delete 删除.



7) 利用Request依赖注入获取http请求及过滤.

创建表单请求

8) L的Eloquent ORM


3. Laravel 与 ThinkPHP
1) Laravel 属于重型框架, TP属于轻型, 框架体积就可以看出, L的类库之多,使用composer可以添加各式类库, 然后根据文档调用, 但是TP需要自己重复造轮子, 类库较少(用的人多, 钻研的人少).
2) L使用PHP5.5以上的许多新特性 闭包 trait 命名空间, 类依赖相当完善, 而TP在这些方面还有很大欠缺(3.2有命名空间, 基本等于文件路径, 主要在控制器中使用), TP5才引入trait.
3) L对数据库的封装, ORM的设计, 使得开发事半功倍, 但是根据测试, 其运行速度也较慢, 占用内存比TP大. 安装好框架后, 使用其集成的Bootstrap可以快速进行开发.
4) L拥有对模型高度封装的ORM设计, 进行数据库, 单表, 多表之间的操作时, 方便快捷, 模型与控制器之间的关系更加协调, 虽然TP也是MVC, 但是其在M与C之间, 对于多表 或者 对数据库进行一些复杂时, 其弊端就特别明显, 功能不完善, 比如要操作进行几个表的联查, L把几个表的模型创建好, belongsTo, hasMany 这些根据外键一调用就出结果, 而TP(3.2)需要在主要模型中使用D, M方法实例化模型, 然后调用这个模型那个模型, 然后各种 链式操作, join操作, 较复杂.
5) L优雅的使用闭包, 在路由 数据库操作时都有体现, 防止变量污染, 代码简洁明了, 而TP5才开始使用闭包, 路由基本抄袭L, 而数据库操作也基本抄袭......


6) L拥有路由完全自定义, 而TP采用其默认PATH_INFO模式,  serverName/controller/action 是比较愚蠢的, 更愚蠢的是url还要分大小写, 这是我在上传到linux之后遇到的超级大坑之一, 有时会造成程序严重bug
7) L有完善的中间件, 而这是TP没有的, 所有验证过滤自己写...
8) L在做表单时对CSRF特别注重, 而TP没有, 也必须在自己写过滤.
9) 在使用L的时候, 我觉得php原生函数还是较少用到的, 而TP开发时 会用到极多的原生函数..
10) L的.env配置文件很好的解决了开发环境的不同, 而TP需要在config里修改配置, 虽然都是修改配置, 但是L的更加适用和方便.
11) L的控制台命令 php artisan 可以帮助开发生成主要文件, 并且处理程序, 如 model controller migration 等, 之前很害怕命令生成, 现在觉得这其实很好用, 这也是TP没有的.
12) L的migration更是让团队合作更加方便, 对数据库的操作和修改在migration中进行, 只要migrate一下就使得团队开发的数据库可以同步.

4.数据库设计
一来就设计了一个数据库, 之前没有设计过那么大的, 所以从中更加体会到了数据库设计的规范:
1) 三大范式的使用
原子性: 数据不可再分
唯一性: 主键约束
独立性: 消除传递依赖

2) 外键约束
创建表与表之间的联系, 方便多表查询, 利用Eloquent ORM可以利用L的封装快速查询出多表结果





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

展开
快速回复 返回顶部 返回列表