本文讲述了Symfony2的插件格式。分享给大家供大家参考,具体如下:
一个bundle类似于其它框架中的插件,但是比插件表现更好。它跟其它框架最主要的不同是在Symfony2中所有东西都是bundle,包括核心框架功能和你写的所有应用程序代码。Symfony2中,bundle可是一等公民。这给了你使用其它第三方开发的内容包或者分发你自己的bundle更多灵活性。你可以方便的选择哪些内容可以应用到你的程序中那些不用,来根据你的想法优化它们。
一个bundle就是一个目录,它具有很好的结构性,它能存放从类到controller和web资源等任何东西。
一个bundle仅仅是一个结构化的文件目录集合,它实现一个单一的内容。
你可以创建一个BlogBundle,一个ForumBundle或者一个实现用户管理的bundle(好像已经有很多此类开源的bundle了)。每个bundle目录包含跟实现内容有关的所有东西,包括PHP文件,模板,样式表,javascript文件,测试内容以及其它任何相关的东西。要实现的内容的各方面都保存在一个bundle中。
一个应用程序是由在AppKernel类中registerBundles()方法里定义的所有bundle组成。
// app/AppKernel.phppublic function registerBundles(){ $bundles = array( new Symfony/Bundle/FrameworkBundle/FrameworkBundle(), new Symfony/Bundle/SecurityBundle/SecurityBundle(), new Symfony/Bundle/TwigBundle/TwigBundle(), new Symfony/Bundle/MonologBundle/MonologBundle(), new Symfony/Bundle/SwiftmailerBundle/SwiftmailerBundle(), new Symfony/Bundle/DoctrineBundle/DoctrineBundle(), new Symfony/Bundle/AsseticBundle/AsseticBundle(), new Sensio/Bundle/FrameworkExtraBundle/SensioFrameworkExtraBundle(), new JMS/SecurityExtraBundle/JMSSecurityExtraBundle(), ); if (in_array($this->getEnvironment(), array('dev', 'test'))) { $bundles[] = new Acme/DemoBundle/AcmeDemoBundle(); $bundles[] = new Symfony/Bundle/WebProfilerBundle/WebProfilerBundle(); $bundles[] = new Sensio/Bundle/DistributionBundle/SensioDistributionBundle(); $bundles[] = new Sensio/Bundle/GeneratorBundle/SensioGeneratorBundle(); } return $bundles;}
在这里你可以通过该方法来统一控制和管理你的应用程序组成。
一个bundle可以存放在任何目录下,只需要能够通过配置app/autoload.php文件中的自动加载器即可被自动加载。
创建一个bundle
Symfony2标准版中已经为你准备好了一全功能的创建bundle的工具文件。你可以运行它来创建bundle的所有内容,当然你也可以
选择自己手工创建。现在我们创建一个AcmeTestBundle并让它能够在我们的应用程序中工作。注意,这里的Acme是一个虚假的提供商名字,你完全可以替换它为你自己组织或公司的名字。
首先,创建一个src/Acme/TestBundle/ 目录并添加新文件AcmeTestBundle.php
新闻热点
疑难解答