Download the PHP package asgard/hook without Composer

On this page you can find all versions of the php package asgard/hook. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package hook

Hook

Build Status

If you have ever used an event manager, you will find the Hooks component very similar. With the HookManager you can create hooks, on which you can hook callbacks to be executed when the hooks are triggered.

Installation

If you are working on an Asgard project you don't need to install this library as it is already part of the standard libraries.

composer require asgard/hook 0.*

Usage in the Asgard Framework

$hm = $container['hooks'];

The singleton but it is not recommended.

Usage outside the Asgard Framework

$hm = new \Asgard\Hook\HookManager;

Create a hook

$hm->hook('name_of_hook', function($chain, $param1) {
    // ...
});

The first parameter is always a \Asgard\Hook\HooksChain object. The next ones are passed when the hook is triggered.

Trigger a hook

$hm->trigger('name_of_hook', [$param]);

If you want to execute your own function when calling trigger, use the last argument:

$hm->trigger('name_of_hook', [$param], function($chain, $param) {
    // ...
});

Executing callbacks before and after hooks

To execute functions before a hook:

$hm->preHook('name_of_hook', function($chain, $param) {
    // ...
});

And after:

$hm->postHook('name_of_hook', function($chain, $param) {
    // ...
});

Filters

Hooks can be used as filters when parameters are passed by reference

$hm->hook('name_of_hook', function($chain, &$param) {
    $param = 123;
});
$hm->trigger('name_of_hook', [&$param]);

The HooksChain object

The chain contains all the callbacks to be executed in a hook. If a function returns a value, the chain stops and the value is returned by the trigger method.

The chain call also be stopped by calling:

$chain->stop();

The function calling the stop method will be the last one to be executed.

To know how many functions have been executed in a hook:

$hm->trigger('name_of_hook', [$param], null, $chain);
$count = $chain->executed;

Here we provide a reference to retrieve the chain object and its executed property.

HooksContainer

A HooksContainer is a class containing hooks. It extends Asgard\Hook\HooksContainer and contains methods that are matched to hooks with annotations.

Example:

<?php
namespace Bundle\Hooks;

class SomeHooks extends \Asgard\Hook\HooksContainer {
    /**
     * @Hook("Asgard.Http.Start")
     */
    public static function start($chain, $request) {
        //do something when HTTP starts processing a request
    }
}

Here the method start is executed when the hook "Asgard.Http.Start" is triggered.

If you are working with a Asgard project, all HooksContainer in the Hooks/ folder of a bundle are automatically loaded.

If not, you can register the hooks with:

$annotationsReader = new \Asgard\Hook\AnnotationReader;
$hooks = $annotationsReader->fetchHooks('Bundle\Hooks\SomeHooks');
$hookManager->hooks($hooks);

Contributing

Please submit all issues and pull requests to the asgardphp/asgard repository.

License

The Asgard framework is open-sourced software licensed under the MIT license


All versions of hook with dependencies

PHP Build Version
Package Version
Requires php Version >=5.5.9
jeremeamia/superclosure Version ^2.0
doctrine/annotations Version ^1.0
asgard/container Version ~0.3.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package asgard/hook contains the following files

Loading the files please wait ...