laravel框架详解
一、基础篇
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 的新特性 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管理的系统,例如公司内部用的简单管理系统)
(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.php
-
-
controller.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下新建文件夹控制器跳转(所见文件夹/视图名)
(2)公共模板 公共视图位置:resources/views/layouts/ eg:app.blade.php <body>@yield('content')</body> 公共视图引用: //继承公用模板 @extends('layouts.app')
app是 resources/views/layouts/app.blade.php 可以换成其他的
@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层使用请见博客
上一篇: 苹果要用台积电3nm工艺:iPad率先尝鲜 性能达到新高度
下一篇: laravel5验证码