Location: PHPKode > scripts > Delegate > Delegate.php
<?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 hide@address.com so we can mail you a copy immediately.
 *
 * @author     Justin Lonas <hide@address.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);
        }
    }
 }
?>
Return current item: Delegate