Login   Register  
PHP Classes
elePHPant
Icontem

File: Delegate.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of sdwrage  >  Delegate  >  Delegate.php  >  Download  
File: Delegate.php
Role: Class source
Content type: text/plain
Description: Delegate Class File
Class: Delegate
Manage and call closures and callback functions
Author: By
Last change:
Date: 5 years ago
Size: 1,697 bytes
 

Contents

Class file image Download
<?php
/**
 * Delegate Class
 *
 * Class for creating a delegate
 *
 * PHP version 5
 *
 * LICENSE: This source file is subject to version 3.01 of the PHP license
 * that is available through the world-wide-web at the following URI:
 * http://www.php.net/license/3_01.txt.  If you did not receive a copy of
 * the PHP License and are unable to obtain it through the web, please
 * send a note to license@php.net so we can mail you a copy immediately.
 *
 * @author     Justin Lonas <sdwrage@gmail.com>
 * @copyright  2009 Critikal Studios
 * @version    SVN: $Id$
 */
 
 
class Delegate
 
{
    protected 
$_closures = array();
    
    
/*
     * Adds a closure to the list of closures
     *
     * @param    array|string    $closures
     */
    
public function add($closures)
    {   
        if (
is_array($closures)) {
            if (
get_class($closures[0]) != 'Closure') { // Tests to see if its a class AND NOT a closure
                
$this->setClosure($closures);
            } else {
                foreach(
$closures as $closure) {
                    
$this->setClosure($closure);
                }
            }
        } else {
            
$this->setClosure($closures);
        }
    }
    
    
/*
     * Adds a single closure
     * @param    array|string    $closure
     */
    
public function setClosure($closure) {
        if (!
in_array($closure$this->_closures)) {
            
$this->_closures[] = $closure;
        }
    }
    
    
/*
     * Executes each closure
     */
    
public function execute()
    {
        foreach(
$this->_closures as $closure) {
            
call_user_func($closure);
        }
    }
 }
?>