symfony05:基础设施

基础设施

一些技术在symfony中会反复使用,你也会非常频繁的遭遇他们,这些技术包括参数仓库、常量以及自动加载类。

参数仓库

许多symfony类包括一个参数仓库,他是一种便捷的通过单纯的gettersetter方法封装属性的方式。例如,sfResponse类就有一个通过调用getParameterHolder()方法获取的参数仓库:

$response->getParameterHolder()->set('foo', 'bar');

echo $response->getParameterHolder()->get('foo');

 => 'bar'

很多类使用参数仓库提供代理方法来减少get/set操作的代码,上面的代码可以简化为:

$response->setParameter('foo', 'bar');

echo $response->getParameter('foo');

 => 'bar'


    
    
     
      
    
    

当然,你可以在自己的类中添加参数仓库来体验这种优势:

class MyClass

{

  protected $parameter_holder = null;

 

  public function initialize ($parameters = array())

  {

    $this->parameter_holder = new sfParameterHolder();

    $this->parameter_holder->add($parameters);

  }

 

  public function getParameterHolder()

  {

    return $this->parameter_holder;

  }

}

常量

你会发现,在symfony中只有少数的常量,这是因为PHP的问题:一旦一定义了常量你就无法更改他的值。所以symfony使用他自己的配置对象——sfConfig——来取代常量。他提供了静态方法使得在任何地方都可以访问参数:

//代替PHP常量,

define('SF_FOO', 'bar');

echo SF_FOO;

// Symfony 使用sfConfig对象

sfConfig::set('sf_foo', 'bar');

echo sfConfig::get('sf_foo');

sfConfig方法支持默认值,而且你可以对一个参数多次调用sfConfig::set()方法来更改他

自动加载类

通常地,当你使用一个类方法或者在PHP中创建一个对象,你需要首先包含类的定义

include 'classes/MyClass.php';

$myObject = new MyClass();

但在包含了大量类并且具有很深目录结构的大型项目中,要做到明了的类定义包含是很困难的。通过提供一个__autoload()方法(或者一个spl_autoload_register()方法),symfony使得包含语句不再必须,你可以直接写:

$myObject = new MyClass();

Symfony 将在 lib 下所有的 php 文件中查找 MyClass 的定义,如果找到了就自动包含进来。所以,如果你将所有的类存储宰了 lib 下则无需在写包含语句。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值