初識laravel5_PHP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:避免Smarty與CSS語法沖突的方法
      這篇文章主要介紹了避免Smarty與CSS語法沖突的方法,實例分析了Smarty與CSS中大括號{}沖突的處理技巧,需要的朋友可以參考下 本文實例講述了避免Smarty與CSS語法沖突的方法。分享給大家供大家參考。具體分析如下: 熟悉CSS的人很快就會發現Smarty和CSS的語法存在沖突,因

       laravel5發布了,目前國內相關資料還比較少,只能先翻墻去官網先看看了,初步總結了一些變化,就想寫下來。

         

      目錄結構變化

      laravel5最先強調的是項目目錄結構的變化,與4.2區別還是蠻大的,逐條來說吧。

      新的目錄結構看上去像這樣:

      app
      Commands
      Console
      Events
      Handlers
      Commands
      Events
      Http
      Controllers
      Middleware
      Requests
      Kernel.php
      routes.php
      Providers
      Services
      bootstrap
      config
      database
      migrations
      seeds
      public
      package
      resources
      lang
      views
      storage
      cache
      logs
      meta
      sessions
      views
      work
      tests

      4.2的目錄結構:

      app
      commands
      config
      controllers
      database
      lang
      models
      start
      storage
      tests
      views
      bootstrap
      public
      對比一下,改變還是比較大的,可以看到 config,database被移動到根目錄,lang,views目錄被移動到resources目錄下,controllers被整合到http目錄里,models目錄不見了,還有一些新增的目錄就略了。

      App命名空間

      laravel5里還有一個變化,那就是app目錄默認加上了一個根命名空間 App ,在 App 下的所有目錄、類都應當在該命名空間下,簡而言之就是采用了psr4標準。

      HTTP

      laravel5認為,新的目錄結構是目前最好的結構之一,可以讓我們的開發更加得心應手,比如http目錄:

      Http
      Controllers
      Middleware
      Requests
      Kernel.php
      routes.php
      Middleware 很陌生,其實它是原來的路由filter的一個升級版,現在不用在filters.php里定義過濾器,取而代之的是在 Middleware 目錄中創建類,并在Kernel.php中配置全局還是可選,全局的Middleware在每個請求都會執行,而可選的就相當于原來的filter,可以在路由中使用,也可以在控制器中使用。

      Requests是對核心類Request的擴展,你可以擴展不同的Requests類,添加不同的功能。

      可以認為,所有關于http請求有關的處理都在http目錄中,比如控制器就是用來接受一個請求并返回的,所以將它放在 Http 目錄里合情合理。

      路由

      路由跟以前的區別不大,但是需要注意的當我們指定控制器命名空間時,命名空間不是絕對路徑,而是相對于 App\Http\Controllers,舉例:

       

      代碼如下:
      Route::controllers([
      'auth' => 'Auth\AuthController',
      'password' => 'Auth\PasswordController',
      ]);

       

      可以在 App/Http/Controllers/Auth 目錄下找到對應的類。

      此外,路由還支持緩存,以提升性能,通過命令行工具

       

      代碼如下:
      php artisan route:cache

       

      即可輕松生成,也可以通過

       

      代碼如下:
      php artisan route:clear

       

      清理緩存。

      Services

      我們看到在App目錄下還有一個Services目錄,我覺得這是一個很贊的理念,一直以來,我都對于控制器中出現大段的業務邏輯代碼而煩躁,我很想用一個單獨的層把這些業務邏輯封裝起來,而services就可以用來干這個活,當然,它不是必須的,但我強烈建議使用。就以laravel5自帶的demo來看看吧:

       

      代碼如下:
      # Http/Controllers/Auth/AuthController.php
      <?php namespace App\Http\Controllers\Auth;
      use App\Http\Controllers\Controller;
      use Illuminate\Contracts\Auth\Guard;
      use Illuminate\Contracts\Auth\Registrar;
      use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
      class AuthController extends Controller {
      /*
      |--------------------------------------------------------------------------
      | Registration & Login Controller
      |--------------------------------------------------------------------------
      |
      | This controller handles the registration of new users, as well as the
      | authentication of existing users. By default, this controller uses
      | a simple trait to add these behaviors. Why don't you explore it?
      |
      */
      use AuthenticatesAndRegistersUsers;
      /**
      * Create a new authentication controller instance.
      *
      * @param \Illuminate\Contracts\Auth\Guard $auth
      * @param \Illuminate\Contracts\Auth\Registrar $registrar
      * @return void
      */
      public function __construct(Guard $auth, Registrar $registrar)
      {
      $this->auth = $auth;
      $this->registrar = $registrar;
      $this->middleware('guest', ['except' => 'getLogout']);
      }
      }

       

      這是一個登陸授權的控制器,我們看 __construct構造函數,利用參數自動注入了一個 "接口實現(參考手冊IoC)" 的綁定,我們看下Registrar:

       

      代碼如下:
      <?php namespace App\Services;
      use App\User;
      use Validator;
      use Illuminate\Contracts\Auth\Registrar as RegistrarContract;
      class Registrar implements RegistrarContract {
      /**
      * Get a validator for an incoming registration request.
      *
      * @param array $data
      * @return \Illuminate\Contracts\Validation\Validator
      */
      public function validator(array $data)
      {
      return Validator::make($data, [
      'name' => 'required|max:255',
      'email' => 'required|email|max:255|unique:users',
      'password' => 'required|confirmed|min:6',
      ]);
      }
      /**
      * Create a new user instance after a valid registration.
      *
      * @param array $data
      * @return User
      */
      public function create(array $data)
      {
      return User::create([
      'name' => $data['name'],
      'email' => $data['email'],
      'password' => bcrypt($data['password']),
      ]);
      }
      }

       

      提交用戶名密碼時的處理:

      分享:實現PHP+Mysql無限分類的方法匯總
      這篇文章主要給大家匯總介紹了實現PHP+Mysql無限分類的2種方法,并對比分析了2種方法的優劣,需要的朋友可以參考下 無限分類是個老話題了,來看看PHP結合Mysql如何實現。 第一種方法 這種方法是很常見、很傳統的一種,先看表結構 表:category id int 主鍵,自增 name var

      共2頁上一頁12下一頁
      來源:模板無憂//所屬分類:PHP教程/更新時間:2015-03-03
      相關PHP教程