laravel框架入坑回顾
官方网站:https://laravel.com/
中文官网:https://laravel-china.org/docs/laravel/5.4
composer工具
中文网址:http://www.phpcomposer.com/
composer资源仓库或应用市场
linux下设置环境变量
vi /etc/profile
# 写下以下内容
linux下设置环境变量
xxx表示你要设置的环境变量的目录名称,连接用:
xxx表示你要设置的环境变量的目录名称,连接用:
linux设置完毕后,不会马上生效
source /etc/profile
配置就是立刻生效
查看php扩展------
在windows下php的扩展
同时也要开启如下扩展 php.ini文件
extension=php_openssl.dll extension=php_pdo_mysql.dll extension=php_mbstring.dll extension=php_fileinfo.dll extension=php_curl.dll extension=php_gd2.dll extension=php_soap.dll extension=php_mysqli.dll extension=php_sockets.dll
下载好composer.phar文件后再用命令生成bat文件,composer文件需要放在php设置的环境变量目录下,bat文件也会生成在这个目录下
echo @php "%~dp0composer.phar" %*>composer.bat
切换composer镜像
因国内和国外网络访问产生的差别,所做出的选择
全局配置————在命令窗口中(windows用户)或控制台(Linux、Mac 用户)并执行如下命令
composer config -g repo.packagist composer https://packagist.phpcomposer.com
注:composer网站问题,一定要切换为国内镜像,如有条件可使用vpn
windows 7以上,mac或linux系统,一定要考虑到权限的问题。
compsoer常用命令
composer self-update //更新
更新成功,如果你要回退可以使用,如下命令退出到更新之前的版本
composer self-update --rollback //回退可以使用
创建项目
命令 composer create-project --prefer-dist laravel/laravel testproject 5.4.* # 推荐 composer create-project laravel/laravel=5.4.* --prefer-dist mylaravel
不指定版本就会下载最新版
【版本具体设置】可选
1.0.2 # 明确版本 >1.0.2 # 大于1.0.2 >=1.0.2 # 大于等于1.0.2 <1.1|>=1.2 # 小于1.1 或 大于等于1.2 1.0.* # 执行1.0.的最高版本,与<1.1等效 >1.0,<2.0 # 大于1.0 并且 小于2.0 ~1.2 # >=1.2,<2.0 ~1.2.3 # >=1.2.3,<1.3 ^1.2 # >=1.2,<2.0 ^2.3 # >=2.3,<3.0 ^3.4.6 # >=3.4.6,<4.0.0 ~3.4.6 # >=3.4.6,<3.5.0 ",逗号"代表and并且关系 "|竖杠"代表or或的关系 ^:大版限制(封顶到当前版本顶级) ~:小版限制(封顶到当前版本的次版顶级) 版本问题: 一般的软件版本有3个位数,例如2.1.4,从左到右分为1位/2位/3位 3位:小bug调试 2位:功能更新 1位:大版本更新,兼容不好
修改composer.json中添加或修改软件包或版本则可以通过此命令来更新项目。
composer update [更新指定的包名称,可选,不写更新全部]
安装指定的包——这个命令需要在项目根目录下执行
自动加在更新
如果修改了composer.json文件或删除一些文件,建议手动执行autoload命令来让项目加载文件更新。
composer dump-autoload 或 composer dump
composer安装laravel
安装命令:
composer create-project --prefer-dist laravel/laravel=5.4.* weblaravel
也可以下载离线安装包
目录结构
1、app目录【重要目录】
项目的核心目录,主要用于存放核心代码,你所编写的代码绝大多数也会放到这里,如控制器、模型等。
模型也创建在这个目录下,进行手动创建分目录
2、bootstrap目录
laravel启动目录,目录包含了框架启动和自动加载设置的文件,autoload.php文件用于自动载入需要的类文件。
3、config目录【重要目录】
项目的配置目录,主要存放配置文件,比如数据库的配置。
app.php:项目主要配置文件
database.php:针对数据库的配置
4、database目录
目录包含了数据迁移及填充文件,就是使用文件的方式,来管理数据库,创建一个PHP文件,在文件中设计表结构,运行该文件,完成表的创建。
5、public目录【重要目录,主机目录】
laravel项目的web虚拟主机指定的目录,项目的入口文件和系统的静态资源目录(css,img,js,uploads)后期使用的外部静态文件(js、css、图片等)都需要放到Public目录下。
7、routes目录【重要目录】
定义路由的目录,laravel中所有的访问请求,都必须事先定义好路由,web.php是定义路由的文件。
8、storage目录
主要是存放缓存文件和日志文件,注意,如果在【linux】环境下,该目录需要有【可写】权限。
9、vendor目录
主要是存放第三方的类库文件,laravel思想主要是共同的开发,不要重复的造轮子(例如里面可能存在验证码类,上传类,邮件类),该目录还存放laravel框架的源码,注意如果要使用composer软件管理的,composer下载的类库都是存放在该目录下面的。
10、env文件【重要文件】
主要是设置一些系统相关的环境配置文件信息。config目录里面的文件配置内容一般都是读取该文件里面的配置信息(config里面的配置项的值基本都是来自.env文件)。
11、artisan脚手架文件
主要用于生成的代码的(自动生成),比如生成控制器,模型文件等。
执行命令:php artisan 需要执行的指令
执行此命令有2点要求
(1)、php必须添加环境变量,并且保证版本能是laravel所要求的版本。
(2)、执行命令时,注册artisan文件必须存在当前命令路径下。
12、composer.json【重要文件】
依赖包配置文件声明当前需要的软件依赖,但是不能删除,composer需要使用。
语法:标准JSON文件
需要重点掌握的目录【重点】
目录 | 功能 |
---|---|
app | 项目的核心目录,主要用于存放核心代码 |
app/Http/Controllers | 控制器目录 |
app/Http/Models | 模型目录【非默认,自定义创建的】 |
resources/views | 视图目录 |
config | 配置文件目录 注意/.env来配置 |
routes | 路由文件目录 |
data/migrations | 迁移文件目录(操作数据表结构) |
data/seeds | 数据种子目录(模拟测试数据) |
运行laravel
php artisan serve这是临时运行命令,关闭命令窗口后就会失效 或指定端口来运行 php artisan serve --port=9090 原则是让我们的端口不要产生冲突,如有冲突,启动服务就会失败
Apachel配置虚拟主机和修改本机hosts文件,hosts文件自己配,完后重启
# 设置虚拟主机 <VirtualHost *:80> # 设置网站目录 laravel指向到public目录下面 DocumentRoot "F:/www/class/qz06/web/public" # 设置网站域名 ServerName www.qz06.com # 错误日志 ErrorLog "F:/www/logs/www.qz06.com_error.log" # 成功日志 CustomLog "F:/www/logs/www.qz06.com_access.log" combined # 设置目录访问权限 <Directory "F:/www/class/qz06/web/public"> # 指定目录启用特怀 Options Indexes FollowSymLinks # 是否允许使用.htaccess文件 AllowOverride All # 访问目录权限 允许所以有人来访问 Require all granted </Directory> </VirtualHost>
Laravel路由
1、路由配置文件
路由文件的位置:项目目录/routes/web.php文件
2、配置路由
①、路由定义格式
Route::请求方式('url',匿名函数); Route::请求方式('url','控制器名称@操作方法');
注:laravel默认是给我们的post提交进行了csrf验证,所以测试的时候,可以进行关闭
3请求方式
GET(SELECT):从服务器取出资源(一项或多项)。 POST(INSERT):在服务器新建一个资源。 PUT/PATCH(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。 DELETE(DELETE):从服务器删除资源。
在laravel中也可以这样定义路由请求方式
Route::get($uri, $callback); Route::post($uri, $callback); Route::put($uri, $callback); Route::delete($uri, $callback);
有的时候可能需要注册一个可响应多个 HTTP 方法的路由,这时可以使用 match 方法,也可以使用 any 方法注册一个实现响应所有 HTTP 的请求的路由:
# 支持 get和post请求 Route::match(['get', 'post'], '/', $callback); # 支持所有类型的请求 (不建议用它) Route::any('foo',$callback);
4路由参数
路由参数主要针对的是GET请求的情况,语法格式如下:
# 必填 Route::get('URL/{参数名称}','闭包函数或控制器响应方法标识'); # 可选 Route::get('URL/{参数名称?}','闭包函数或控制器响应方法标识'); # 参数限制 Route::get('URL/{参数名称}','闭包函数或控制器响应方法标识')->where('参数名称','正则表达式'); Route::get('URL/{参数名称}','闭包函数或控制器响应方法标识')->where(['参数名称'=>'正则表达式']);
where('参数名称','正则表达式')用来对输入的参数进行限制,只有符合正则表达式要求的参数才可以传递
5路由别名
路由别名相当于在路由定义的时候,为路由起了一个别名,在以后的程序中可以通过这个别名来获取路由的信息,用法:
Route::get('/user/{id}',function($id){ return "当前用户id是:&