Home
Nova Software
Nova SoftwareNova Software
  • 标准化 SaaS 产品

    • 诺怀云物业管理系统全场景智慧物业数字化方案
    • 诺怀云汽修管理系统汽修连锁业务全链路运营管理

    定制开发服务

    • 企业信息化系统定制
    • 移动 APP 开发
    • 微信 / 小程序开发
    • 电商系统
    • 企业官网建设
    SaaS 产品 + 软件定制双重能力

    匠心数字化服务

    SaaS 产品 + 软件定制双重能力

    成熟 SaaS 系统与软件定制开发,满足企业不同数字化需求

    new-arrownew-arrow
    数字化干货与案例分享

    行业洞察

    数字化干货与案例分享

    行业白皮书、项目案例解析、技术实践文章

    new-arrownew-arrow
  • 行业解决方案

    • 智慧物业
    • 智慧社区
    • 智慧园区
    • 智慧商业
    • 学校后勤
    • 医院后勤
    • 企事业后勤
    • 社区电商

    场景解决方案

    • 医院中央运送
    • 医院医废管理
    • 医院布草洗涤
    • 医院陪护管理
    • 设备管理
    • 维修工单管理
    • 保安巡更巡逻
    • 保洁管理
    • 物料管理
    • 场所租赁预约
    • 食堂管理
    • 考勤管理
    • 宿舍管理
    • 资产管理
    • 招商租赁管理
    • 收支管理
  • 客户案例
  • 公司介绍

    • 关于诺怀了解诺怀软件发展历程与企业概况
    • 我们的产品了解我们的产品框架
    • 新闻动态
    • 招贤纳士 加入我们,查看在招岗位
    • 选择诺怀我们的核心优势与服务特色
    • 联系我们商务咨询、技术对接与来访地址

    客户见证

    • 合作客户服务客户名录与行业覆盖
    • 客户评价来自合作企业真实客户心声

    合作模式

    • SaaS化标准系统开箱即用,快速落地
    • 定制开发模式你提需求我来实现,主打个性化
    • 数字化咨询服务业务诊断与数字化方案规划
试用申请
Home
重庆诺怀软件重庆诺怀软件

Menu

    • 诺怀云物业管理系统
    • 诺怀云汽修管理系统
    • 企业信息化系统定制
    • 移动 APP 开发
    • 微信 / 小程序开发
    • 电商系统
    • 企业官网建设
    • SaaS 产品 + 软件定制双重能力
    • 数字化干货与案例分享
    • 智慧物业
    • 智慧社区
    • 智慧园区
    • 智慧商业
    • 学校后勤
    • 医院后勤
    • 企事业后勤
    • 社区电商
    • 医院中央运送
    • 医院医废管理
    • 医院布草洗涤
    • 医院陪护管理
    • 设备管理
    • 维修工单管理
    • 保安巡更巡逻
    • 保洁管理
    • 物料管理
    • 场所租赁预约
    • 食堂管理
    • 考勤管理
    • 宿舍管理
    • 资产管理
    • 招商租赁管理
    • 收支管理
    • 关于诺怀
    • 我们的产品
    • 新闻动态
    • 招贤纳士
    • 选择诺怀
    • 联系我们
    • 合作客户
    • 客户评价
    • SaaS化标准系统
    • 定制开发模式
    • 数字化咨询服务

Laravel学习笔记(二)Laravel 应用程序的体系结构

Nova Software

2014-03-18
blog-details-cover

在一切环境就绪了,当然就要开始了解框架了。

站在巨人的肩膀上,学东西会事半功倍。我在网上找到一篇好文章,正好可以让我轻松了解Laravel应用程序的体系结构。因此借来直接用了。

该章节内容翻译自《Architecture of Laravel Applications》,一切版权为原作者,由于原作者写这篇文章时Laravel版本还没有到4.1,一些地方有稍微差别,我会稍作修改。

原作者:Stable Host, LLC(不知道找对了没有)

翻译作者:Bowen Huang

翻译作者更多博客:http://www.cnblogs.com/huangbx

正文:

Laravel被称为“全栈”式框架,因为它处理从网络服务到数据库管理,直到HTML生成的一切事情,一个垂直集成的web开发环境能给开发者提供更好的体验。

一个典型的程序员通过命令行工具与Laravel交互,生成和管理Laravel项目环境。Laravel带有一个名为Artisan的优秀的命令行工具,可以用它来生成框架代码和数据库架构,Artisan能够处理从数据库架构迁移到资源和配置管理的一切事情。

约定优于配置

Laravel 的有趣的特征之一,在如何构建 web 应用程序上它规定了一些相当严重的限制。出人意料的是,这些限制使创建应用更加的容易——轻松了很多。让我们来看看为什么。

