CrossPHP
  • Namespace
  • Class
  • Download

Namespaces

  • Cross
    • Auth
    • Cache
      • Driver
      • Request
    • Core
    • DB
      • Connecter
      • Drivers
      • SQLAssembler
    • Exception
    • Http
    • I
    • Lib
      • Document
    • Module
    • MVC
    • Runtime
  • None

Classes

  • Cross\Auth\CookieAuth
  • Cross\Auth\SessionAuth
  • Cross\Cache\Driver\FileCacheDriver
  • Cross\Cache\Driver\MemcacheDriver
  • Cross\Cache\Driver\RedisDriver
  • Cross\Cache\Request\FileCache
  • Cross\Cache\Request\Memcache
  • Cross\Cache\Request\RedisCache
  • Cross\Cache\RequestCache
  • Cross\Core\Annotate
  • Cross\Core\Application
  • Cross\Core\ArrayMap
  • Cross\Core\Config
  • Cross\Core\CrossArray
  • Cross\Core\Delegate
  • Cross\Core\FrameBase
  • Cross\Core\Helper
  • Cross\Core\HttpAuth
  • Cross\Core\Loader
  • Cross\Core\Rest
  • Cross\Core\Router
  • Cross\DB\Connecter\BaseConnecter
  • Cross\DB\Connecter\MySQLConnecter
  • Cross\DB\Connecter\PgSQLConnecter
  • Cross\DB\Connecter\SQLiteConnecter
  • Cross\DB\DBFactory
  • Cross\DB\Drivers\CouchDriver
  • Cross\DB\Drivers\MongoDriver
  • Cross\DB\Drivers\PDOSqlDriver
  • Cross\DB\SQLAssembler\MySQLAssembler
  • Cross\DB\SQLAssembler\PgSQLAssembler
  • Cross\DB\SQLAssembler\SQLAssembler
  • Cross\DB\SQLAssembler\SQLiteAssembler
  • Cross\Http\Request
  • Cross\Http\Response
  • Cross\Lib\Array2XML
  • Cross\Lib\Document\CallTree
  • Cross\Lib\Document\CallTreeToHTML
  • Cross\Lib\Document\HTML
  • Cross\Lib\StringToPHPStream
  • Cross\Module\SQLModule
  • Cross\MVC\Controller
  • Cross\MVC\Module
  • Cross\MVC\View
  • Cross\Runtime\ClosureContainer

Interfaces

  • Cross\I\CacheInterface
  • Cross\I\HttpAuthInterface
  • Cross\I\PDOConnecter
  • Cross\I\RequestCacheInterface
  • Cross\I\RouterInterface
  • Cross\I\SqlInterface

Exceptions

  • Cross\Exception\CacheException
  • Cross\Exception\CoreException
  • Cross\Exception\CrossException
  • Cross\Exception\FrontException

Functions

  • ascLogo
  • line
  • tBody
  • th
  • tHead
  1 <?php
  2 /**
  3  * Cross - a micro PHP 5 framework
  4  *
  5  * @link        http://www.crossphp.com
  6  * @license     MIT License
  7  */
  8 
  9 namespace Cross\Runtime;
 10 
 11 
 12 use Closure;
 13 
 14 /**
 15  * @author wonli <wonli@live.com>
 16  * Class ClosureContainer
 17  * @package Cross\Core
 18  */
 19 class ClosureContainer
 20 {
 21     /**
 22      * @var array
 23      */
 24     protected $actions;
 25 
 26     function __construct()
 27     {
 28 
 29     }
 30 
 31     /**
 32      * 注册一个匿名方法
 33      *
 34      * @param string $name
 35      * @param Closure $f
 36      */
 37     function add($name, Closure $f)
 38     {
 39         $this->actions[$name] = $f;
 40     }
 41 
 42     /**
 43      * 执行指定的匿名方法
 44      *
 45      * @param string $name
 46      * @param array $params
 47      * @return mixed
 48      */
 49     function run($name, $params = array())
 50     {
 51         if (isset($this->actions[$name])) {
 52             if (!is_array($params)) {
 53                 $params = array($params);
 54             }
 55             return call_user_func_array($this->actions[$name], $params);
 56         }
 57 
 58         return false;
 59     }
 60 
 61     /**
 62      * 执行指定的匿名方法并缓存执行结果
 63      *
 64      * @param string $name
 65      * @param array $params
 66      * @return mixed
 67      */
 68     function runOnce($name, $params = array())
 69     {
 70         static $cache = array();
 71         if (isset($cache[$name])) {
 72             return $cache[$name];
 73         } elseif (isset($this->actions[$name])) {
 74             if (!is_array($params)) {
 75                 $params = array($params);
 76             }
 77 
 78             $cache[$name] = call_user_func_array($this->actions[$name], $params);
 79             return $cache[$name];
 80         }
 81 
 82         return false;
 83     }
 84 
 85     /**
 86      * 检查指定的匿名方法是否已经注册
 87      *
 88      * @param string $name
 89      * @param Closure|null $closure
 90      * @return bool
 91      */
 92     function has($name, & $closure = null)
 93     {
 94         if (isset($this->actions[$name])) {
 95             $closure = $this->actions[$name];
 96             return true;
 97         }
 98 
 99         return false;
100     }
101 }
102 
CrossPHP API documentation generated by ApiGen