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 的新特性 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.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层使用请见博客
laravel框架详解的更多相关文章
- php中流行的rpc框架详解
什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 我的官方群点击此处. 通常我们调用一个php中的方法,比如这样一个函数方 ...
- jQuery Validate验证框架详解
转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...
- mina框架详解
转:http://blog.csdn.net/w13770269691/article/details/8614584 mina框架详解 分类: web2013-02-26 17:13 12651人 ...
- lombok+slf4j+logback SLF4J和Logback日志框架详解
maven 包依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lomb ...
- [Cocoa]深入浅出 Cocoa 之 Core Data(1)- 框架详解
Core data 是 Cocoa 中处理数据,绑定数据的关键特性,其重要性不言而喻,但也比较复杂.Core Data 相关的类比较多,初学者往往不太容易弄懂.计划用三个教程来讲解这一部分: 框架详解 ...
- iOS 开发之照片框架详解(2)
一. 概况 本文接着 iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLib ...
- Quartz.NET作业调度框架详解
Quartz.NET作业调度框架详解 http://www.cnblogs.com/lmule/archive/2010/08/28/1811042.html
- mapreduce框架详解
hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感 ...
- iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)
本文链接:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-three.html 这里接着前文<iOS ...
随机推荐
- JavaScript之DOM创建节点
上几篇文章中我们罗列了一些获取HTML页面DOM对象的方法,当我们获取到了这些对象之后,下一步将对这些对象进行更改,在适当的时候进行对象各属性的修改就形成了我们平时看到的动态效果.具体js中可以修改D ...
- Python学习笔记【第十一篇】:Python面向对象高级
isinstance(obj,cls)和issubclass(sub,super) class Person(object): def __init__(self, name, age, sex, n ...
- Ubuntu 16.04下GDB调试
在linux中还有一个更受大家欢迎的调试工具:GDB.GDB是一个由GNU开源组织发布的.UNIX/LINUX操作系统下的.基于命令行的.功能强大的程序调试工具.可以用来调试C,C++程序. GDB功 ...
- 【面试篇】寒冬求职季之你必须要懂的原生JS(中)
互联网寒冬之际,各大公司都缩减了HC,甚至是采取了“裁员”措施,在这样的大环境之下,想要获得一份更好的工作,必然需要付出更多的努力. 一年前,也许你搞清楚闭包,this,原型链,就能获得认可.但是现在 ...
- jetty8 text/plain默认字符编码的坑
今天在测试一个content-type为text/plain的API时发现后端requestBody乱码了,而线上正常. 自己本地使用jetty8版本,插件自带版本,而线上使用jetty9. 最开始没 ...
- 冒泡 MS Azure 不便宜。。。
一直在等 MS Azure 中国开卖, 最近有消息说正式商用了... 看看去,ok 发现官方网站 很奇葩.没有购买的地方 说毛线 啊 卧槽 欺骗感情还是吊人胃口? 好看了一下VM的价格,卧槽真不便宜. ...
- kafka快速开始
Step 1: Download the code Step 2: Start the server Step 3: Create a topic Step 4: Send some messages ...
- Spring概况(一)
spring是什么? spring是一个开源框架,最初是为了解决企业应用开发的复杂性而创建的,但现在已经不止应用于企业应用. 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. - 从大 ...
- Spring 事务传播实践分析
事务管理是应用系统开发中必不可少的一部分.事物将若干的数据库操作作为一个整体控制,一起成功或一起失败.事物有以下特性 原子性:指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生. ...
- [Java Plasterer] Java Components 3:Java Enum
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. Written In The Font Whe ...