Laravel 学习 第一天

今天主要的学习任务有以下

安装

安装Composer

Compser是PHP依赖管理工具,

curl -sS https://getcomposer.org/installer | php

如果提示HTTPS证书问题可以改用如下命令行安装以忽略证书

curl -k https://getcomposer.org/installer | php

安装完Composer后,使用Composer来安装laravel

php composer.phar global require "laravel/installer=~1.1"

安装完成后将laravel加到PATH路径中,在MAC上修改PATH变量

添加完了后就可以使用一下命令在当前目录下创建项目了。

laravel new Project_Name

laravel 要求PHP版本大于等于5.4

在Laravel 5中调整public文件夹的名称为public_html

/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/

$app = require_once __DIR__.'/../bootstrap/app.php';

// set the public path to this directory
$app->bind('path.public', function() {
    return __DIR__;
});

all set, let's start building

Let's start coding

配置

所有和应用相关的配置都保存在config文件夹中

读取Config变量

$value = Config::get('app.timezone'); // 可以通过外观模式来读写Config里定义的变量
Config::set('app.timezone', 'America/Chicago');
$value = config('app.timezone'); // 也可以通过帮助函数来读取Config的值

storagevendor文件夹需要写权限

修改namespace的名称可以使用如下命令行

php artisan app:name Car

维护模式 - 这个可以有

php artisan down
php artisan up

维护期间的提示页模板 resources/views/errors/503.blade.php

在项目根目录下有一个.env文件,在这里定义的所有常量都可以通过$_ENV 访问。工程师各自的开发环境会有不同,所以这个文件最好不要提交到SourceControl中。

获取并检测当前应用的环境

$environment = app()->environment(); // helper function 
$environment = App::environment(); // app facade

if ($app->environment('local')) {// The environment is local}
if ($app->environment('local', 'staging')){ // The environment is either local OR staging...}

MARK 文档里有下面一句没有看懂什么意思,估计等到学Service Container的时候会搞明白

To obtain an instance of the application, resolve the Illuminate\Contracts\Foundation\Application
contract via the service container.

The Basics

Routing

Laravel的路由做的还是很优雅的,用这套路由机制做RESTful API实在是太爽了(相比CI)

路由分组

这是个很方便的工具,可以对多个路由分组,将

Middleware

这货让我想起了很久之前.net framework里的http handler。。。
所有的middleware都存在App/Http/Middleware/这个文件夹中

创建Middleware

执行下面的语句来创建新的Middleware

php artisan make:middleware ImageFetcher

执行成功会在middleware的文件夹中多一个ImageFetcher.php的文件。

<?php namespace App\Http\Middleware;

use Closure;

class ImageFetcher {

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
            // Perform action before request is handled by app
            $response = $next($request);
            // Perform action after request is handled by app
        return $response;
    }
}

注册

Middleware做完了之后需要注册到应用中去,app/Http/这个文件夹下有Kernal.php文件,全局的middleware注册在$middleware变量中;如果是要给某个特定的Route绑定使用的middleware,注册在$routeMiddleware这个变量中。

 Route::get('admin/profile', ['middleware' => 'auth', function(){
    // do the shit here
}]);

可结束的Middleware

有的操作需要在http请求被处理之后才可以做,例如Session要在http请求结束后才会往客户端写数据。碰到这种情况,将middleware声明为TerminableMiddleware,在termintate这个函数中进行http请求完成后的操作。

use Closure;
use Illuminate\Contracts\Routing\TerminableMiddleware;

class StartSession implements TerminableMiddleware {

    public function handle($request, Closure $next)
    {
        return $next($request);
    }

    public function terminate($request, $response)
    {
        // Store the session data...
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 原文链接 必备品 文档:Documentation API:API Reference 视频:Laracasts ...
    layjoy阅读 8,599评论 0 121
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • 0.1配置1.模板继承2.控制器3.git4.支付宝支付的流程5.路由6.中间件7.请求8.laravel 学习笔...
    云龙789阅读 803评论 0 5
  • 先说几句废话,调和气氛。事情的起由来自客户需求频繁变更,伟大的师傅决定横刀立马的改革使用新的框架(created ...
    wsdadan阅读 3,033评论 0 12
  • 迎着朝阳 追着月光 想这样远走他乡 捧着书卷 写着笔记 想这样必成大器 望着灯光 叹着热气 想这样长眠不起 记着亲...
    泊杨阅读 181评论 0 1