Laravel区别于其他垂直集成开发环境在于它强烈的偏好约定优于配置。而一些 Java,Python 或 PHP 框架往往需要大量的 XML 配置,Laravel在开始的时候几乎不需要配置(也许只有几行在PHP中)。这种对配置文件的规避行为使其非常独特,在所有 Laravel 应用程序中可识别的代码结构是相同的。

一个项目结构来统治他们所有 !

这并不奇怪,所有Laravel项目基本上具有相同的目录结构 ——在其中的每个文件都有其指定的地方。通过这种约定的目录结果,可以确保开发者按照“Laravel way”工作。

图 1.1 显示了 Laravel 项目目录结构是什么样子:

 

图1.1 Laravel 项目目录结构

就如你看到这样,laravel下面只包含了4个文件夹,这4个文件夹下面有一些子文件夹,这种丰富的子文件夹在第一次看到是不是有压力?我会逐个介绍。我们大部分的开发工作都会在app/文件夹下面进行。

下面是各个文件夹和文件的基本介绍:

顶级文件夹

作用

app

包含了站点的controllers(控制器),models(模型),views(视图)和assets(资源)。这些是网站运行的主要代码,你会将你大部分的时间花在这些上面。

bootstrap

用来存放系统启动时需要的文件,这些文件会被如index.php这样的文件调用。

public

这个文件夹是唯一外界可以看到的,是必须指向你web服务器的目录。它含有laravel框架核心的引导文件index.php,这个目录也可用来存放任何可以公开的静态资源,如css,Javascript,images等。

vendor

用来存放所有的第三方代码,在一个典型的Laravel应用程序,这包括Laravel源代码及其相关,并含有额外的预包装功能的插件。

正如上面提到的,/app是所有的乐趣产生的地方,让我们更深入的看看这个目录的结构。

图 1.2 显示/app文件夹的详细信息:

 

图1.2 app 文件夹详细信息

下面是详细介绍:

文件的文件夹

作用

/app/config/

配置应用程序的运行时规则、 数据库、 session等等。包含大量的用来更改框架的各个方面的配置文件。大部分的配置文件中返回的选项关联PHP数组。

/app/config/app.php

各种应用程序级设置,即时区、 区域设置(语言环境)、 调试模式和独特的加密密钥。

/app/config/auth.php

控制在应用程序中如何进行身份验证,即身份验证驱动程序。

/app/config/cache.php

如果应用程序利用缓存来加快响应时间,要在此配置该功能。

/app/config/compile.php

在此处可以指定一些额外类,去包含由‘artisan optimize’命令声称的编译文件。这些应该是被包括在基本上每个请求到应用程序中的类。

/app/config/database.php

包含数据库的相关配置信息,即默认数据库引擎和连接信息。

/app/config/mail.php

为电子邮件发件引擎的配置文件,即 SMTP 服务器,From:标头

/app/config/session.php

控制Laravel怎样管理用户sessions,即session driver, session lifetime。

/app/config/view.php

模板系统的杂项配置。

/app/controllers

包含用于提供基本的逻辑、 数据模型交互以及加载应用程序的视图文件的控制器类。

/app/database/migrations/

包含一些 PHP 类,允许 Laravel更新当前数据库的架构并同时保持所有版本的数据库的同步。迁移文件是使用Artisan工具生成的。

/app/database/seeds/

包含允许Artisan工具用关系数据来填充数据库表的 PHP 文件。

/app/lang/

PHP 文件,其中包含使应用程序易于本地化的字符串的数组。默认情况下目录包含英语语言的分页和表单验证的语言行。

/app/models/

模型是代表应用程序的信息(数据)和操作数据的规则的一些类。在大多数情况下,数据库中的每个表将对应应用中的一个模型。应用程序业务逻辑的大部分将集中在模型中。

/app/start/

包含与Artisan工具以及全球和本地上下文相关的自定义设置。

/app/storage/

该目录存储Laravel各种服务的临时文件,如session, cache,  compiled view templates。这个目录在web服务器上必须是可以写入的。该目录由Laravel维护,我们可以不关心。

/app/tests/

该文件夹给你提供了一个方便的位置,用来做单元测试。如果你使用PHPUnit,你可以使用Artisan工具一次执行所有的测试。

/app/views/

该文件夹包含了控制器或者路由使用的HTML模版。请注意,这个文件夹下你只能放置模版文件。其他的静态资源文件如css, javascript和images文件应该放在/public文件夹下。

/app/routes.php

这是您的应用程序的路由文件,其中包含路由规则,告诉 Laravel 如何将传入的请求连接到路由处理的闭包函数、 控制器和操作。该文件还包含几个事件声明,包括错误页的,可以用于定义视图的composers。

/app/filters.php

此文件包含各种应用程序和路由筛选方法,用来改变您的应用程序的结果。Laravel 具有访问控制和 XSS 保护的一些预定义筛选器。

