Archive for the ‘symfony’ Category

Symfony 中对类的扩展机制

Sunday, March 1st, 2009

PHP对类的处理有一些局限,不能动态的往类里面添加方法,也不能动态的修改一个类的访问权限,所以 Symfony 使用某种方式扩充了 PHP 的这一局限,在 Symfony1.0 中使用的机制被称为 Mixins,在Symfony1.2 中使用的机制被称为 Event

假设我们需要向Action中注册一个新的方法(仅限1.1和1.2版本的Symofny),Symfony在/symfony/lib/action/sfComponents.class.php中用__call方法提供了一个注册新方法的接口,修改项目文件中的/project/apps/appName/config/appNameConfiguration.class.php中的内容为:

<?php
class appNameConfiguration extends sfApplicationConfiguration
{
  public function configure()
  {
    // 进行注册
    $this->dispatcher->connect('component.method_not_found', array($this, 'newFunction'));
  }
 
  // 需要注册的方法
  public static function newFunction(sfEvent $event)
  {
    echo 'Hello World';
    exit;
  }
}

这样我们就可以在任何Action中使用$this->newFunction()的方式调用。

Symfony的几个核心类都提供了这个机制(Click Me),合理的使用可以让代码的结构清晰,当然,代码追踪会失效,在模块化的程序中滥用也会大大的降低程序的可维护行。Symfony的Mixins或者Event机制不仅仅可以给类添加方法,还能能方法添加执行代码,这个用的不是很普遍,就不赘述了。

Use Symfony at Dreamhost

Monday, October 13th, 2008

Symfony's new form system

Wednesday, October 8th, 2008

Learn Propel1.3.0 inside Symfony1.2

Monday, October 6th, 2008

How to install Symfony1.1

Sunday, September 7th, 2008