1. Go to this page and download the library: Download itjonction/blockcache 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/ */
use Itjonction\Blockcache\General\CacheManager;
use Illuminate\Cache\Repository;
use Illuminate\Redis\RedisManager;
use Illuminate\Cache\RedisStore;
use Illuminate\Foundation\Application;
// Configure Redis connection settings
$config = [
'default' => [
'url' => env('REDIS_URL', null),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DB', 0),
],
];
// Create the Redis manager instance
$redisManager = new RedisManager($app, 'predis', ['default' => $config['default']]);
// Create the Redis store instance
$redisStore = new RedisStore($redisManager, 'cache');
// Create the Cache repository instance
$cache = new Repository($redisStore);
$cacheManager = new CacheManager($cache);
if (! $cacheManager->startCache('my-cache-key') ){
echo "<div>view fragment</div>";
}
$output = $cacheManager->endCache();
// php/bootstrap/legacy/laravel.php
use Illuminate\Container\Container;
use Illuminate\Events\Dispatcher;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Config\Repository as ConfigRepository;
use Illuminate\Redis\RedisManager;
$container = new Container;
// Set up the event dispatcher
$events = new Dispatcher($container);
$container->instance('events', $events);
// Set up the configuration
$config = new ConfigRepository([
'app' => nager);
// Set up the Cache manager
$cacheManager = new CacheManager($container);
$container->instance('cache', $cacheManager);
return $container;
use Itjonction\Blockcache\General\CacheManager;
use Illuminate\Foundation\Application;
$container = >store('redis'));
if (! $cacheManager->startCache('my-cache-key') ){
echo "<div>view fragment</div>";
}
$output = $cacheManager->endCache();
Cache::tags('views')->flush();
use Itjonction\Blockcache\HasCacheKey;
class Post extends Eloquent
{
use HasCacheKey;
}
class YourModel extends Model
{
public $timestamps = true;
}
namespace App;
use Itjonction\Blockcache\HasCacheKey;
use Illuminate\Database\Eloquent\Model;
class Note extends Model
{
use HasCacheKey;
protected $touches = ['card'];
public function card()
{
return $this->belongsTo(Card::class);
}
}
public function test_it_handles_multiple_tags()
{
$directive = $this->createNewCacheDirective();
$directive->setUp('my-unique-key', ['tags' => ['orders','invoices']]);
echo "<div>view tags</div>";
$directive->tearDown();
$options = $directive->getOptions();
$this->assertIsArray($options, 'Options should be an array.');
$this->assertArrayHasKey('tags', $options, 'Options should contain a tags key.');
$this->assertIsArray($options['tags'], 'Tags should be an array.');
// Check using the exact combination of tags
$this->assertTrue($this->cacheManager->has('my-unique-key', ['orders', 'invoices']));
}
namespace App\Http\Controllers;
use Psr\Log\LoggerInterface;
class ExampleController extends Controller
{
protected $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function index()
{
$this->logger->info('This is a custom log message.');
}
}
use Itjonction\Blockcache\BladeDirective;
use Illuminate\Cache\ArrayStore;
use Illuminate\Cache\Repository;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$cache = new Repository(new ArrayStore);
$logger = new Logger('blockcache');
$logger->pushHandler(new StreamHandler(storage_path('logs/blockcache.log'), Logger::DEBUG));
$bladeDirective = new BladeDirective($cache, $logger);
use Monolog\Logger;
use Monolog\Handler\TestHandler;
use Itjonction\Blockcache\BladeDirective;
use Illuminate\Cache\ArrayStore;
use Illuminate\Cache\Repository;
class BladeDirectiveTest extends TestCase
{
protected Logger $logger;
protected TestHandler $testHandler;
public function setUp(): void
{
parent::setUp();
$this->testHandler = new TestHandler();
$this->logger = new Logger('blockcache_test');
$this->logger->pushHandler($this->testHandler);
}
public function test_logging_unknown_strategy()
{
$cache = new Repository(new ArrayStore);
$directive = new BladeDirective($cache, $this->logger);
$directive->setUp('test_key', ['unknown_strategy' => true]);
$directive->tearDown();
$this->assertTrue($this->testHandler->hasErrorThatContains('Unknown strategy: unknown_strategy'));
}
}
html
@cache($card)
<article class="Card">
<h2>{{ $card->title }}</h2>
<ul>
@foreach ($card->notes as $note)
@
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.