symony入门教程【一】

【这是本人原创的文章,属于初中级别的,大神勿喷,如有过错请多多指点,看客们也请多多给赞,我会继续更新此系列文章】

安装

想了一想还是说一下怎么快速安装吧,请记得仔细看symfony.com的手册.如果你英文不是很好,请看我是怎么安装的:

下载symfony.phar文件,浏览器就能下载:

http://symfony.com/installer

将此文件移动到你的web目录,cmd中cd到web目录,输入如下命令:

php symfony.phar

如果没有出现错误就可以创建你的第一个应用了,这样就创建了一个名字为symfony的应用。

php symfony.phar new symfony

建议同时也把symfony demo也装好

php symfony.phar demo

如果你一切都弄好了,hosts改好了,http.vhosts.conf也改好了[这个如果你不会的话建议百度关键词:windows xampp wamp apache 虚拟域名配置],那么你可以用你的域名访问默认页面,我的域名是 symfony.dev

我安装的symfony有一个bug,默认页的css没有被加载下来,这样的话你的应用如果出现错误了,提示【debug】页面将很难看,建议还是按照下面的方法处理一下:将 symfony demo项目的/web/bundles/下面的两个目录复制到你项目的同级目录,这样默认页就可以正常显示了:

symony入门教程【一】_第1张图片

symfony入口

symfony一切的开始应该是从appkernel【/app/AppKernel.php】这个类开始的,在app.php和app_dev.php中都有实例化这个类,而这两个文件正是项目的入口文件:

app_dev.php :

$kernel = new AppKernel('dev', true);

app.php:

$kernel = new AppKernel('prod', false);

看到参数dev【开发环境】,prod【生产环境】一切就不言而喻了吧。

appkernel干嘛用的呢?注册bundle用的,我们都知道,symfony一切皆bundle,连自己的核心代码都写在bundle里面,用户的应用也是放在bundle里面的,看AppKernel类,它继承了Kernel类,而Kernel类实现了两个接口,KernelInterface, TerminableInterface。

现在你可以开始对symfony demo熟悉了一下 【demo的安装方法在你安装symfony的CLI中都有明确的说明】,熟悉一下后可以开始尝试创建自己的bundle.


创建bundel

(创建bundle的命令请参见手册,或者你目前也可以跳过这一步使用默认的Appbundle)

如果你的bundle使用的是annotation格式的路由,请在控制器的开头加上

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

如果你使用的是phpstrom,它会提示里这个命名空间没有被使用,这是正常的,因为你的路由写在注释里面

进阶教程

更好的模板赋值方法

现在要说说twig和smarty这两个模板引擎,symfony自带的是自己研发的twig,如果熟悉了smarty的小伙伴可能不习惯用symfony的$this->render(‘模板名’,array('变量名' => '变量值'))这样的模板赋值的方法,或者我们在渲染模板的时候需要对变量做判断,进行其他处理,现在使用如下方法可以$this->assgin('变量名',‘变量值’)然后再$this->render()渲染模板:

定义一个CommonController.php放在DefaultController.php同级目录,让他继承Controller.php[注意命名空间的引用,不然会报找不到类Controller之类的错误],然后DefaultController.php继承CommonController.php

在CommonController 添加属性 

protected $parameters;

创建赋值的方法:

public function assign($key, $value) {
    $this->parameters[$key] = $value;
}

关键的一步:重写render方法,:

public function render($view = '', array $parameters = array(), Response $response = null) {
    $view = $this->getDefaultView($view);
    $parameters = array_merge($this->parameters, $parameters);
    return parent::render($view, $parameters, $response);
}

我这里$views可以为空,因为有getDefaultView查找默认模板,相信你也会写一个查找默认模板的函数把。

本节到此为止,谢谢各位。


你可能感兴趣的:(symony入门教程【一】)