介绍
Laravel 是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
参考
Laravel 5.7 中文文档 https://learnku.com/docs/laravel/5.7/installation/2242
Laravel8 中文文档 https://learnku.com/docs/laravel/8.x/
安装
我们使用composer安装,可以参考《Composer入门及技术指南》https://blog.youkuaiyun.com/yan_dk/article/details/90228559
注意,当前如果composer最新版本2.0以上使用,最好php版本使用>7.1的,本人现在使用版本为php7.2.9,使用php7.1.3是安装会出现问题。
composer.json文件如下
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=7.2.9",
"laravel/framework": "^7.29"
},
"config": {
"preferred-install": "dist"
},
"repositories": {
"packagist": {
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
}
}
}
注意:这里php版本,laravel/framework的版本一定要找到合适对应的版本,不然会报错找不到包。可以到https://packagist.org/,输入“laravle/laravel”,查看匹配的版本。例如:现在最新laravel8版本,匹配php7.3以上,需要改配置为:
"php": ">=7.3.4",
"laravel/framework": "8.*"
更新依赖包,
> composer update
注:可能会报错,php需要安装扩展fileinfo。成功后生成vendor目录
建立laravel项目
# composer create-project laravel/laravel test
注意调整php环境版本,可能报错(如php还要取消相应禁用函数proc_open、putenv),会自动根据当前的php版本创建相应的laravel版本的项目,建立成功后会在当前目录下创建“test“项目
启动项目
>php artisan serve
浏览器访问
laravel8.0
可能有后台报错“RuntimeException No application encryption key has been specified”,需要运行如下指令
# php artisan key:generate
laravel7.29
IDE工具安装插件
针对phpstorm,可以安装laravel插件,方便编码
调试
安装调试工具,在phpstorm中安装
# composer require barryvdh/laravel-debugbar
安装完成后,在 config/app.php
中注册服务提供者到 providers
数组。
Barryvdh\Debugbar\ServiceProvider::class,
在配置文件 config/app.php
中添加到 aliases
数组:
'Debugbar' => Barryvdh\Debugbar\Facade::class,
然后运行如下 Artisan
命令将该扩展包的配置文件拷贝到 config
目录下:
php artisan vendor:publish
选1
如果配置文件中 debug
设置为 true
的话,Debugbar
分析器默认是启用的,如果你想要关闭该分析器,在配置文件 config/debugbar.php
中设置 enabled
为 false
即可。
phpstorm调试使用debug模式运行,显示如下:
编码
路由
生成控制器
资源控制器
# php artisan make:controller Api/OrderController --resouce
行为控制器
# php artisan make:controller Only/SlipController --invokable
注意:
1.laravel8的路由写法按原有laravel5.7以下写法会报错,改动方法如下:
class RouteServiceProvider extends ServiceProvider
{
# 添加该属性就可以按照之前习惯的写法编码了
protected $namespace = "App\Http\Controllers";
...
}
路由配置
// 单一控制器
Route::get('slip','Only\SlipController');
Route::get('slipindex','Only\SlipController@index');
//资源控制器
Route::resource('order','Api\OrderController');
//资源访问限制
//允许指定方法访问
Route::resource('order1','Api\OrderController')->only([
'index','store'
]);
//不允许指定方法访问
Route::resource('order2','Api\OrderController')->except([
'index','store'
]);
视图
视图定义
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel</title>
</head>
<body>
<form method="post" action="login">
{{csrf_field()}}
用户:<input type="text" name="username"><br>
密码:<input type="text" name="password"><br>
<button type="submit">提交</button>
</form>
</body>
</html>
控制器
class LoginController extends Controller
{
public function index() {
return view("login/login");
}
public function store(Request $request)
{
if ($request->method() == 'POST') {
return 'username:'.$request->input('username').'password:'.$request->input('password');
}
}
}
路由配置
//登录
Route::get('login','LoginController@index');
Route::post('login','LoginController@store');
浏览器访问http://127.0.0.1:8000/login