学习php当中的感觉

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

语法

php不愧是世界上最好的语言(手动滑稽).php内置了 大量的函数所以开发起来还是比较方便的函数默认是按值传递而不是引用传递这点与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自己也没弄太懂,实现思路为用户登录

Post /login 

成功返回:{ 
   token:"xxx", 
   name:"xxx", 
   "role":xxx 
} 

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

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

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

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

Get /admin/user 

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

laravel目录

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

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

通过.来引入

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

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

public function register(Request $request){ 

} 

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

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 中间件目录需要明确声明函数

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

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

数据库迁移

迁移就是使用

php artisan make:migration create_users_table 

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

php artisan migrate 

来运行迁移.

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

数据库查询

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

坑待填