public function testPassedRendererGetsContextObject() { $context = new AdhocContext(); $renderer = $this->getMock(Renderer::class); $renderer->expects($this->at(0))->method('render')->with('inner_content', $context)->willReturn('the content'); $renderer->expects($this->at(1))->method('render')->with('layout', $this->isInstanceOf(TwoStepContext::class))->willReturn('Final content'); $twoStep = new TwoStepRenderer($renderer, 'layout'); $this->assertSame('Final content', $twoStep->render('inner_content', $context)); }
<?php require_once __DIR__ . '/000-example_functions.php'; require_once dirname(__DIR__) . '/vendor/autoload.php'; use Cspray\Platelets\FileRenderer; use Cspray\Platelets\TwoStepRenderer; use Cspray\Platelets\AdhocContext; use function Cspray\Platelets\Examples\stdout; $fileRenderer = new FileRenderer(__DIR__ . '/templates'); $renderer = new TwoStepRenderer($fileRenderer, 'second_step_layout'); $data = ['dynamic' => 'dynamic']; $output = $renderer->render('first_step_content', new AdhocContext($data)); stdout($output);
<?php require_once __DIR__ . '/000-example_functions.php'; require_once dirname(__DIR__) . '/vendor/autoload.php'; use Cspray\Platelets\FileRenderer; use Cspray\Platelets\EventTriggeringRenderer; use Cspray\Platelets\TwoStepRenderer; use Cspray\Platelets\AdhocContext; use Symfony\Component\EventDispatcher\EventDispatcher; $fileRenderer = new FileRenderer(__DIR__ . '/templates'); $dispatcher = new EventDispatcher(); $eventRenderer = new EventTriggeringRenderer($fileRenderer, $dispatcher); $renderer = new TwoStepRenderer($eventRenderer, 'second_step_layout'); $beforeCalled = 0; $dispatcher->addListener($eventRenderer::BEFORE_RENDER_EVENT, function () use(&$beforeCalled) { $beforeCalled++; stdout('The before listener has been called ' . $beforeCalled . ' time(s)'); }); $afterCalled = 0; $dispatcher->addListener($eventRenderer::AFTER_RENDER_EVENT, function () use(&$afterCalled) { $afterCalled++; stdout('The after listener has been called ' . $afterCalled . ' time(s)'); }); $output = $renderer->render('first_step_content', new AdhocContext(['dynamic' => 'dynamic'])); stdout($output);