花了很多心思在建立和命名文件夹上,得到的就是一个具有良好的文件系统的应用程序。

在这里你得到了什么:MVC

模型-视图-控制器(MVC)

让我们进入Laravel应用工作的高级别概述。你可能已经注意到了标准的Laravel应用程序结构由一个应用程序目录app/,它含有三个子目录:models/,views/和controllers/。这就透露了Laravel遵循model-view-controller(MVC)架构模式,就是强制将输入到展示逻辑关系的“业务逻辑”与图形用户界面(GUI)分开。就Laravel web应用而言,业务逻辑通常由像用户,博客文章这样的数据模型组成。GUI只是浏览器中的网页而已。MVC设计模式在网页开发领域很流行。

MVC模式的3个组件:

  • 模型(model)
  • 视图(view)
  • 控制器(controller)

[注] 原作者在这里详细介绍了MVC三个组成部分,我这里由于篇幅就不介绍了。

Laravel组件

一个典型的Laravel应用程序包含上面提到的MVC组件,如下图:

 

当与Laravel交互时,浏览器发送一个请求,web服务器接收到请求并且传给Laravel路由引擎。Laravel路由接收到请求,然后重定向给基于路由的URL模式的合适的控制器类方法。

然后控制器类接管。在某种情况下,控制器会立即呈现出一个视图,它是一个被转换成HTML并送回浏览器的模版。更常见的动态网站,控制器与模型交互,这是一个PHP对象,它表示应用程序(如用户、博客文章)中的一个元素,并负责与数据库进行通信的。调用模型后,控制器则呈现最终视图( HTML,CSS和图像),并返回完整的网页到用户的浏览器。

Laravel促进了这样的概念——模型、视图和控制器,应通过存储这些元素在不同的目录中的单独的代码文件中来保持相当的独立性。这就是Laravel目录结构发挥了作用。

像MVC这样的设计模式的产生,就是为了让开发者的生活更加的轻松。这就是Laravel比那些不用任何模式的PHP厉害的地方。如果这种讨论很抽象,现在,不用担心!当你开始Laravel工作,你都不会意识到你是在一种设计模式中工作。过一段时间后,就会变得自然了。

数据模型

数据模型是任何应用程序的基础,它描述了应用程序的业务逻辑。任何一块的数据都是用数据库表来表示的。Laravel提供了一些技术来简化对数据库的访问。

Laravel通过将数据库中的表行转成能被轻松操纵的PHP对象,来连接应用程序的数据模型和数据库表。它还使您能够执行业务规则,描述在应用程序中不同的数据模型之间的关系等。例如,一个人的家庭关系可以用Laravel Eloquent OR / M描述如下:

1 class Person extends Eloquent 2 { 3 public function mother() 4 { 5 return $this->belongsTo('Mother'); 6 } 7 8 public function father() 9 { 10 return $this->belongsTo('Father'); 11 } 12 13 public function spouse() 14 { 15 return $this->hasOne('Spouse'); 16 } 17 18 public function sisters() 19 { 20 return $this->hasMany('Sister'); 21 } 22 23 public function brothers() 24 { 25 return $this->hasMany('Brother'); 26 } 27 }

如果翻译有什么错误,欢迎指出来。

未完待续……

留言
诺怀软件

诺怀软件

Oct 26, 2026

诺怀软件自 2005 年投身软件开发领域,是国家高新技术、重庆市专精特新企业,积累了 20 多年行业数字化落地经验,自主研发的诺怀云物管平台获评重庆重点软件产品。我们服务全国大量物业、园区、医疗机构客户,以可追溯、透明化的数字化方案,帮助客户解决账目混乱、协同低效、监管难落地等痛点,赋能物业规范化运营,重建业主信任。欢迎留言,获取适配您项目的专属方案.

回复
预约咨询

获取定制开发解决方案

如果您也想了解软件定制开发、落地智慧物业、后勤数字化管理等,可预约顾问一对一沟通方案.

  • 20+开发经验

  • 30+全球区域客户

  • 15000+成功项目

footer-four-gradient
nova software logo

专注企业软件定制开发,提供物业、汽修等行业整体解决方案,助力企业业务数字化升级

抖音抖音
小红书小红书
微信服务号微信服务号
今日头条今日头条
搜狐号搜狐号
视频号视频号

关于诺怀

  • 公司介绍
  • 新闻动态
  • 客户案例
  • 联系我们
  • 常见问答

产品服务

  • 软件定制开发
  • 移动 APP 开发
  • 小程序定制开发
  • 物业SaaS系统
  • 汽修SaaS系统
  • 网站开发
  • 电商开发

案例及解决方案

  • 智慧物业解决方案合集
  • 汽修管理解决方案
  • 物业客户案例合集
  • 定制开发案例合集

咨询热线:4008310286

渝ICP备14000366号-1© 2026 重庆诺怀软件有限公司