1. Go to this page and download the library: Download glhd/hooks 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/ */
glhd / hooks example snippets
use Glhd\Hooks\Hookable;
class MySessionClass implements SessionHandlerInterface
{
use Hookable;
public function public open(string $path, string $name): bool
{
$this->callHook('beforeOpened', $name);
// ...
}
public function write(string $id, string $data): bool
{
$this->callHook('beforeWritten');
// ..
}
}
// Get all the available hook points
$hooks = Session::hook();
// Register your custom code to execute at those points
$hooks->beforeOpened(function($name) {
Log::info("Starting session '$name'");
});
$hooks->beforeWritten(function() {
Log::info('Writing session to storage');
});
use Glhd\Hooks\Hookable;
class Mailer
{
use Hookable;
protected function setRecipients() {
$recipients = $this->callHook('preparingRecipients')
->filter()
->append($this->to);
$this->service->setTo($recipients);
}
}
// Always add QA to recipient list in staging
if (App::environment('staging')) {
Mailer::hook()->preparingRecipients(fn() => '[email protected]');
}
use Glhd\Hooks\Hookable;
class Mailer
{
use Hookable;
protected function send() {
$result = $this->callHook('beforeSend', $this->message, shouldSend: true);
if ($result->shouldSend) {
$this->service->send();
}
}
}
// Never send mail to mailinator addresses
Mailer::hook()->beforeSend(function($message, $context) {
if (str_contains($message->to, '@mailinator.com')) {
$context->shouldSend = false;
}
});
// Somewhere in a `PromotionsServiceProvider` class, perhaps…
if ($this->isInCyberMondayPromotionalPeriod()) {
View::hook('emails.receipt', 'intro', fn() => view('emails.promotions._cyber_monday_intro'));
}
if (Auth::user()->isNewRegistrant()) {
View::hook('emails.receipt', 'footer', fn() => view('emails.promotions._thank_you_for_first_purchase'));
}