1. Go to this page and download the library: Download krak/presenter library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
krak / presenter example snippets
interface Presenter
{
/**
* Present the view and return the content associated with it
* @param mixed $view
* @return string
*/
public function present($view);
/**
* Whether or not the presenter can actually present the data/view
* @param mixed $data
* @return bool
*/
public function canPresent($view);
}
$content = $presenter->present($view);
use Krak\Presenter\ViewPresenter;
use Krak\Presenter\View\View;
use Krak\Presenter\View\ViewTrait;
use Symfony\Component\Config\FileLocator;
class MyView implements View
{
use ViewTrait;
private $view_file = 'my-view';
// or just define the getViewFile function
public function getViewFile()
{
return 'my-view';
}
public function getHeader()
{
return '<h1>Header</h1>';
}
}
$presenter = new ViewPresenter(FileLocator(__DIR__ . '/views'), 'php', 'v');
echo $presenter->present(new MyView());
$presenter->setViewAlias('v_alias');
echo $presenter->getViewAlias();
// outputs: v_alias
// then in some-view file
<html>
<?=$v_alias->getData()
use Krak\Presenter\MockPresenter;
$presenter = new MockPresenter();
$view = new stdClass();
$presenter->mock($view, 'some-data');
echo $presenter->present($view);
use Krak\Presenter\CachePresenter;
use Krak\Presenter\View\CacheableView;
use Doctrine\Common\Cache\ArrayCache;
class MyView implements CacheableView
{
public function getCacheTuple()
{
return array('my-view-cache-key', 3600);
}
}
/* $presenter is another instanceof Presenter defined beforehand */
$cache = new ArrayCache();
$cache_presenter = new CachePresenter($presenter, $cache);
$data = $cache_presetner->present(new MyView());
var_dump($data === $cache->fetch('my-view-cache-key');
use Krak\Presenter\TreePresenter;
use Krak\Presenter\View\View;
use Krak\Presenter\View\TreeView;
use Krak\Presenter\View\TreeViewTrait;
use Krak\Presenter\ViewPresenter;
class TreeViewChild implements View, TreeView
{
use ViewTrait;
use TreeViewTrait;
private $view_file = 'child-view.php';
public function getData()
{
return 'some-data';
}
}
class TreeViewParent implements View, TreeView
{
use TreeViewTrait;
private $child1;
private $view_file = 'parent-view.php';
public function __construct()
{
$this->child1 = new TreeViewChild();
}
public function getChildren()
{
return array($this->child1);
}
public function getChild1()
{
return $this->child1;
}
}
$view_presenter = new ViewPresenter($locator);
$tree_presenter = new TreePresenter($view_presenter);
echo $tree_presenter->present(new TreeViewParent());
interface View
{
/**
* @return string
*/
public function getViewFile();
}
interface TreeView
{
/**
* @return TreeView[]
*/
public function getChildren();
/**
* Set the rendered content for this view
* @var string
*/
public function setContent($content);
/**
* get the rendered content for this view
* @return string
*/
public function getContent();
}
interface CacheableView
{
/**
* Returns a tuple of the cache key and ttl
* @return array
*/
public function getCacheTuple();
}
array('key', 3600);
use Krak\Presenter\View\AnonymousView;
$v = new AnonymousView('some-view-file', array('key'=>'val'));
// or
$v = AnonymousView::create('some-view-file'); // data is defaulted to an empty array