知识大全 高性能PHP框架Symfony2中文入门教程

Posted 文件

篇首语:亦余心之所善兮,虽九死其犹未悔。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 高性能PHP框架Symfony2中文入门教程相关的知识,希望对你有一定的参考价值。

高性能PHP框架Symfony2中文入门教程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  最近 出于对Symfony 的关注 在网上闲逛时不时会留意Symfony 的文章 尤其是中文方面的 前段时间拜读了一饼兄的《Symfony 入门》一文 觉得比官网上的例子涉及面更广便做了转载 今日有暇细读 却发现一饼兄只是大体对Symfony 做了介绍 如果参照该文来入门的话 却是存在很大的问题 于是便有了这一篇文章

  下载

  首先是下载Symfony 这个简单 到 或者本站下载 本人由于使用的是Ubuntu系统 所以下了个 tgz的 然后解压到/var/目录中

  tar zxvf Symfony_Standard_Vendors_ ### tgz C /var/

  上面的###是指版本号 我下的时候是BETA

  当解压之后 Symfony 的目录如下

  /var// < Web根目录 Symfony/ < Symfony 解压目录 app/ < 存放symfony的核心文件的目录 cache/ < 存放缓存文件的目录 config/ < 存放应用程序全局配置的目录 logs/ < 存放日志的目录 src/ < 应用程序源代码 vendor/ < 供应商或第三方的模组和插件 web/ < Web入口 app php < 生产环境下的前端控制器

  如果你需要安装(如果你下载的是without vendor版本)或更新vendor(第三方)内容时 可以使用

  cd /var//Symfony php bin/vendors install

  配置

  Symfony 的配置很简单 只需要在浏览器中输入

  //localhost/Symfony/web/config php

  然后按照提示来进行就可以了 其中值得注意的就是app/cache和app/logs目录的权限问题 由于我是在Ubuntu下安装的 所以可以使用(其中firehare是我的用户名 兄弟们在这里可以用你的用户名代替)

  #为了保险起见 rm rf app/cache/* rm rf app/logs/* #设置ACL sudo setfacl R m u: data:rwx m u:firehare:rwx app/cache app/logs sudo setfacl dR m u: data:rwx m u:firehare:rwx app/cache app/logs

  如果系统不支持setfacl命令的话 要检查 个地方

  setfacl是否已经安装 如果没有的话 可以通过以下命令安装(在Ubuntu 中好象已经缺省安装了 包为叫acl)

  sudo apt get install setfacl

  如果setfacl已经安装 那么请查看/etc/fstab文件 看看是否添加了acl选项

  # /var was on /dev/sda during installation UUID=c cc b a b a f /var ext defaults acl

  然后根据页面提示填写数据库名等信息 再将这些信息拷到/var//Symfony/app/config/parameters ini文件中 如下所示

  ; These parameters can be imported into other config files ; by enclosing the key with % (like %database_user%) ; Comments start with ; as in php ini [parameters] database_driver="pdo_mysql" database_host="localhost" database_name="symfony" database_user="symfony" database_password="symfony" mailer_transport="smtp" mailer_host="localhost" mailer_user="" mailer_password="" locale="zh_CN" secret=" f e e c cb dd d d c d b f"

  如果全部OK的话 在你浏览器中输入下列地址时 你将得到一个Demo页

  //localhost/Symfony/web/app_dev php

  编程

  创建Bundle

  首先创建一个Bundle

  php app/console gen:bundle "AcmeHelloBundle" src

  为了确保Acme名称空间可以被自动加载 请在你的app/autoload php文件添加下列语句

  $loader >registerNamespaces(array( // //添加自定义的名称空间 Acme => __DIR__ / /src // ));

  最后是将该Bundle注册到Symfony 中 请在你的app/AppKernel php文件中添加下列语句

  // app/AppKernel php public function registerBundles() $bundles = array( // new AcmeHelloBundleAcmeHelloBundle() ); // return $bundles;

  创建路由

  路由可以创建在app/config/routing yml中 但为了有个好的编程习惯和代码组织 可以将它放在所建Bundle目录中的Resources/config/routing yml中 而在app/config/routing yml中只保留到该路由文件的引用 如下所示

  # app/config/routing yml homepage: pattern: / defaults: _controller: FrameworkBundle:Default:index hello: resource: "@AcmeHelloBundle/Resources/config/routing yml"

  而真正的路由则写在src/Acme/HelloBundle/Resources/config/routing yml路由文件中 如下所示

  # src/Acme/HelloBundle/Resources/config/routing yml hello: pattern: /hello/name defaults: _controller: AcmeHelloBundle:Hello:index name: pu

  创建控制器

  控制器的名字一定得是HelloController php 原因很简单 因为你路由已经把控制器的名字给定下来了 在上面路由文件中的第 行和第 行中的控制器都是以AcmeHelloBundle:Hello开头的 其中AcmeHelloBundle表示Bundle名 而Hello则表示控制器名 所以控制器必须是HelloController php Controller名缀是命名约定 而至于后面的index和say则是控制器类中的方法 下面就定义了index方法 当然方法名为indexAction这个也是命名约定

  // src/Acme/HelloBundle/Controller/HelloController php namespace AcmeHelloBundleController; use SymfonyComponentHttpFoundationResponse; class HelloController public function indexAction($name) return new Response( <><body>Hello $name !</body></> );

  这样 当我们在浏览器中输入

  //localhost/hello/index/World

  就会显示Hello World!这样的字样

  创建模板

  为了能够重用布局文件中的区块 可以使用模板来代替控制器中的HTML语句 首先创建页面布局文件

  # app/Resources/views/layout ig # <!DOCTYPE > <> <head> <meta equiv="Content Type" content="text/; charset=utf " /> <title>% block title %Hello Application% endblock %</title> </head> <body> % block body %% endblock % </body> </>

  注意 该文件位于app/Resources/views/目录中 作用范围是整个应用程序的全局模板文件 在该文件中定义了两个区块 title和body 接下来就是创建一个专用于Hello控制器的模板 如下所示

  # src/Acme/HelloBundle/Resources/views/Hello/index ig # % extends ::layout ig % % block body % Hello name ! % endblock %

  在该文件中 它继承了全局模板 并且定义了区块body 这样就覆写了全局模板中的body区块 如果系统在渲染到该模板时 会将区块body覆写全局模板的区块body 再进行渲染

  最后 将控制器中的HTML语句改成渲染上述模板即可

  // src/Acme/HelloBundle/Controller/HelloController php namespace AcmeHelloBundleController; use SymfonyBundleFrameworkBundleControllerController; class HelloController extends Controller public function indexAction($name) return $this >render( AcmeHelloBundle:Hello:index ig array( name => $name));

  打完收功!我们已经创建了一个典型的Symfony 程序 如果兄弟们有什么疑问的话可以下面的评论中直接提

cha138/Article/program/PHP/201311/21317

相关参考

知识大全 国外主流PHP框架对比评测

国外主流PHP框架对比评测  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近简单的使用了目前在

知识大全 10款PHP开发框架的对比

10款PHP开发框架的对比  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!cha138/A

知识大全 Validator验证框架入门

Struts1.x系列教程(10):Validator验证框架入门  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一

知识大全 一个简单的PHP框架实现方法

一个简单的PHP框架实现方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  非原创自己集合了类A

知识大全 国外十大最流行PHP框架排名

国外十大最流行PHP框架排名  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下为十个目前最流行

知识大全 国外十大最流行的PHP框架排名

国外十大最流行的PHP框架排名  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下为十个目前最流

知识大全 php ci框架验证码实例分析

  php代码复制代码代码如下:<?phpclassCaptcha_codevar$width=;var$num=;var$height=;var$name=randcode;publicfun

知识大全 初学入门 PHP 和 MySQL

初学入门PHP和MySQL  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我想要使用要使用PHP

知识大全 Ajax+PHP简单入门[2]

Ajax+PHP简单入门[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!xmlHttponre

知识大全 PHP面向对象编程快速入门

PHP面向对象编程快速入门  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  面向对象编程(OOP)