Laravel中文手册.docx

上传人:b****3 文档编号:4960197 上传时间:2022-12-12 格式:DOCX 页数:48 大小:43.61KB
下载 相关 举报
Laravel中文手册.docx_第1页
第1页 / 共48页
Laravel中文手册.docx_第2页
第2页 / 共48页
Laravel中文手册.docx_第3页
第3页 / 共48页
Laravel中文手册.docx_第4页
第4页 / 共48页
Laravel中文手册.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

Laravel中文手册.docx

《Laravel中文手册.docx》由会员分享,可在线阅读,更多相关《Laravel中文手册.docx(48页珍藏版)》请在冰豆网上搜索。

Laravel中文手册.docx

Laravel中文手册

Laravel中文手册

前言

欢迎阅读Laravel文档。

这份文档既可以作为入门指南,也可以作为Laravel功能特色的参考手册。

如果你迫不及待想要开始Laravel之旅的话,可以直接跳到你想看的章节,不过,我们还是强烈建议你按顺序阅读这份文档,这样能让你循序渐进的打好基础,而且,每一章节都是后后续章节的基础。

使用Laravel将是一种享受!

Laravel是一套功能强大的PHP开发框架,并且着重于灵活性和语法的表现力。

对于初学者,Laravel像其他流行、轻量级框架一样易学、易用;对于经验丰富的同学,Laravel能让你体验代码模块化的好处。

Laravel的灵活性能让你随心所欲的更新、重构你用应用;Laravel富于表现力的语法能让你或你的团队的代码简洁、容易阅读。

Laravel优于其它PHP框架

Laravel在很多方面优于其它框架,以下列出的就是其中的一部分:

∙Bundle是Laravel的扩展包组织形式或称呼。

Laravel的扩展包仓库已经相当成熟了,可以很容易的帮你把扩展包(bundle)安装到你的应用中。

你可以选择下载一个扩展包(bundle)然后拷贝到bundles目录,或者通过命令行工具“Artisan”自动安装。

∙在Laravel中已经具有了一套高级的PHPActiveRecord实现--EloquentORM。

它能方便的将“约束(constraints)”应用到关系的双方,这样你就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。

Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。

∙应用逻辑(ApplicationLogic)可以在控制器(controllers)中实现,也可以直接集成到路由(route)声明中,并且语法和Sinatra框架类似。

Laravel的设计理念是:

给开发者以最大的灵活性,既能创建非常小的网站也能构建大型的企业应用。

∙反向路由(ReverseRouting)赋予你通过路由(routes)名称创建链接(URI)的能力。

只需使用路由名称(routename),Laravel就会自动帮你创建正确的URI。

这样你就可以随时改变你的路由(routes),Laravel会帮你自动更新所有相关的链接。

∙Restful控制器(RestfulControllers)是一项区分GET和POST请求逻辑的可选方式。

比如在一个用户登陆逻辑中,你声明了一个get_login()的动作(action)来处理获取登陆页面的服务;同时也声明了一个post_login()动作(action)来校验表单POST过来的数据,并且在验证之后,做出重新转向(redirect)到登陆页面还是转向控制台的决定。

∙自动加载类(ClassAuto-loading)简化了类(class)的加载工作,以后就可以不用去维护自动加载配置表和非必须的组件加载工作了。

当你想加载任何库(library)或模型(model)时,立即使用就行了,Laravel会自动帮你加载需要的文件。

∙视图组装器(ViewComposers)本质上就是一段代码,这段代码在视图(View)加载时会自动执行。

最好的例子就是博客中的侧边随机文章推荐,“视图组装器”中包含了加载随机文章推荐的逻辑,这样,你只需要加载内容区域的视图(view)就行了,其它的事情Laravel会帮你自动完成。

∙反向控制容器(IoCcontainer)提供了生成新对象、随时实例化对象、访问单例(singleton)对象的便捷方式。

反向控制(IoC)意味着你几乎不需要特意去加载外部的库(libraries),就可以在代码中的任意位置访问这些对象,并且不需要忍受繁杂、冗余的代码结构。

∙迁移(Migrations)就像是版本控制(versioncontrol)工具,不过,它管理的是数据库范式,并且直接集成在了Laravel中。

你可以使用“Artisan”命令行工具生成、执行“迁移”指令。

当你的小组成员改变了数据库范式的时候,你就可以轻松的通过版本控制工具更新当前工程,然后执行“迁移"指令即可,好了,你的数据库已经是最新的了!

∙单元测试(Unit-Testing)是Laravel中很重要的部分。

Laravel自身就包含数以百计的测试用例,以保障任何一处的修改不会影响其它部分的功能,这就是为什么在业内Laravel被认为是最稳版本的原因之一。

