Laravel被称为“全栈”式框架,由于它可以处理从网络服务到数据库管理、HTML生成的一切事情,垂直集成的web开发环境给开发者提供了更好的体验。php
开发人员能够经过命令行工具,生成和管理Laravel项目环境。Laravel附带了一个名为Artisan
的优秀的命令行工具,它提供了一些开发过程当中有用的命令用,能够用来生成框架代码和数据库管理。它是基于强大的Symfony Console 组件开发的。css
Laravel的目标是给开发者创造一个愉快的开发过程,而且不牺牲应用的功能性。快乐的开发者才能创造最棒的代码!为了这个目的,咱们博取众框架之长处集中到Laravel中,这些框架甚至是基于Ruby on Rails、ASP.NET MVC、和Sinatra等开发语言或工具的。laravel
Laravel是易于理解而且强大的,它提供了强大的工具用以开发大型、健壮的应用。杰出的IoC、数据库迁移工具和紧密集成的单元测试支持,这些工具赋予你构建任何应用的能力。web
这是全部laravel项目具备基本上相同的目录结构,其中的每一个文件都具备指定的地方。经过对目录结构的约定,确保你是按照“laravel方式”来工做。数据库
正如你看到的,laravel项目下面有4个文件夹:app
、bootstrap
、public
、vendor
,这4个文件夹下面又有不少个子文件夹,当你第一次看到这么丰富的文件夹内容时,是否是以为颇有压力?不要紧,咱们会逐一的来了解不一样的文件夹。bootstrap
app
包含了站点的controllers(控制器),models(模型),views(视图)和assets(资源)。这些是网站运行的主要代码,你会将你大部分的时间花在这个目录里。bootstrap
用来存放系统启动时须要的文件,这些文件会被如index.php这样的文件调用。public
这个文件夹是惟一外界能够看到的web服务器的目录。它含有laravel框架核心的引导文件index.php,这个目录也可用来存听任何能够公开的静态资源,如css,Javascript,images等vender
正如上面提到的,全部laravel中有趣的事情都会产生在app目录,让咱们多了解一些里面的内容。
咱们经过上面的表格能够看到,只要花一些心思在创建和命名的文件上,就能获得一个具备良好文件系统的结构化的应用。设计模式
让咱们更深一步了解如何创建laravel应用。你可能已经注意到,app目录下面有三子目录:models,views,controllers。这是代表了laravel是model-view-controller(MVC)架构模式,它将“业务逻辑”与图形用户界面相关的输入和显示逻辑(GUI)分离。在laravel Web应用中,业务逻辑一般由数据模型(如用户,博客文章)组成,GUI则只是一个浏览器中的页面。MVC设计模式在Web的开发领域中很是受欢迎。浏览器
MVC模式的三个要素:服务器
一个典型的laravel应用程序由上面提到的MVC组成网络
当访问一个laravel应用程序时,浏览器发送一个请求,由Web服务器接收并传递到laravel的路由引擎。该laravel路由器接收到请求后,根据配置重定向到相应的控制器类的方法。
而后由控制器类接管。在某些状况下,控制器将当即渲染一个视图,这是一个模板,将被转换成HTML而且发送回浏览器。更广泛的动态网站,控制器与模型进行交互,与数据库进行通讯。调用模型后,控制器呈现最终视图(HTML、CSS和图像)并返回完整的web页面到用户的浏览器。
Laravel提倡模型、视图和控制器,应保持彻底独立的存储单独的文件在不一样的目录。这就是laravel的目录结构发挥做用的地方。
像MVC这样的设计模式的产生,就是为了让开发者的工做更加轻松。这就是Laravel比那些不用任何模式的PHP厉害的地方。若是这种讨论你如今感受很抽象,不用担忧!当你开始用Laravel工做,你都不会意识到你是在一种设计模式中工做。过一段时间后,就会变得天然了。
数据模型是任何应用程序的基础,它创建了应用程序的业务逻辑。每一块数据经过使用一个数据库表表示。laravel提供了一些技术来简化对数据库的访问。
Laravel经过将数据库中的表行转成能被轻松操纵的PHP对象,来链接应用程序的数据模型和数据库表。它还使您可以执行业务规则,描述在应用程序中不一样的数据模型之间的关系等。例如,一我的的家庭关系能够用Laravel Eloquent OR / M描述以下:
class Person extends Eloquent { public function mother() { return $this->belongsTo('Mother'); } public function father() { return $this->belongsTo('Father'); } public function spouse() { return $this->hasOne('Spouse'); } public function sisters() { return $this->hasMany('Sister'); } public function brothers() { return $this->hasMany('Brother'); } }(转)