laravel框架学习笔记-1

学习php当中的感觉

一周就上手php了.从前端转来学php并没遇到太大的问题,毕竟都是弱类型语言,SQL这块因为是个新产物所以还得慢慢品尝.
大概的感觉就是

语法

php不愧是世界上最好的语言(手动滑稽).
php内置了 三个sx 大量的函数所以开发起来还是比较方便的
函数默认是按值传递而不是引用传递这点与js不同

win下的编码问题

在win下操控路径必须得用iconv来转gbk 否则会遇到莫名其妙的bug Unix大法好

nginx

php的转发基本上靠这货了.为啥不是apache? 因为我喜欢nginx. 或者用nginx转发Apache也行 哈哈
nginx中涉及到大量的正则,正则是我的弱项.用了就忘- -还是得去反复使用

数据库操作

千万不要用mysql直接操作数据库 用mysqli 并且用mysqli的prepare语句来进行数据库操作 否则会遇到SQL注入问题.
sqlmap表示 prepare是啥?

后端验证

在数据验证这块得做两个验证,前端一个,着重后端验证数据.否则出啥问题就GG了

为什么是laravel?

上手PHP后就直接去用laravel框架了..为了 情怀 还是因为这个框架是跟express比较相近的..

大概设计思路

自己设计了个homePage并且要支持数据crud所以用php直接上了.
整体架构采用
vue.js+laravel+mysql
并且使用restfulApi+token来进行前后端分离.

token设计

token自己也没弄太懂,实现思路为
用户登录

1
2
3
4
5
6
7
Post /login
成功返回:{
token:"xxx",
name:"xxx",
"role":xxx
}

其中登录时候token包含了四个属性

1
["name"=>$user[0]->name,"time"=>time(),"exp"=>time()+$exp,"role"=>$user[0]->role]

登录成功后把此次token添加进session

在访问后台需要使用附带上token

1
Get /admin/user

并且使用当前的token与session中的token做一个对比 如果正确并且存在则放任通行, 如果不存在则返回false并且通知客户端跳转到登录页面重新登陆获取token

laravel目录

config/app.php 环境目录与配置
app.php下aliases是用来给类引入别名的
如果需要使用app下的参数则需要使用函数

1
$exp=config("app.jwtTime");

通过.来引入

app/Http/Controller 控制器目录
在写控制器的时候需要使用命名空间相应的命名 如果引入库的话需要使用use (话说是不是废话了- -)
class需要继承Controller

默认 request是没有引入的 需要使用use Illuminate\Http\Request; 并且在function的时候注入依赖

1
2
3
public function register(Request $request){
}

当在控制器中使用require时 如果需要new一个对象则需要使用命名空间

1
2
3
4
5
6
define("geePath",realpath(__DIR__."/../../../vendor/gee-team/gt-php-sdk/"));
require_once (geePath."/lib/class.geetestlib.php");
require_once (geePath."/config/config.php");
$GtSdk = new \GeetestLib(CAPTCHA_ID, PRIVATE_KEY);//使用命名空间

app/Http/Middleware 中间件目录
需要明确声明函数

1
2
3
pubcli function handle ($request,$next){
return $next($request);
}

  • -这里就被坑了 需要明确的返回$next()

数据库迁移

迁移就是使用

1
php artisan make:migration create_users_table

来创建一个迁移在/database/migrations 下
然后执行

1
php artisan migrate

来运行迁移.

迁移就像数据库的版本控制,允许团队简单轻松的编辑并共享应用的数据库表结构,迁移通常和Laravel的结构构建器结对从而可以很容易地构建应用的数据库表结构。
实际上就是把数据库做一层封装,方便Laravel来操控

数据库查询

Laravel有自己的数据库查询 具体看手册就行了

坑待填