Ir para o conteúdo

PHP SimpleEventsSystem

Esta classe permite usar eventos em PHP. Anexam-se as funções a determinado evento, e estas serão executadas assim que o evento for chamado. Podem fazer o download dela aqui.

Exemplo

<?php
//Inclui a classe
require("Events.php");


function function_1 (){
    echo "Function_1 executada";
}

//Adiciona uma função a um evento. Não é preciso declarar o evento, pois se ele não existir a classe cria-o automaticamente.
Events::Attach("system.core.echo", "function_1");

echo "1";
//Corre todos os eventos anexados ao evento "system.core.echo"
Events::Run("system.core.echo");

?>

Instanciar

Não é preciso. Basta usar a classe estática Events.

Configurações

As configurações são bastante simples. Existem três funções, uma para alterar uma configuração, uma para verificar se a variável de configuração existe e outra para ler o valor actual.

confExists

Esta função retorna true caso a variável de configuração exista e false caso não exista.

boolean confExists(string $var_name):

  • var_name O nome da variável de configuração a verificar se existe.

getConf

Esta função retorna o valor actual de uma variável de configuração.

* getConf(string $var_name)

  • var_name O nome da variável de uma variável de configuração para obter.

Se a variável de configuração não existir, a função retorna false.

setConf

Esta função altera o valor de uma variável de configuração.

* setConf(string $var_name, string $var_value)

  • var_name - O nome da variável de configuração a obter
  • var_value - O valor a colocar na variável de configuração

Se a variável de configuração não existir, a função retorna false.

Lisa de Variáveis de Configuração

Auto_run

  • Tipo: Boolean
  • Dependências: Nenhuma

Se esta variável estiver a true, ao executar a função Run() para um determinado evento, e função vai também procurar funções definidas pelo utilizador que obedeçam à seguinte estrutura:

//A parte nome_da_funcao é completamente personalizavel.
function nome_da_funcao_handles_nome_do_evento(){}

Auto_index

  • Tipo: Boolean
  • Dependências: Variável Auto_run = true

Se estiver a true, para além de executar as funções encontradas, também as coloca na lista do array.

API

Attach

Esta função anexa uma função a um evento.

boolean Attach (string $event_name, string|array $function_name, [boolean $verify_function = false])

  • $event_name — O nome do evento a que se quer anexar a função. Se o evento não existir, a classe criá-lo-á automaticamente.
  • $function_name — O nome da função a anexar. Pode ser um array unidimensional.
  • $verify_function — Se estiver a true, apenas deixa adicionar funções que já estejam declaradas. Se estiver a false, deixa passar todas. Se no momento em que o evento correr, a função ainda não estiver declarada, a classe passa-a e não a executa.

A função retorna true caso a operação tenha corrido com êxito, e false caso tenha ocorrido algum erro.

Aviso: Possibilidades de erro:

  • Os argumentos não estarem devidamente preenchidos.
  • A opção de verificar a função estar activada e a função não existir.
  • A função já estar anexada ao mesmo evento.

Exemplo

<?php
require("Events.php");

function function_1 (){
    echo "Function_1"
}

function function_4 (){
    echo "Function_4";
}

//Este exemplo vai funcionar
Events::Attach("system.core.example", "function_1");


//Este exemplo não vai funcionar porque a fiunção já foi anexada ao evento
Events::Attach("system.core.example", "function_1");


//Este exemplo vai funcionar pois o evento declarado é outro
Events::Attach("system.core.teste", "function_1");

//Este exemplo vai funcionar
Events::Attach("system.core.example", "function_2");

//Este exemplo não vai anexar a função e vai retornar false
Events::Attach("system.core.example", "function_2", true);


