该体系结构
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
该体系结构
你是我的英雄!谁会想到你在这里仍然会在第一个三个部分?你的付出会得到回报。第一个三个部分看起来不太深的体系结构框架。因为它使Symfony框架区别开来ob娱乐下载人群,现在让我们深入架构。
理解的目录结构
Symfony应用程序的目录结构是相当灵活的,但是推荐的结ob娱乐下载构如下:
-
app /
- 应用程序配置,模板和翻译。
-
bin /
-
(如可执行文件。
bin /控制台
)。 -
src /
- 项目的PHP代码。
-
测试/
- 自动测试(例如单元测试)。
-
var /
- 生成的文件(缓存、日志等)。
-
供应商/
- 第三方依赖关系。
-
web /
- web根目录。
的web /
目录
web根目录的所有公共和静态文件图像、样式表和JavaScript文件。也是每一个前端控制器(处理所有的文件请求应用程序)的生活,如生产控制器所示:
1 2 3 4 5 6 7 8 9 10
/ /网络/ app.phprequire_once__DIR__。“/ . . / var / bootstrap.php.cache”;require_once__DIR__。“/ . . / app / AppKernel.php”;使用ob娱乐下载\组件\HttpFoundation\请求;美元内核=新AppKernel (“刺激”,假);美元请求=请求::createFromGlobals ();美元响应=美元内核- >处理(美元请求);美元响应- >send ();
控制器首次成功应用程序使用一个内核类(AppKernel
在这种情况下)。然后,它创建了请求
对象使用PHP的全局变量并将其传递给内核。最后一步是将返回的响应内容内核发送回用户。
理解包系统
本节介绍Symfony的最伟大和最强大的特性之一:包系统。ob娱乐下载
一捆有点像在其他软件插件。所以为什么叫包而不是一个插件吗?这是因为一切在Symfony是一个包,从核ob娱乐下载心框架特性来为应用程序编写的代码。
为应用程序编写的所有代码在包被组织。在Syob娱乐下载mfony说话,包是一个结构化的文件集(PHP文件、样式表、javascript、图片…)实现一个功能(一个博客,一个论坛,…),可以与其他开发人员共享。
包在Symfony一等公民。ob娱乐下载这使您可以灵活地使用预构建功能打包在第三方包或分发自己的包。挑选哪些特性使它容易在应用程序中启用和优化他们你所希望的方式。在一天结束的时候,您的应用程序代码是一样的重要的为核心框架本身。
ob娱乐下载Symfony已经包含一个AppBundle你可能用来开始开发您的应用程序。然后,如果你需要将应用程序分割成可重用的组件,您可以创建自己的包。
注册一个包
一个应用程序包中定义的组成registerBundles ()
的方法AppKernel
类。每个包是一个目录,其中包含一个包的类描述:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日
/ / app / AppKernel.php公共函数registerBundles(){美元包= (新ob娱乐下载Symfony \包\ FrameworkBundle \ FrameworkBundle (),新ob娱乐下载Symfony \包\ SecurityBundle \ SecurityBundle (),新ob娱乐下载Symfony \包\ TwigBundle \ TwigBundle (),新ob娱乐下载Symfony \包\ MonologBundle \ MonologBundle (),新ob娱乐下载Symfony \包\ SwiftmailerBundle \ SwiftmailerBundle (),新ob娱乐下载Symfony \包\ DoctrineBundle \ DoctrineBundle (),新ob娱乐下载Symfony \包\ AsseticBundle \ AsseticBundle (),新Sensio赞助\包\ FrameworkExtraBundle \ SensioFrameworkExtraBundle (),新AppBundle \ AppBundle ()];如果(in_array (美元这- >getEnvironment (), (“开发”,“测试”))){美元包[]=新ob娱乐下载Symfony \包\ WebProfilerBundle \ WebProfilerBundle ();美元包[]=新Sensio赞助\包\ DistributionBundle \ SensioDistributionBundle ();美元包[]=新Sensio赞助\包\ GeneratorBundle \ SensioGeneratorBundle ();}返回美元包;}
除了AppBundle已经讨论过,请注意,内核还支持其他bundle Symfony的一部分,如FrameworkBundle DoctrineBundle, SwiftmailerBundle AsseticBundle。ob娱乐下载
配置一个包
每一个包都可以通过配置文件写在YAML定制,XML,或PHP。看看这个示例默认Symfony的配置:ob娱乐下载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35
# app / config / config.yml进口:- - - - - -{资源:parameters.yml}- - - - - -{资源:security.yml}- - - - - -{资源:services.yml}框架:# esi: ~#翻译:{回退:[' %地区% ']}秘密:“% %的秘密”路由器:资源:' % kernel.project_dir % / app / config / routing.yml 'strict_requirements:“% kernel.debug %”形式:真正的csrf_protection:真正的验证:{enable_annotations:真正的}模板:{发动机:(“树枝”)}default_locale:“%地区%”trusted_proxies:~会话:~#树枝配置枝:调试:“% kernel.debug %”strict_variables:“% kernel.debug %”#迅速梅勒配置swiftmailer:交通:“% mailer_transport %”主持人:“% mailer_host %”用户名:“% mailer_user %”密码:“% mailer_password %”线轴:{类型:内存}#……
每个一级条目框架
,嫩枝
和swiftmailer
定义了特定的配置包。例如,框架
配置FrameworkBundle而swiftmailer
配置SwiftmailerBundle。
每个环境可以覆盖默认的配置提供一个特定的配置文件。例如,dev
环境负荷config_dev.yml
文件,该文件加载(即主要配置。config.yml
),然后修改它添加一些调试工具:
1 2 3 4 5 6 7 8 9 10 11 12 13
# app / config / config_dev.yml进口:- - - - - -{资源:config.yml}框架:路由器:{资源:' % kernel.project_dir % / app / config / routing_dev.yml '}分析器:{only_exceptions:假}web_profiler:工具栏:真正的intercept_redirects:假#……
扩展包
除了是一种很好的方式来组织代码和配置,包可以扩展另一个包。包继承允许您覆盖任何现有的包以定制其控制器,模板,或它的任何文件。
逻辑文件名称
当你想要引用一个文件从一个包,使用这个符号:@BUNDLE_NAME /道路/ /文件
;ob娱乐下载Symfony将解决@BUNDLE_NAME
包真正的路径。例如,逻辑路径@AppBundle /控制器/ DefaultController.php
将转化为src / AppBundle /控制器/ DefaultController.php
,因为Symfonyob娱乐下载知道AppBundle的位置。
逻辑控制器名称
为控制器,您需要使用格式参考行为BUNDLE_NAME: CONTROLLER_NAME: ACTION_NAME
。例如,AppBundle:默认值:索引
映射到indexAction ()
方法从AppBundle \ \ DefaultController控制器
类。
使用供应商
奇怪的是,应用程序将依赖的第三方库。这些应该存储在供应商/
目录中。永远不要碰任何东西在这个目录中,因为它是完全由作曲家。这个目录已经包含Symfony库,SwiftMailer库,教义ORM,ob娱乐下载树枝模板系统和其他一些第三方库和包。
理解缓存和日志
ob娱乐下载Symfony应用程序可以包含多个配置文件中定义的多种格式(YAML、XML、PHP等)。而不是为每个请求,解析,结合所有这些文件Symfony使用它自己的缓存系统。ob娱乐下载事实上,应用程序配置只是解析第一请求然后编译PHP代码存储在var /缓存/
目录中。
在开发环境中,Symfony是足够聪明来更新缓存文件当你改变。ob娱乐下载但是在生产环境中,为了加快速度,是你的责任清除缓存,当你更新你的代码或改变其配置。执行这个命令来清除缓存刺激
环境:
1
美元php bin /控制台缓存:明确——env =刺激
当开发一个web应用程序,可以在很多方面出错的东西。的日志文件var /日志/
目录告诉你一切的请求,帮助您快速解决问题。
使用命令行界面
每个应用程序附带了一个命令行接口工具(bin /控制台
),可以帮助您保持您的应用程序。它提供了命令,提高你的生产力,通过自动化繁琐和重复的任务。
运行不带任何参数,了解更多关于它的功能:
1
美元php bin /控制台
的——帮助
选项可以帮助你发现一个命令的用法:
1
美元php bin /控制台调试:路由器帮助
最终的想法
叫我疯狂,但在阅读这部分,你应该满意移动周围的事物,使Symfony为你工作。ob娱乐下载Symfony的一切都是为了ob娱乐下载你。所以,随时重命名,移动目录在你认为合适的地方。
这就是快速浏览。从测试到发送邮件,你仍然需要学习很多成为一个Symfony的主人。ob娱乐下载现在准备深入研究这些话题吗?看看,去官方ob娱乐下载Symfony的欧宝官网下载app文档并选择你想要的任何话题。