Пример #1
0
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');