От FxCop управляют страницей на этом:
после маркировки методов как статичные компилятор испустит сайты невиртуального вызова этим участникам. Испускание сайтов невиртуального вызова предотвратит проверку во времени выполнения для каждого вызова, который гарантирует, что текущий объектный указатель является непустым. Это может привести к измеримому увеличению производительности для чувствительного к производительности кода. В некоторых случаях отказ получить доступ к текущему экземпляру объекта представляет проблему правильности.
Филипп В. написал хороший пример: http://php.oregonstate.edu/manual/en/directoryiterator.isfile.php
function cmpSPLFileInfo( $splFileInfo1, $splFileInfo2 )
{
return strcmp( $splFileInfo1->getFileName(), $splFileInfo2->getFileName() );
}
class DirList extends RecursiveDirectoryIterator
{
private $dirArray;
public function __construct( $p )
{
parent::__construct( $p );
$this->dirArray = new ArrayObject();
foreach( $this as $item )
{
$this->dirArray->append( $item );
}
$this->dirArray->uasort( "cmpSPLFileInfo" );
}
public function getIterator()
{
return $this->dirArray->getIterator();
}
}