php 5.2 框架,PHP框架Laravel 5.2笔记

前言

Laravel其实也刚发布不久,以前我一直喜欢使用原生php,一直追求极致,希望能有更高的效率,原始php代码显然效率是最高的。随着php升级到php7后,性能似乎不是一个特别必须的要求。本着多学点知识的前提,开始学习Laravel,科技产品用新不用旧,当然要选择最新版来实施这个研究。

新的5.2版本加入了中间件组、MySQL JSON、表单数组校验、增强数据库Session驱动、集合通配符、认证视图及隐形模型绑定等功能。

Laravel也是使用了PDO连接数据库,这我挺喜欢的。

服务器环境软件

版本

软件

版本

Linux

CentOS 7.1

php

7.0.6

mysql

5.5

nginx

1.10.0

安装Composer

Composer算是一个安装工具,通过它可以优化代码的部署流程。这也是安装Laravel的前提条件之一。

1

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

mv composer.phar /usr/local/bin/composer

配置php环境参数

在执行安装的过程中,我所用的服务器有如下的报错:

1/usr/bin/env: php: No such file or directory

研究后,我发现是没有配置好php的环境,执行下面的命令即可:

1export PATH=$PATH:/usr/local/php/bin

安装Laravel

发现Laravel所生成的路径与Node.JS有很多相似之处,都是默认通过/public/访问主目录。有些类似hexo的生成方式。

执行如下命令,安装Laravel:

1composer global require "laravel/installer"

至此,可以通过/root/.composer/vendor/bin/laravel执行laravel所支持的简单命令。

创建新应用

生成应用目录也很简单,仅需一行命令即可。

1/root/.composer/vendor/bin/laravel new laravel

然后laravel/public/就是laravel的主目录了。

在此之前,还需要在php.ini文件中,取消禁用下面的两个函数(功能),才能顺利安装:

1

2proc_get_status()

proc_open

500错误

因为laravel/storage目录没有777权限。

1sudo chmod -R 777 storage

nginx配置

增加文件laravel.conf,内容如下:

1

2

3

4try_files $uri $uri/ @rewrite;

location @rewrite {

rewrite ^/(.*)$ /index.php?_url=/$1;

}

并在相应的nginx配置文件中,增加一行include laravel.conf,执行service nginx reload即可使其生效。

HTTP路由

编辑路由文件,可以简单修改路由规则,vim app/Http/routes.php,可以注册路由来响应任何HTTP请求:

1

2

3

4

5

6Route::get($uri, $callback);

Route::post($uri, $callback);

Route::put($uri, $callback);

Route::patch($uri, $callback);

Route::delete($uri, $callback);

Route::options($uri, $callback);

例如:

1

2

3

4

5

6

7

8

9

10

11

12

13Route::get('/', function () {

return view('welcome');

});

Route::get('about', function () {

return view('app');

});

Route::get('site/about', function () {

return view('site.hello');

});

Route::get('errors', function () {

return view('errors.503');

});

Route::get('site', 'SiteController@index');

请求/时,返回welcome页面;

请求/about时,返回app页面;

请求site/about时,返回site/hello页面;

请求site时,交给控制器SiteController的index方法来处理。

输出变量

在php中,我们可以使用=$name?>来输出一个变量的值,但在laravel中,定义了一种新的方法。

1

2{{$name}}

{!!$name!!}

区别在于,前者会将html的符号转制,后者将直接输出html代码。当我们希望将源码显示出来的时候,应当使用前者。当我们希望能够修改html页面的样式并实现相应的效果,或执行一些命令的时候,就可以使用后者。

不应当直接在模板中使用{!!$something!!}等标签,因为当这些变量不存在的时候,页面可能会报错,如果你希望他可以为空,可以使用Blade模板,也可以使用if语句判断。

Blade模板

在网站开发过程中,引入的css等等可能每个页面都是一样的,这时候就能发挥Blade模板的作用了。

新建模板页面,在页面中所需要填充的位置加入,如:@yield('content')或@yield('title')。

当另一个页面需要引用这个Blade模板时,新建一个blade页面,

1

2

3

4

5

6

7@extends('app')

@section('title')

标题 {{$name}}

@stop

@section('content')

{{$hello}} - {!!$hello!!}

@stop

判断与循环语句

laravel代码中支持一些if和foreach语句,如:

1

2

3

4

5

6

7

8

9@if($name == 'YateSun')

doing A

@else

doing B

@endif

@foreach($group as id => $user)

doing C

@endforeach

创建Model1php artisan make:model Test

创建控制器1php artisan make:controller SiteController

使用命令行工具1php artisan tinker

通过shell命令行,可以进入laravel的命令行交互界面;

1

2

3

4$test = new App\Test

$test->title="My first Title";

$test->published=Carbon\Carbon::now();

$test->save();

Session

落地保存

需要主动在调用完controller之后,调用了session->save()的方法,来主动的保存session。这样session才能落地保存起来,如果在controller或者view里面写了exit;die();,那么session是不会被保存的,除非主动的写Session::save()才能手工的保存起来。

1$request->session()->save();

flash

经过flash所存储的值,本次请求可以使用,二次http请求也可以使用,使用完自动销毁,第三次就不存在了。

增加Redis支持1

2

3

4

5"require": {

"php": ">=5.5.9",

"laravel/framework": "5.2.*",

"predis/predis": "~1.1@dev"

},

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值