Laravel也提供了方便的功能,让你自己的代码容易的进行单元测试。

通过Artisan命令行工具就可以运行所有的测试用例。

∙自动分页(AutomaticPagination)功能避免了在你的业务逻辑中混入大量无关分页配置代码。

方便的是不需要记住当前页,只要从数据库中获取总的条目数量,然后使用limit/offset获取选定的数据,最后调用‘paginate’方法,让Laravel将各页链接输出到指定的视图(View)中即可,Laravel会替你自动完成所有工作。

Laravel的自动分页系统被设计为容易实现、易于修改。

虽然Laravel可以自动处理这些工作,但是不要忘了调用相应方法和手动配置分页系统哦!

上面提到的只是Laravel优于其它框架的几点。

在这份文档中包含了Laravel所有的特性和更多优点。

安装与设置

目录

∙要求

∙安装

∙服务器配置

∙基本设置

∙环境设置

∙友好的链接

安装要求

∙Apache,nginx,或者其他web服务器。

∙Laravel框架应用了很多PHP5.3版才具备的强大的新特性,所以你必须安装PHP5.3或者以上版本。

∙Laravel使用FileInfo库来检测mime类型。

PHP5.3版已经默认包含了FileInfo库。

Windows用户需要在php.ini中启用该模块。

关于FileInfo库的更多信息请阅读:

installation/configurationdetailsonPHP.net。

∙Laravel使用Mcrypt库来加密和生成哈希。

PHP5.3已经预装了Mcrypt库。

如果你在phpinfo()中没有找到Mcrypt已经启用的信息,请检查你的服务器环境是否安装完全,或者查看PHP手册中Mcrypt库有关信息。

安装

1下载Laravel

2解压Laravel压缩包,然后上传文件到你的web服务器。

3在config/application.php中设置applicationkey,你可以设置为任意的32位字符串。

4确保storage/views目录具有写入权限。

5现在你可以尝试在浏览器中运行框架。

如果不出意外,你应该看到了Laravel漂亮的初始页面。

一切准备就绪,我们可以继续Laravel学习之旅!

选装程序

如果你想充分了解和学习Laravel框架的应用,推荐你安装以下程序:

∙SQLite,MySQL,PostgreSQL,或者SQLServerPDOdriver.

∙Memcached或者APC.

安装遇到问题?

如果你在安装过程中遇到了问题,可以检查以下情况:

∙请确保public文件夹是服务器的根目录,如果不是,你可以尝试访问Laravel的public文件夹,如http:

localhost/public/。

∙如果你启用了mod_rewrite拓展,请把application/config/application.php文件中的index参数设置为空。

∙请确保服务器的storage目录及其子目录具有写入权限。

服务器配置

就像大部分的web开发框架一样,Laravel的设计也考虑了代码和存储安全的问题,Laravel框架只把允许公众访问的文件放在web服务器的根目录(DocumentRoot),这样可以有效的防止因为服务器的设置错误而泄露重要的代码和信息资料。

稳定压倒一切!

下面的案例中,我们假定把Laravel安装到/Users/JonSnow/Sites/MySite目录。

这对MySite的Apache虚拟主机的基本配置如下:

80>

DocumentRoot/Users/JonSnow/Sites/MySite/public

ServerNamemysite.dev

注意,虽然安装目录是/Users/JonSnow/Sites/MySite,但是DocumentRoot配置项必须指向/Users/JonSnow/Sites/MySite/public目录。

将DocumentRoot指向public目录是一条通用的最佳实践方法,但是某些主机是不允许改变DocumentRoot配置的,没关系,人民的力量是无穷无尽的,Laravel论坛里收集了一系列有用的方法。

基本设置

Laravel框架的所有配置文件都存放在应用程序的config文件夹中,建议你把所有的配置文件都看一下,对应用程序的设置可以有一个基本的了解。

你应该注意一下application/config/application.php文件,它包含了应用程序的基本设置。

在开发或者启用网站之前,你应该首先修改application/config/application.php中的applicationkey。

Laravel会用它来加密或者生成哈希。

你可以手动设置一个32位的随机字符串,也可以使用Laravel提供的Artisan命令行工具来生成一个符合标准的字符串。

有关Aartisan工具的信息可以访问Artisan命令列表。

注意:

如果你启用了mod_rewrite,你应该把index参数设置为空。

环境设置

通常情况下,应用程序的开发环境和正式生产环境的设置是不同的,Laravel使用的URL机制可以让你轻而易举的解决这个问题。

打开Laravel框架的安装目录下的paths.php文件,你可以看到下面的数组:

