1. Go to this page and download the library: Download josantonius/hook 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/ */
josantonius / hook example snippets
public function getPriority(): int;
public function getResult(): mixed;
public function isOnce(): bool;
public function wasDone(): bool;
public function __construct(private string $name);
/**
* Action will be maintained after performing actions and will be available if are done again.
*
* @see https://www.php.net/manual/en/functions.first_class_callable_syntax.php
*
* @return Action Added action.
*/
public function addAction(callable $callback, int $priority = Priority::NORMAL): Action;
/**
* Action will only be done once and will be deleted after it is done.
*
* It is recommended to use this method to release the actions
* from memory if the hook actions will only be done once.
*
* @return Action Added action.
*/
public function addActionOnce(callable $callback, int $priority = Priority::NORMAL): Action;
/**
* @throws HookException if the actions have already been done.
* @throws HookException if no actions were added for the hook.
*
* @return Action[] Done actions.
*/
public function doActions(mixed ...$arguments): array;
/**
* True if the hook has any action even if the action has been
* done before (recurring actions created with addAction).
*/
public function hasActions(): bool;
/**
* True if the hook has some action left undone.
*/
public function hasUndoneActions(): bool;
/**
* If doActions was executed at least once.
*/
public function hasDoneActions(): bool;
public function getName(): string;
public const HIGHEST = 50;
public const HIGH = 100;
public const NORMAL = 150;
public const LOW = 200;
public const LOWEST = 250;
use Josantonius\Hook\Exceptions\HookException;
use Josantonius\Hook\Hook;
$hook = new Hook('name');
use Josantonius\Hook\Hook;
class Foo {
public static function bar() { /* do something */ }
public static function baz() { /* do something */ }
}
$hook = new Hook('name');
$hook->addAction(Foo::bar(...));
$hook->addAction(Foo::baz(...));
use Josantonius\Hook\Hook;
use Josantonius\Hook\Priority;
class Foo {
public static function bar() { /* do something */ }
public static function baz() { /* do something */ }
}
$hook = new Hook('name');
$hook->addAction(Foo::bar(...), Priority::LOW);
$hook->addAction(Foo::baz(...), Priority::HIGH);
use Josantonius\Hook\Hook;
class Foo {
public function bar() { /* do something */ }
public function baz() { /* do something */ }
}
$foo = new Foo();
$hook = new Hook('name');
$hook->addActionOnce($foo->bar(...));
$hook->addActionOnce($foo->baz(...));
use Josantonius\Hook\Hook;
use Josantonius\Hook\Priority;
class Foo {
public function bar() { /* do something */ }
public function baz() { /* do something */ }
}
$foo = new Foo();
$hook = new Hook('name');
$hook->addActionOnce($foo->bar(...), Priority::LOW);
$hook->addActionOnce($foo->baz(...), Priority::HIGH);
use Josantonius\Hook\Hook;
function one() { /* do something */ }
function two() { /* do something */ }
$hook = new Hook('name');
$hook->addAction(one(...));
$hook->addAction(two(...));
/**
* The actions will be executed according to their natural order:
*
* one(), two()...
*/
$hook->doActions();
use Josantonius\Hook\Hook;
use Josantonius\Hook\Priority;
function a() { /* do something */ }
function b() { /* do something */ }
function c() { /* do something */ }
$hook = new Hook('name');
$hook->addAction(a(...), priority::LOW);
$hook->addAction(b(...), priority::NORMAL);
$hook->addAction(c(...), priority::HIGHEST);
/**
* Actions will be executed according to their priority:
*
* c(), b(), a()...
*/
$hook->doActions();
use Josantonius\Hook\Hook;
function foo($foo, $bar) { /* do something */ }
$hook = new Hook('name');
$hook->addAction(foo(...));
$hook->doActions('foo', 'bar');
use Josantonius\Hook\Hook;
function a() { /* do something */ }
function b() { /* do something */ }
function c() { /* do something */ }
$hook = new Hook('name');
$hook->addAction(a(...));
$hook->addAction(b(...));
$hook->addActionOnce(c(...)); // Will be done only once
$hook->doActions(); // a(), b(), c()
$hook->doActions(); // a(), b()
use Josantonius\Hook\Hook;
function one() { /* do something */ }
function two() { /* do something */ }
$hook = new Hook('name');
$hook->addActionOnce(one(...));
$hook->addActionOnce(tho(...));
$hook->doActions();
// $hook->doActions(); Throw exception since there are no actions to be done
use Josantonius\Hook\Hook;
function foo() { /* do something */ }
$hook = new Hook('name');
$hook->addAction(foo());
$hook->hasActions(); // true
$hook->doActions();
$hook->hasActions(); // True since the action is recurrent and remains stored
use Josantonius\Hook\Hook;
function foo() { /* do something */ }
$hook = new Hook('name');
$hook->addAction(foo());
$hook->hasUndoneActions(); // true
$hook->doActions();
$hook->hasUndoneActions(); // False since there are no undone actions
use Josantonius\Hook\Hook;
function foo() { /* do something */ }
$hook = new Hook('name');
$hook->addAction(foo());
$hook->hasDoneActions(); // false
$hook->doActions();
$hook->hasDoneActions(); // True since the actions were done
use Josantonius\Hook\Hook;
$hook = new Hook('foo');
$name = $hook->getName(); // foo
use Josantonius\Hook\Hook;
function foo() { /* do something */ }
$hook = new Hook('name');
$action = $hook->addAction(foo());
$action->getPriority();
use Josantonius\Hook\Hook;
function foo() { /* do something */ }
$hook = new Hook('name');
$action = $hook->addAction(foo());
$action->getResult();
use Josantonius\Hook\Hook;
function foo() { /* do something */ }
$hook = new Hook('name');
$action = $hook->addAction(foo());
$action->isOnce(); // false
$action = $hook->addActionOnce(foo());
$action->isOnce(); // true
use Josantonius\Hook\Hook;
function foo() { /* do something */ }
$hook = new Hook('name');
$action = $hook->addAction(foo());
$action->wasDone(); // false
$hook->doActions();
$action->wasDone(); // true
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.