//Este exemplo apena vai anexar a function_4, no entanto vai retornar false
Events::Attach("system.core.example", array("function_2", "function_3", "function_4", true);

//Ao chamar a função Run, ele vai apenas executar a function_1, e deixar a function_2 do segundo exemplo de lado.
Events::Run("system.core.echo");
?>

Detach

Esta função vai desanexar uma função ou mesmo remover um evento.

boolean Detach (string $event_name, [string|array $function_name = ""])

  • $string_name O nome do evento a apagar.
  • $function_name O nome da função a desanexar. Se não for declarado, a função apaga todo o evento. Pode ser apenas uma string ou um array com uma lista de funções a desanexar.

A função retorna true caso execute com êxito e false caso ocorra algum erro.

Aviso: Possibilidades de Erro:

  • O argumento $event_name não estar preenchido.
  • O evento não existir.

Exemplo

<?php
require("Events.php");

function function_1 (){
    echo "Function_1"
}

function function_2 (){
    echo "Function_2";
}

Events::Attach("system.core.example", "function_1");
Events::Attach("system.core.example", "function_2");
Events::Attach("system.core.example", "function_3");

Events::Detach("system.core.example", "function_2");

//Ao chamar a função Run, ele vai apenas executar a function_1, e deixar a function_3 de lado.
Events::Run("system.core.echo");

//Com esta função ele vai eliminar o evento "system.core.example"
Events::Detach("system.core.example");

//Ao chamar a função Run desta vez, ele não vai executar nenhuma função e vai retornar false, pois o evento não existe (foi apagado)
Events::Run("system.core.echo");

?>

Run

Esta função vai executar todas as funções associadas a um determinado evento.

boolean Run(string $event_name, [array $paramsList = ""])

  • $event_name O nome do evento a executar.
  • $paramsList Um array com parâmetros a passar para as funções.

Aviso: Tem de ter cuidado ao usar os parâmetros, pois se uma função não tiver os parâmetros correspondentes, o PHP dará erro!

A função retorna true caso execute com êxito e false caso ocorra algum erro.

Aviso: Possibilidades de erro:

  • Os parâmetros não estarem devidamente preenchidos.
  • O evento declarado não existir.

Funções que não existam, mas estejam anexadas ao evento não dão origem a erros.

Show

Esta função mostra ou retorna os actuais eventos e as respectivas funções anexadas.

boolean|string Show ([string $event_name = "", [string $output]])

  • $event_name Nome do evento a mostrar. Se não for declarado, ou for deixado em branco, a função mostra todas as funções de todos os eventos.
  • $output Se for definido como true, a função imprime automaticamente para o ecrã. Se estiver definida como false retorna uma string.

A função retorna true caso o argumento $output esteja igual a true e tenha sido executada com êxito, retorna uma string caso o argumento $output esteja igual a false e tenha sido executada com êxito, ou retorna false em caso de erro.

Aviso: Possibilidades de erro:

  • O evento declarado não existir.

Exemplo

<?php
require("Events.php");

function function_1 (){
    echo "Function_1"
}

function function_2 (){
    echo "Function_2";
}

Events::Attach("system.core.example", "function_1");
Events::Attach("system.core.example", "function_2");
Events::Attach("system.core.example", "function_3");

Events::Attach("system.core.teste", "function_1");

//Esta função irá imprimir as quatro funções.
Events::Show();

//Esta função irá imprimir apenas uma função.
Events::Show("system.core.teste");

//Neste caso a variável $content irá ficar com a informação de apenas três funções
$content = Events::Show("system.core.example", false);

//Neste caso, a função vai retornar false (erro) pois o evento não existe
$content = Events::Show("system.core.new_event");
?>

Exist

Esta função verifica so um determinado evento existe, ou se uma determinada função lhe está anexada.

boolean Exist(string $event_name, [string $function_name = ""])

  • $event_name O nome do evento a verificar se existe.
  • $function_name O nome da função a verificar se está anexada ao evento.

A função retorna true se o evento existir, e se a função estiver declarada a ele. Retorna false se o evento não existir, ou a função não estiver declarada a ele.

Exemplo

<?php

require("Events.php");


Events::Attach("some_event", "some_function");
Events::Attach("some_event", "other_function");

//Como o evento existe, vai retornar true
echo Events::Exist("some_event");

//Como o evento existe, e a função está anexada a ele, vai retornar true
echo Events::Exist("some_event", "some_function");

//Como o evento não existe, e apesar de a função existir, ele vai retornar false
echo Events::Exist("other_event", "some_function");

//Devido à função não estar anexada ao evento, ele vai retornar false
echo Events::Exist("some_event", "function_1");
?>

getList

A função getList() retorna o array com os eventos e as respectivas funções anexadas.

Aviso: Devem-se sempre usar as funções disponibilizadas pela classe para realizar acções que tenham a ver com o array, tais como verificar se a função existe, pois a sua estrutura pode mudar a qualquer versão e a sua aplicação pode deixar de funcionar.

Disable/Enable

As funções Disable()/Enable() desabilitam/habilitam, respectivamente, o funcionamento da classe.

Algumas funções não são afectadas por esta funcionalidade. Essas funções são:

  • Exist()
  • getList()
  • getlastError()
  • clearErrorsLog()

Exemplo

<?php

require("Events.php");

//Esta função vai funcionar
Events::Attach("some_event", "some_function");

Events::Disable();

//Esta função não vai funcionar
Events::Run("some_event");

//Esta função também não vai funcionar
Events::Attach("some_event", "other_function");

Events::Enable();

//Esta função vai retornar false porque a função  não está anexada, e portanto, não vai fazer nada
Events::Detach("some_event", "other_function");

//Esta função apenas vai correr a função "some_function"
Events::Run("some_event");
?>