Laravel开发框架:
初步认识Laravel
Laravel环境基础:
首先我们要确保开发环境的正确部署,Laravel的环境要求:
PHP 5.5.9+,MySQL 5.1+。
我安装的是WAMP开发集成环境,然后将官网中的laravel包解压到www目录下即可。
配置好服务器,打开www下的laravel然后将http://localhost/laravel/public的地址输入就可以了,如出现以下图示Laravel编程基础
读懂Laravel 5 中文文档,有配置完善的 PHP + MySQL 运行环境,懂得 PHP 网站运行的基础知识:
1. https://doc.laravel-china.org/docs/5.0
2. http://www.golaravel.com/laravel/docs/5.0/
- Laravel核心概念:https://laravel.com/docs/5.3/container
路由
- 路由实例和基本参数
基本get路由
Route::get('/', function(){
return 'Hello World';
});
基本post路由
Route::post('/', function(){
return 'Hello World';
});
注册一个可以响应任何HTTP动作的路由
Route::get('/', function(){
return 'Hello World';
});
路由与控制器连接
Route::get('/', 'HomeController@index');
参数:
Route::get('user/{id}', function($id)
{
return 'User '.$id;
});
实例参考
- 路由分组和别名
Usay之中部分路由:
`Route::any(‘api/signup’, function () {
//实例化新model
return user_ins()->signup();
});
Route::any(‘api/login’, function () {
return user_ins()->login();
});
Route::any(‘api/logout’, function () {
return user_ins()->logout();
});
Route::any(‘api/question/add’, function () {
return question_ins()->add();
});
`
控制器
-
控制器实例和基本参数
- http://blog.youkuaiyun.com/xd43100678/article/details/24375393
- 路由缓存
HTTP session
- 先决条件
Laravel 中 Session 配置文件位于 config/session.php ,默认设置如下:
return [
'driver' => env('SESSION_DRIVER', 'file'),
'lifetime' => 120,
'expire_on_close' => false,
'encrypt' => false,
'files' => storage_path('framework/sessions'),
'connection' => null,
'table' => 'sessions',
'lottery' => [2, 100],
'cookie' => 'laravel_session',
'path' => '/',
'domain' => null,
'secure' => false,
]; 响应实例和基本参数
driver 配置项用于设置Session存储方式,默认是 file ,即存储在文件中,该文件位于 files 配置项配置的路径,即 storage/framework/sessions 。此外Laravel还支持其它存储方式:database :将Session数据存放到指定数据表中,该数据表由配置项 table 设置
memcached :将Session数据存放到Memcached中
redis :将Session数据存放到Redis中
array :将Session数据存放到数组中,该配置仅用于测试环境
要修改 driver 配置,需要去项目根目录下 .env 文件修改其中的 SESSION_DRIVER 选项。
lifetime 配置项用于设置Session有效期,默认为120分钟。
expire_on_close 配置项用于设置是否在浏览器关闭时立即让Session失效。
encrypt 配置项用于配置Session数据是否加密。
lottery 配置项用于配置回收Session存放位置。
cookie 配置项用于配置存放Session ID的Cookie名称,默认是 laravel_session。
path 配置项用于配置存放Session ID的Cookie存放路径,默认为项目根目录。
domain 配置项用于配置存放Session ID的Cookie存放域名。
secure 配置项用于配置是否只有在HTTPS协议下发送Session ID到服务器。
使用数据库存储Session
需要将 .env 文件中的SESSION_DRIVER修改为 database ,然后将 config/session.php 中 connection 配置修改为 mysql (如果使用的数据库是MySQL的话),该配置值对应 config/database.php 中 connections 相应数据库配置项,也可以使用默认值 null 不做修改。
然后需要在项目根目录下运行如下Artisan命令:
php artisan session:table
composer dump-autoload
php artisan migrate
生成存放Session的数据表 sessions 。
使用Memcached/Redis存储Session
使用Memcached存储Session只需将 .env 文件中SESSION_DRIVER修改为 memcached 即可。
使用Redis存储Session需要将 .env 文件中SESSION_DRIVER修改为 redis ,然后将 config/session.php 中 connection 配置修改为 default (对应 config/database.php 中 redis 主机配置项),当然也可以使用默认值 null 不做修改。
这里我们使用默认配置不做改变(使用文件存储Session)。
验证
表单请求验证
` //检查用户是否登陆if(!user_ins()->is_logged_in()) return ['status' => 0, 'msg' => 'login required']; //检查参数中是否存在问题id和answer内容 if(!rq('question_id')|| !rq('content')) return ['status' => 0, 'msg' => 'content or qustion_id required']; //检查问题id是否存在 $question = question_ins()->find(rq('question_id')); if(!$question) return ['status' => 0, 'msg' => 'question not exist']; //检查answer是否回答过 $answered = $this->where([ 'question_id' => rq('question_id'), 'user_id'=> session('user_id')]) ->count(); if($answered) return ['status' => 0, 'msg' => 'duplicate answers']; //保存数据 $this->content = rq('content'); $this->question_id= rq('question_id'); $this->user_id= session('user_id'); return $this->save() ? ['status' => 1, 'id' => $this->id] : ['status' => 0, 'msg' => 'db insert failed'];
`
加密
- 加密器快速入门
`//加密密码除了Hash::make( password)还能bcrypt( password)
$hashed_password = Hash::make($password);
$user = $this;
$user->password = $hashed_password;
$user->username = $username;
if ($user->save())
return ['status' => 1, 'id' => $user->id];
else return ['status' => 0, 'msg' => 'db insert failed'];
}
`
数据库
- 读与写的连接
app/config目录下,database.php包含数据库的配置,打开并修改mysql部分为如下:
- 数据库事务
建立一个迁移
在cmd里面,定位到 laravel所在目录,执行如下命令:
php artisan migrate:make –create=articles
其中,–create=articles 就表示建立数据表
这样,在 app/database/migrations/目录下,会生成一个迁移文件。文件名是 时间编号+create_articles_table.php本例是:2015_01_25_144256_create_articles_table.php 迁移语法检查手册
检查手册收的