1. Go to this page and download the library: Download brain/context 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/ */
brain / context example snippets
use Brain\Context;
class HomepageContext implements Context\ProviderFactory
{
public function create(\WP_Query $query, LoggerInterface $logger): ?Provider
{
return Context\Provider\ArrayMerge::new(fn() => $query->is_front_page())
->addProvider(new MyHeroProvider())
->addProvider(new Context\Provider\Posts(['posts_per_page' => 5], 'latest_posts'));
}
}
class SingularContext implements Context\ProviderFactory
{
public function create(\WP_Query $query, LoggerInterface $logger): ?Provider
{
return Context\Provider\ArrayMerge::new(fn() => $query->is_singular())
->addProvider(new Context\Provider\ByCallback(fn() => ['post' => $query->post]))
->addProvider(new Context\Provider\Comments(['post_id' => $query->post->ID]));
}
}
namespace MyTheme;
use Brain\Context;
add_action('template_redirect', function () {
$context = Context\Context::new()
->withProviderFactory(new HomepageContext())
->withProviderFactory(new SingularContext())
->provide();
// pass context to templates here ...
});
namespace MyTheme;
use Brain\Context;
add_action('brain.context.providers', function (Context\Context $context) {
$context
->withProviderFactory(new HomepageContext())
->withProviderFactory(new SingularContext());
});
add_action('template_redirect', function () {
$context = Context\Context::new()->provide();
// pass context to templates here ...
});
namespace My\Theme;
use Brain\Hierarchy\{Finder, Loader, QueryTemplate};
use Brain\Context;
class MustacheTemplateLoader implements Loader\Loader
{
private $engine;
public function __construct(\Mustache_Engine $engine)
{
$this->engine = $engine;
}
public function load(string $templatePath): string
{
// It will be possible to hook 'brain.context.providers' to add context providers
$data = Context\Context::new()
->convertEntitiesToPlainObjects()
->forwardGlobals()
->provide();
return $this->engine->render(file_get_contents($templatePath), $data);
}
}
add_action('template_redirect', function() {
if (!QueryTemplate::mainQueryTemplateAllowed()) {
return;
}
$queryTemplate = new QueryTemplate(
new Finder\BySubfolder('templates', 'mustache'),
new MustacheTemplateLoader(new \Mustache_Engine())
);
$content = $queryTemplate->loadTemplate(null, true, $found);
$found and die($content);
});
public function provide(\WP_Query $query, LoggerInterface $logger): ?array;
add_action('brain.context.logger', function (callable $setter) {
$setter(new MyPsr3Logger());
});
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.