使用usort避免使用硬编码的类名

时间:2011-03-01 14:17:06

标签: php oop

我正在静态方法中实现排序解决方案。基本上,我有:

  1. 静态类(Xbanners
  2. 此类中包含对象数组的静态属性(Xbanners::$banners
  3. 一种静态方法,根据在这些对象(Xbanners::$banners[0]->priority)上存储为属性的一个参数对该对象数组进行排序。
  4. 我只是使用usort()来调用排序方法,但我必须硬编码我的类的名称。我怎么能避免这个?

    usort(self::$banners, 'Xbanners::' . $sortingMethod);
    

1 个答案:

答案 0 :(得分:4)

您可以使用__CLASS__代替硬编码的类名称和数组作为回调定义àla,

usort( self::$banners, array( __CLASS__, $sortingMethod ) );

但是,我会严格建议不要使用任何静态成员,而是以面向对象的方式实现您的功能。这避免了后来的继承问题,并且是一种更清洁的方法(例如,测试方式)。