zoukankan      html  css  js  c++  java
  • 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 描述数据库构造,并且使用命令行一次性部署所有数据库结构

    模拟插入数据

    (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

    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 = 'AppHttpControllers';
      将路由空间指向了控制器位置
    
       找到空间之后命名空间、类、方法是如何传递的呢?
       vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(分配器)
       
    /**
     * Dispatch a request to a given controller and method.
     *
     * @param  IlluminateRoutingRoute  $route
     * @param  IlluminateHttpRequest  $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 SymfonyComponentHttpFoundationResponse
     */
    public function callAction($method, $parameters)
    {
        return call_user_func_array([$this, $method], $parameters);
    }
     (2)建立控制器的两种方式:
          1、在app/Http/controllers/建立TestController.php
    
    <?php
    namespace AppHttpControllers;
    use AppHttpRequests;
    use IlluminateHttpRequest;
    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层使用请见博客

  • 相关阅读:
    cct,web技术
    cct信息安全
    TFS2010安装与管理
    centos7 opera济览器安装
    Hadoop 的常用组件一览
    Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind
    gcc manual
    5350.support
    meminfo,df,
    WCF
  • 原文地址:https://www.cnblogs.com/zmdComeOn/p/10250952.html
Copyright © 2011-2022 走看看