$environments=array(

'local'=>array('http:

//localhost*','*.dev'),

);

这个数组表示任何以"localhost"开头或者以"*.dev"结尾的请求,都被视为"local"环境。

然后,建立application/config/local文件夹,那么local文件夹下面的任何设置都会覆盖application/config中的基本设置。

举个例子,你希望在新建的local目录中创建一个application.php文件:

returnarray(

'url'=>'http:

//localhost/laravel/public',

);

在这个例子中,local中的URL设置会覆盖application/config/application.php文件中的URL设置。

需要注意的是,你只需要指定那些你想要覆盖的设置。

Laravel的环境设置就是这么简单,你可以用它来创建你需要的环境。

友好的链接

通常情况下,你不想"index.php"出现在网站的链接中,那么你可以用rewrite重定向来去掉"index.php"。

如果你使用的是Apache服务器,请启用mod_rewrite模块,然后在你的public目录创建一个.htaccess文件,内容如下:

RewriteEngineon

RewriteCond%{REQUEST_FILENAME}!

-f

RewriteCond%{REQUEST_FILENAME}!

-d

RewriteRule^(.*)$index.php/$1[L]

如果上面的.htaccess文件没有效果,可以试试下面的写法:

Options+FollowSymLinks

RewriteEngineon

RewriteCond%{REQUEST_FILENAME}!

-f

RewriteCond%{REQUEST_FILENAME}!

-d

RewriteRule.index.php[L]

在设置了重定向之后,你还应该把application/config/application.php中的index参数设置为空。

注意:

不同服务器的rewrite方法有所不同,请根据具体情况配置。

路由

目录

∙基础

∙通配符(Wildcards)

∙404事件(The404Event)

∙过滤器(Filters)

∙模式过滤器(PatternFilters)

∙全局过滤器(GlobalFilters)

∙路由组(RouteGroups)

∙命名路由(NamedRoutes)

∙HTTPS路由(HTTPSRoutes)

∙扩展包路由(BundleRoutes)

∙控制器路由(ControllerRouting)

∙命令行路由测试(CLIRouteTesting)

基础

Laravel充分利用PHP5.3的特性,使路由变得简单并富于表达性。

这使得从构建API到完整的web应用都变得尽可能容易。

路由的实现代码在application/routes.php文件。

和其它框架不同,应用逻辑在Laravel中可以通过两种方式集成。

虽然在控制器(controllers)中实现业务逻辑是普遍的做法,但是在Laravel中也可以直接在路由中嵌入应用逻辑。

这种方式尤其适用于只有几个页面的小型网站,这样就免去了创建一大堆控制器(controllers),还要为每个控制器创建一些不相干的方法(methods),而最后只是一部分方法(methods)通过手动设置路由的方式被暴露出来。

在下面的代码示例中,第一个参数(parameter)是你“注册”的路由(route),第二个参数是这个路由将要触发的函数(function),函数中包含了应用逻辑。

定义路由时不需要开头的斜线(front-slash),唯一的例外是默认路由(defaultroute)只包含一个斜线(front-slash)。

注意:

路由的权重在于其被注册的先后顺序。

因此,任何通配(catch-all)的路由应该在routes.php文件的底部注册

注册一个响应"GET/"的路由:

Route:

:

get('/',function()

{

return"HelloWorld!

";

});

注册一个能同时响应(GET、POST、PUT、DELETE)HTTP请求方法(HTTPverbs)的路由:

Route:

:

any('/',function()

{

return"HelloWorld!

";

});

注册响应其它HTTP请求方法(HTTPverbs)的路由:

Route:

:

post('user',function()

{

//

});

Route:

:

put('user/(:

num)',function($id)

{

//

});

Route:

:

delete('user/(:

num)',function($id)

{

//

});

注册一个能响应多个HTTP请求方法(HTTPverbs)的路径(URI):

Router:

:

register(array('GET','POST'),$uri,$callback);

通配符(Wildcards)

强制路径(URI)中的某部分为数字:

Route:

:

get('user/(:

num)',function($id)

{

//

});

允许路径(URI)中的某部分是字母、数字串:

Route:

:

get('post/(:

any)',function($title)

{

//

});

允许路径(URI)中的某部分是可选的:

Route:

:

get('page/(:

any?

)',function($page='index')

{

//

});

404事件(The404Event)

如果一个请求(request)不能匹配任何一个路由,404事件将被触发。

在application/routes.php文件中可以找到默认的事件处理代码。

默认的404事件处理代码

Event:

:

listen('404',function()

{

returnResponse:

:

error('404');

});

你可以按照你自己的需求定制这部分代码!

延伸阅读:

∙事件(Events)

过滤器(Filters)

