catch(Exception $e) { $t->fail('Custom finder methods can be called on a DbFinder initialized with a finder name'); } class myArticleFinder extends DbFinder { protected $class = 'Article'; } $finder = DbFinder::from('myArticle'); $t->ok($finder instanceof myArticleFinder, 'A class extending DbFinder can have any name'); $t->ok($finder->getAdapter() instanceof sfPropelFinder, 'A class extending DbFinder can have any name'); $t->is($finder->getAdapter()->getClass(), 'Article', 'A class extending DbFinder can have any name'); $finder = DbFinder::fromCollection(array($article2)); $t->ok($finder instanceof ArticleFinder, 'fromCollection() returns a custom finder if it exists'); $article = $finder->findOne(); $t->is($article->getId(), $article2Id, 'fromCollection() works on custom finders'); $finder = DbFinder::from('Article'); $t->is($finder->test_value, 1, 'initialize() is automatically executed at initialization on custom finders'); $finder = new ArticleFinder(); $t->is($finder->test_value, 1, 'initialize() is automatically executed at initialization on custom finders'); class myDbFinder extends DbFinder { } $finder = myDbFinder::from('Comment'); $t->ok(!$finder instanceof myDbFinder, 'Late static binding prevents deriving directly from DbFinder');