一、简介
1.MVC框架
1)PHP应用程序的开发形式
A.直接使用PHP语言进行面向过程的网页开发
B.使用面向对象形式
C.使用MVC框架 极大的提高生产力
2)MVC框架基本思想
A.把应用程序强制性的划分成三部分
a)模型层
b)视图层
c)控制器层
3)常用的MVC框架
A.TP
B.COdeIgniter
C.laravel
D.symfony
E.zend framwork
F.YII
二、laravel准备工作
1.PHP开发程序
2.php_fig
1)官方网站:http://www.php-fig.org/
2)作用:制定一系列PHP开发规范,是未来PHP框架所需要遵循的规范
3)包含的内容
A.PSR-0
B.PSR-1
C.PSR-2
D.PSR-3
E.PSR-4
3.composer
1)官方网站:http://getcomposer.org/
2)安装
A.php环境要求:php5.4以上
B.php扩展支持:openssl扩展
C.php.exe文件路径
3)使用
A.通过命令下载资源
a)require直接下载依赖库,同时把依赖库配置信息写入到composer.json文件中
b)install直接按照composer.json配置文件指明,下载依赖库
B.借助配置文件下载资源
a)require配置项
1."库完整名称":"版本号"
C.使用下载到的资源
a)下载到的外部库,会自动位于当前目录下的vender目录中
b)使用下载资源时,直接在应用程序入口文件中,引入'vender/autoload.php'文件,就可以直接使用外部库和命名空间
4.参考网站
1)http://laravel.com/
2)http://www.golaravel.com/
3)http://laravel-china.org/
4)https://github.com
5)http://stackoverflow.com/
6)http://baigoogledu.com/
三、安装laravel
1.命令:composer
create-project laravel/laravel --prefer-dist
2.laravel/laravel和laravel/framwork
1)laravel/laravel:laravel框架的示例程序,已经包含laravel框架源代码和其他的外部库
2)laravel/framwork:仅仅laravel框架源码
3.目录结构
1)app目录:应用目录
2)config:配置文件
3)database目录:数据库迁移migrate'
4)public:入口文件|静态资源文件
5)resource:视图文件
6)vendor:外部库(包含laravel框架源码)
7).env:laravel框架配置
4.运行第一个laravel程序
1)直接运行:通过url访问public目录
2)配置虚拟主机:phpstudy配置
A.站点管理器
B.监听端口号配置
四、数据库迁移
1.数据库迁移简介
1)migrate简介
A.方便团队开发,一次更改,团队成员都会受到影响
B.直接使用PHP代码,而不是使用sql语句来操作数据库
2)命令:php artisan migrate
3)删除自带的用户认证模块:php artisan
fresh
4)配置数据库账号信息:.env文件
2.创建msg数据表
1)创建数据库文件
A.目录:database\migrations
B.年_月_日_时分秒_create_表名_table.php
2)migrate
3.参考网站:
1)www.cnblogs.com/huangbx/p/laravel_3.html
2)laravel-china.org/docs/5.0/migrations
3)segmentfault.com/a/1190000002584573
五、数据库填充
1.创建模型类
1)一个数据库模型类对应一个数据表
2)目录:app/目录下直接创建
3)文件名:表名.php
A.表名首字母大写,并且去掉s后缀
B.比如msgs数据表,所对应的模型文件为Msg.php
4)模型类结构:类名extends Model
2.数据填充
1)数据填充文件
A.位置:database/seeds/
B.文件名:表名TableSeeder.php
C.数据填充文件基本结构 类名extends
Seeder
2)执行数据库填充命令
A.在databaseSeeder中调用
B.php artisan db:seed
C.可能会出现问题
a)引入类完成命名空间名
b)使用composer命令composer dump-autoload
六、路由功能
1.应用程序目录结构
1)app目录:应用程序核心目录
A.http目录:控制器文件目录,路由文件目录
B.模型文件:默认情况下在app/下
2)config目录:应用程序配置文件目录
A..env配置文件:给出最常用的配置,这些配置会被config目录中的配置文件调用
3)database:数据库迁移
4)public:应用程序入口文件,静态资源等(js.css.图片等)
5)resource:视图文件目录
6)storage:应用程序动态生成日志缓存生成视图文件等目录
2.路由功能使用
1)作用:把用户的http请求交给指定的控制器或者功能来处理它
2)路由三种常见形式
A.直接http请求类型路由
a)Route::get('url信息','处理的逻辑地址或功能代码')
b)Route::put('url信息','处理的逻辑地址或功能代码')
c)Route::post('url信息','处理的逻辑地址或功能代码')
d)Route::delete('url信息','处理的逻辑地址或功能代码')
B.Resource路由restful路由
a)Route::resource('url信息','处理的逻辑地址或功能代码')
C.Controller控制器路由
a)Route::controller('url信息','控制器名称')
3)路由的处理
A.把路由的处理交给控制器的某个动作处理
B.直接处理路由(闭包函数)
4)路由参数
A.Route::get('view|{id?}',function($id){
a)return 'msg/view/'.$id;
B.})
3.参考网站
1)http://www.golaravel.com/laravel/docs/5.0/routing
七、控制器
1.创建控制器类
1)手工创建
A.目录:app/http/controllers/
B.文件名:控制器名Controller
C.需要继承laravel框架控制器
2)artisan命令行创建:php artisan make:controller控制器名
A.要使用artisan命令时必须在laravel根目录下进行
3)说明:标准restful形式URL
A.index()
B.create()
C.store()
D.show()
E.edit()
F.update()
G.destroy()
2.控制器和路由
1)为控制器绑定路由时,可以直接使用http请求形式的路由
A.每一个url绑定到某一个动作上
B.Route::get('view|{id?}',MsgController@index)
2)RESTful形式的路由(只支持7中动作)
A.Route::resource('msg',MsgController)
3)隐式控制器路由
A.Route::controller('msg',MsgController)
B.控制器中需要get方法名
a)getIndex()---/index
八、视图
1.控制器中加载视图
1)直接使用return '字符串';返回
2)在控制器中返回视图文件
A.return view('视图文件名')
B.注意:视图文件默认位于resource/view下
2.控制器传递数据给视图
1)传统形式:view('视图文件')->with('k','v')
2)魔术形式:view('视图文件')->withName('v')
3.blade模板
1)视图文件可以是php原生代码文件,也可以使用laravel自带的blade模板
2)blade模板
A.命名:文件名.blade.php
B.支持layout布局、原生php代码、blade标签等{{}}
C.layout布局
a)@yield
b)@extends @endextends
c)@section
d)@foreach @endforeach
九、留言板示例
1.控制器中创建动作
1)动作和路由要有绑定
2)读取数据、显示视图(把数据传递给视图)
2.定制路由:基本http请求
3.创建视图文件
1)视图文件
2)视图文件中实现控制结构:循环、选择
4.从数据库中读取数据
1)模型类基本结构
2)如何获取所有数据
A.获取到的数据我们可以使用foreach循环结构依次处理每一个对象
5.添加留言
1)CSRF保护
A.
name='_token' value="{{ csrf_token() }}">
2)接收表单数据
A.路由问题
a)当前动作只需要视图,可以直接使用闭包形式,其他使用控制器动作形式
B.使用request::input()接收数据
3)重定向
A.redirect('url')
B.redirect()->route('路由名称')
6.删除留言
1)模型类::destroy(主键)