laravel框架详解


一、基础篇

架构,可以满足诸如事件处理、用户身份验证等各种需求,同时通过包管理实现模块化和可扩展的代码,并且对数据库管理有着健壮的支持。
不管是专家还是新手,一旦接触到Laravel,都会有相见恨晚之感——这正是你在为PHP项目寻找的框架。

trait 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管理的系统,例如公司内部用的简单管理系统)
(7)eg:php artisan --version 查看当前版本


详细见:http://blog.csdn.net/woshihaiyong168/article/details/53197366

.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位置在 :

  1.   vendor/laravel/framework/src/Illuminate/Routing/Controller.php
  2.    
  3.   controller.php 中定义了一个抽象类,其下方法有注册中间器在控制器中、执行一个方法在控制器中,等
  4.   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    @yield('content')  

     公共视图引用:
    //继承公用模板 
     @extends('layouts.app')


      app是 resources/views/layouts/app.blade.php 可以换成其他的 

@section('content')
不一样的内容 
@endsection
此时不一样的内容会替换公共模板中的 @yield('content')


视图中显示值



删除

eg:{{ $v->id }}


@if(条件) ...@else ...@endif

eg:@foreach ($data as $v)
        
            {{ $v->id }}
            {{ $v->title }} 
            {{ $v->message}}
            {{ $v->time}}
           
删除|修改
        
  @endforeach

@for ($i = 0; $i < 10; $i++) The current value is {{ $i }}@endfor
三、model层使用请见博客