laravel框架详解
laravel框架是现在php框架中十分流行的框架
一、基础篇
1、概念
Laravel是一个有着美好前景的年轻框架,它的社区充满着活力,同时提供了完整而清晰的文档,而且为快速、安全地开发现代应用提供了必要的功能。
2011年,Taylor Otwell首次将Laravel带给这个世界,彼时,Laravel就是一个全新且现代的框架。Laravel基于MVC架构,可以满足诸如事件处理、用户身份验证等各种需求,同时通过包管理实现模块化和可扩展的代码,并且对数据库管理有着健壮的支持。
不管是专家还是新手,一旦接触到Laravel,都会有相见恨晚之感——这正是你在为PHP项目寻找的框架。
2、安装
1、找到安装包傻瓜式安装
2、composer安装
下载安装包命令:composer create-project laravel/laravelblog
composer一般在项目中使用composer.json
eg:require 关键字:哪些包是你项目所需要的
{
"require":{
"monolog/monolog":"1.0.*"
}
}
安装命令:找到composer.json位置 执行安装命令 composer install
3、修改端口 php artisan serve 命令 laravel
(1)eg:php artisan serve --prot =8080 (设置端口)
(2)eg:php artisan make:model Article (建立model)
去看看你的 app 目录,下面是不是多了一个 Article.php 文件?那就是 Artisan 帮我们生成的 Model 文件
(3)eg:php artisan migrate(数据库的迁移)
migration 是啥
打开learnlaravel5/database/migrations/2014_10_12_000000_create_users_table.php
文件,你肯定能一眼看出它的作用:用 PHP 描述数据库构造,并且使用命令行一次性部署所有数据库结构
模拟插入数据
php artisan make:seeder ArticleSeeder
php artisan db:seed
(5)eg:php artisan make:controller Admin/HomeController 建立控制器
(6)eg:php artisan make:auth 激活laravel 中auto系统 (Laravel 利用 PHP5.4 的新特性 trait 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管理的系统,例如公司内部用的简单管理系统)
(7)eg:php artisan --version 查看当前版本
详细见:http://blog.csdn.net/woshihaiyong168/article/details/53197366
4、入口文件、数据库连接、默认路由定义
1、laravel 入口文件 public 下的index.php
访问目录下public 这样laravel就跑起来了
2、连接数据库
.env文件
DB_HOST=127.0.0.1
DB_DATABASE=laravel5
DB_USERNAME=root
DB_PASSWORD=root
详细见:http://blog.csdn.net/woshihaiyong168/article/details/53197366
3、定义路由 (laravel受欢迎的主要原因)
路由位置:app/Https/routes.php
Route::any('/', 'HomeController@add'); 定义任何方式都能访问的默认控制器和默认方法
Route::post('/add', 'HomeController@add'); 定义 post方式方法
Route::get('/delete/{id}','HomeController@del'); 定义get方式接值:缺点必须在方法参数中写入所接值
定义路由组
Route::group(['middleware' => 'auth', 'namespace' => 'Admin', 'prefix' => 'admin'], function() {
Route::get('/', 'HomeController@index');
});
定义路由得方式有很多详细见:https://laravel-china.org/docs/5.1/routing#route-groups
二、因为laravel框架是基于MVC的下面我们就从其着手分析
1、框架目录篇
2、MVC篇
控制器位置:app/Http/controllers/建立控制器
一、控制器
(1)Controller 控制器原理解析:
我们通过路由找到控制器那么我们这个路由位置在哪里?
app/Providers/RouteServiceProvider.php (路由服务供应者)
protected $namespace = 'App\Http\Controllers';将路由空间指向了控制器位置找到空间之后命名空间、类、方法是如何传递的呢?vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(分配器)
/** * Dispatch a request to a given controller and method. * * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @param string $controller * @param string $method * @return mixed */ public function dispatch(Route $route, Request $request, $controller, $method) { $instance = $this->makeController($controller); return $this->callWithinStack($instance, $route, $request, $method); // var_dump($controller); } 此方法就是传递路由中定义的控制器、方法下面我们以HomeController.php为例:
class HomeController extends Controller
所继承的Controller位置在 :
vendor/laravel/framework/src/Illuminate/Routing/Controller.phpcontroller.php 中定义了一个抽象类,其下方法有注册中间器在控制器中、执行一个方法在控制器中,等eg:
/** * Execute an action on the controller. * * @param string $method * @param array $parameters * @return \Symfony\Component\HttpFoundation\Response */ public function callAction($method, $parameters) { return call_user_func_array([$this, $method], $parameters); }(2)建立控制器的两种方式:1、在app/Http/controllers/建立TestController.php
<?php namespace App\Http\Controllers; use App\Http\Requests; use Illuminate\Http\Request; class TestController extends Controller { public function show(){
echo 123;
}} 在routes.php中定义路由:
Route::get('/test', 'TestController@show');2、在cmd窗口进入到当前框架目录下 eg:php artisan make:controller Admin/HomeController ("位置app/Http/controllers/",控制名)(3)控制器操作:
重定向: return redirect()->action('HomeController@show'); return redirect('show') 显示视图层以及传值:
return view('upda',["list"=>$list]);
二、view视图层 (1) 视图层位置:resources/views 文件后缀为 .blade.php 控制器中显示视图 输入名字就行 如果是在views下新建文件夹控制器跳转(所见文件夹/视图名)
@section('content') 不一样的内容 @endsection 此时不一样的内容会替换公共模板中的 @yield('content') 视图中显示值 <form action="{{URL('/add')}}" method="post" > <a href="{{URL('/del')}}?id={{$v->id}}">删除</a> <a href="{{ url('article/'.$article->id) }}"> eg:{{ $v->id }} @if(条件) ...@else ...@endif eg:@foreach ($data as $v) <tr> <td>{{ $v->id }}</td> <td>{{ $v->title }}</td> <td>{{ $v->message}}</td> <td>{{ $v->time}}</td> <td><a href="delete/{{ $v->id }}">删除</a>|<a href="upda/{{ $v->id }}">修改</a></td> </tr> @endforeach @for ($i = 0; $i < 10; $i++) The current value is {{ $i }}@endfor 三、model层使用请见博客
(2)公共模板公共视图位置:resources/views/layouts/eg:app.blade.php <body>@yield('content')</body> 公共视图引用://继承公用模板 @extends('layouts.app')
app是 resources/views/layouts/app.blade.php 可以换成其他的
laravel框架详解相关推荐
- laravel框架详解 学以致用
系列文章目录 提示: laravel介绍.文件配置.路由使用 .控制器的使用 . 数据的操作.@csrf防护.文件上传 文章目录 系列文章目录 laravel框架 详解一些功能 学以致用 一.lara ...
- jQuery Validate验证框架详解
2019独角兽企业重金招聘Python工程师标准>>> 一.导入js库 <script type="text/javascript" src="& ...
- shiro放行_Shiro框架详解 tagline
部分面试资料链接:https://pan.baidu.com/s/1qDb2YoCopCHoQXH15jiLhA 密码:jsam 想获得全部面试必看资料,关注公众号,大家可以在公众号后台回复" ...
- [Cocoa]深入浅出 Cocoa 之 Core Data(1)- 框架详解
深入浅出 Cocoa 之 Core Data(1)- 框架详解 罗朝辉(http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 Core data 是 Cocoa 中处 ...
- WebDriver自动化测试框架详解
webDriver自动化测试框架详解 一. 简介 WebDriver API相对于Selenium Remote Control API来说,虽然同样是控制浏览器,但它的编程接口更加简洁 WebDri ...
- atitit.jQuery Validate验证框架详解与ati Validate 设计新特性
atitit.jQuery Validate验证框架详解与ati Validate 设计新特性 1. AtiValidate的目标1 2. 默的认校验规则1 2.1. 使用方式 1.metadata用 ...
- Android 动画框架详解,第 1 部分
2019独角兽企业重金招聘Python工程师标准>>> Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果,本文将向读者阐述 Android 的动画框 ...
- springboot2整合mysql5_SpringBoot2整合SSM框架详解
SpringBoot2整合SSM框架详解 发布时间:2019-01-15 21:33, 浏览次数:1218 , 标签: SpringBoot SSM <>开发环境 * 开发工具:Eclip ...
- Django REST FRAMEWORK swagger(一)框架详解
Django REST FRAMEWORK swagger(一.框架详解) 一.Django REST SWAGGER框架图 具体见下图 二.说明 RESTFul说明 每一个URI代表一种资源: 客 ...
- 框架详解_Qt开发技术:QtCharts(一)QtCharts基本介绍以及图表框架详解
若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...
最新文章
- MS UC 2013-0-虚拟机-标准化-部署-2-模板机-制作-4
- 在spark上构造随机森林模型过程的一点理解
- 【AI应用】三分钟,带你了解英特尔明年重点发力的这八大方向
- 6. Qt 信号与信号槽(8)实例分析
- python笔记之序列(dict的基本使用和常用操作)
- php检查在线用户,php – 检查用户是否在线laravel
- 《iPad开发从入门到精通》——6.2节系统主界面
- oracle dblink性能,谈谈Oracle为2019年埋下的雷:Oracle关于DBLINK的预警
- 联想官方出品小工具:关闭或开启 Win10 系统自动更新
- Tech Talk| Redmi K50 电竞版手机极致散热技术详解
- 某虚拟存储系统采用最近最少使用(LRU)页面淘汰算法,假定系统为每个作业分配4个页面的主存空间--软考系统架构设计师--不会做题?“猿”来绘个图解决吧
- 海思AI芯片(35xx):板端运行报错
- Titanic第二章:第一节数据清洗及特征处理
- python 3 4j不是合法的_3 4j 是合法Python数字类型。
- 计算机电源输出电压 电流,电脑USB接口的输出电压以及电流你知道吗?
- TextOut字体设置
- MTK,QAC运用minicom和tftp进行uboot
- PyTorch DDP
- 如何用java实现一个p2p种子搜索(3)-dht协议实现
- 爱江山更爱美人 歌词
热门文章
- 爱立信软件测试实习生面试
- 科创板在6月的这30天:方邦电子等31家过会并提交注册 新受理28家
- 最新版mysql8.0.13如何汉化_MySQL 8.0.13 下载安装教程图文详解
- IP切换器是做什么用的?
- linux 更新系统命令,Linux系统自动更新时间命令的详细说明
- win7桌面怎么弄计算机,电脑动态桌面,详细教您win7怎么设置电脑动态桌面
- 屏蔽网站广告插件:广告终结者
- 【SQL Server 2005 彻底卸载、重装问题】
- windows虚拟网卡驱动开发~开源(建议收藏)
- 犀牛插件学习——T-Splines