laravel框架詳解

1、基礎篇php

一、概念

Laravel是一個有着美好前景的年輕框架,它的社區充滿着活力,同時提供了完整而清晰的文檔,並且爲快速、安全地開發現代應用提供了必要的功能。
2011年,Taylor Otwell首次將Laravel帶給這個世界,彼時,Laravel就是一個全新且現代的框架。Laravel基於MVC架構,能夠知足諸如事件處理、用戶身份驗證等各類需求,同時經過包管理實現模塊化和可擴展的代碼,而且對數據庫管理有着健壯的支持。
無論是專家仍是新手,一旦接觸到Laravel,都會有相見恨晚之感——這正是你在爲PHP項目尋找的框架。mysql

二、安裝

 一、找到安裝包傻瓜式安裝laravel

 二、composer安裝sql

 下載安裝包命令:composer create-project laravel/laravelblog數據庫

composer通常在項目中使用composer.jsonjson

eg:require 關鍵字:哪些包是你項目所須要的安全

{架構

   "require":{app

       "monolog/monolog":"1.0.*"composer

   }

}

安裝命令:找到composer.json位置 執行安裝命令 composer install

三、修改端口  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 描述數據庫構造,而且使用命令行一次性部署全部數據庫結構

模擬插入數據

 

(4)模擬插入數據
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

 

 

四、入口文件、數據庫鏈接、默認路由定義

一、laravel 入口文件 public 下的index.php

訪問目錄下public 這樣laravel就跑起來了

 

二、鏈接數據庫

 

.env文件

DB_HOST=127.0.0.1
DB_DATABASE=laravel5
DB_USERNAME=root
DB_PASSWORD=root

詳細見:http://blog.csdn.NET/woshihaiyong168/article/details/53197366

 

三、定義路由 (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

 

 

2、由於laravel框架是基於MVC的下面咱們就從其着手分析

一、框架目錄篇

     

二、MVC篇

    控制器位置:app/Http/controllers/創建控制器

    1、控制器

     (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)創建控制器的兩種方式:
      一、在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');
     二、在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]);

2、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 ...@endifeg:@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 }}@endfor3、model層使用請見博客

相關文章
相關標籤/搜索