过滤器(filters)可以在路由之前或之后触发。

如果在路由之前触发的过滤器(filters)有返回值,那么这个返回值将被认为是对此次请求(request)的回应(response),路由将停止执行。

这一特性便于实现身份验证之类的功能。

在application/routes.php文件中定义了所有过滤器(filters)。

注册一个过滤器(filter):

Route:

:

filter('filter',function()

{

returnRedirect:

:

to('home');

});

绑定一个过滤器(filter)到路由:

Route:

:

get('blocked',array('before'=>'filter',function()

{

returnView:

:

make('blocked');

}));

给路由绑定一个之后(after)执行的过滤器(filter):

Route:

:

get('download',array('after'=>'log',function()

{

//

}));

绑定多个过滤器(filters)到路由:

Route:

:

get('create',array('before'=>'auth|csrf',function()

{

//

}));

给过滤器(filters)传递参数:

Route:

:

get('panel',array('before'=>'role:

admin',function()

{

//

}));

模式过滤器(PatternFilters)

有时你可能需要针对所有包含部分路径(URI)的请求(request)绑定一个过滤器(filter),例如,你想对以“admin”开头的路径(URI)绑定一个叫”auth“的过滤器(filter),以下代码就是具体实现:

w

D定义一个基于路径模式(URIpattern)的过滤器(filter):

Route:

:

filter('pattern:

admin/*','auth');

你也可以在为某个给定的路径(URI)绑定过滤器(filters)时直接提供一个带有名称(name)和回调函数(callback)的数组,这样,过滤器(filters)也就完成了注册。

DefiningafilterandURIpatternbasedfilterinone:

Route:

:

filter('pattern:

admin/*',array('name'=>'auth',function()

{

//

}));

全局过滤器(GlobalFilters)

Laravel默认有两个过滤器(filters),他们分别在每次请求(request)之前(before)和之后(after)执行。

你可以在application/routes.php文件中找到这两个过滤器(filters)。

这两个过滤器可以方便你启动通用扩展包(bundles)或者添加全局资源(assets)。

注意:

之后(after)过滤器接收到的参数是对应当前请求(request)的回应(Response)对象。

路由组(RouteGroups)

路由组方便你为一组路由绑定一些属性(attributes),从而保持代码的整洁。

Route:

:

group(array('before'=>'auth'),function()

{

Route:

:

get('panel',function()

{

//

});

Route:

:

get('dashboard',function()

{

//

});

});

命名路由(NamedRoutes)

总是会有修改路由的时候,这就会让写死的路径(URI)产生错误。

给路由赋予一个名称(name)可以方便通过这个名称(name)动态生成路径(URI),即便以后路由变化了,路径(URI)仍然和你新的路由保持一致。

定义一个命名路由:

Route:

:

get('/',array('as'=>'home',function()

{

return"HelloWorld";

}));

通过命名路由生成URL:

$url=URL:

:

to_route('home');

重定向到命名路由:

returnRedirect:

:

to_route('home');

对于一个命名路由,可以方便反查当前请求(request)是否是由这个命名路由在处理。

反查处理当前请求(request)的路由是否具有给定的名称(name):

if(Request:

:

route()->is('home'))

{

//名称为”home“的路由正在处理当前请求(request)!

}

HTTPS路由(HTTPSRoutes)

定义路由时,可以通过使用”https“参数指定所生成的URL(或重定向时)采用HTTPS协议。

定义一个HTTPS路由:

Route:

:

get('login',array('https'=>true,function()

{

returnView:

:

make('login');

}));

使用”secure“函数完成同样的事情:

Route:

:

secure('GET','login',function()

{

returnView:

:

make('login');

});

扩展包路由(BundleRoutes)

扩展包(bundle)是Laravel的模块化扩展系统。

可以通过配置扩展包,方便的处理请求(request)。

这里是扩展包的详细介绍,此处略过。

通过此段介绍,你会认识到扩展包不仅可以通过路由(route)暴露功能,还可以在扩展包中注册路由。

打开application/bundles.php文件,添加以下代码:

注册扩展包,处理相应的路由:

returnarray(

'admin'=>array('handles'=>'admin'),

);

注意到代码中的handles参数了吗?

这告诉Laravel加载Admin扩展包并处理任何以“admin”开头的路径(URI)。

现在准备为你的扩展包注册几个路由吧,在你的扩展包的根目录创建routes.php文件,并添加以下代码:

给扩展包添加一个根路由(rootroute):

Route:

:

get('(:

bundle)',function()

{

return'WelcometotheAdminbundle!

';

});

我们来解析一下这段代码。

注意到(:

bundle)了吗?

它将被替换为前面注册扩展包

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1