| 
<?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 [email protected] so we can mail you a copy immediately.
 *
 * @author     Justin Lonas <[email protected]>
 * @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);
 }
 }
 }
 ?>
 |