当前位置: 首页>>代码示例>>PHP>>正文


PHP ReflectionClass::newinstance方法代码示例

本文整理汇总了PHP中ReflectionClass::newinstance方法的典型用法代码示例。如果您正苦于以下问题:PHP ReflectionClass::newinstance方法的具体用法?PHP ReflectionClass::newinstance怎么用?PHP ReflectionClass::newinstance使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ReflectionClass的用法示例。


在下文中一共展示了ReflectionClass::newinstance方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: grab

 public static function grab($func, $args = NULL)
 {
     if (preg_match('/(.+)\\h*(->|::)\\h*(.+)/s', $func, $parts)) {
         // Convert string to executable PHP callback
         if (!class_exists($parts[1])) {
             self::error(500, ['Invalid Class', $parts[1] . ' class does not exist']);
         }
         if ($parts[2] == '->') {
             $ref = new ReflectionClass($parts[1]);
             $parts[1] = method_exists($parts[1], '__construct') ? $ref->newinstanceargs($args) : $ref->newinstance();
         }
         $func = array($parts[1], $parts[3]);
     }
     return $func;
 }
开发者ID:Jay-En,项目名称:BonePHP-starter,代码行数:15,代码来源:Bone.php

示例2: grab

 /**
  *	Grab the real route handler behind the string expression
  *	@return string|array
  *	@param $func string
  *	@param $args array
  **/
 function grab($func, $args = NULL)
 {
     if (preg_match('/(.+)\\h*(->|::)\\h*(.+)/s', $func, $parts)) {
         // Convert string to executable PHP callback
         if (!class_exists($parts[1])) {
             user_error(sprintf(self::E_Class, $parts[1]), E_USER_ERROR);
         }
         if ($parts[2] == '->') {
             if (is_subclass_of($parts[1], 'Prefab')) {
                 $parts[1] = call_user_func($parts[1] . '::instance');
             } else {
                 $ref = new ReflectionClass($parts[1]);
                 $parts[1] = method_exists($parts[1], '__construct') ? $ref->newinstanceargs($args) : $ref->newinstance();
             }
         }
         $func = array($parts[1], $parts[3]);
     }
     return $func;
 }
开发者ID:max-weller,项目名称:fatfree-core,代码行数:25,代码来源:base.php

示例3: call

 /**
  *	Execute callback/hooks (supports 'class->method' format)
  *	@return mixed|FALSE
  *	@param $func callback
  *	@param $args mixed
  *	@param $hooks string
  **/
 function call($func, $args = NULL, $hooks = '')
 {
     if (!is_array($args)) {
         $args = array($args);
     }
     // Execute function; abort if callback/hook returns FALSE
     if (is_string($func) && preg_match('/(.+)\\h*(->|::)\\h*(.+)/s', $func, $parts)) {
         // Convert string to executable PHP callback
         if (!class_exists($parts[1])) {
             user_error(sprintf(self::E_Class, $parts[1]));
         }
         if ($this->hive['PSEUDO'] && $this->hive['VERB'] == 'POST' && strtolower($parts[3]) == 'post' && preg_match('/!(put|delete)/', implode(',', array_keys($_GET)), $hook) && method_exists($parts[1], $parts[3])) {
             // ReST implementation for non-capable HTTP clients
             $this->hive['BODY'] = http_build_query($_POST);
             $parts[3] = $hook[1];
         }
         if ($parts[2] == '->') {
             if (is_subclass_of($parts[1], 'Prefab')) {
                 $parts[1] = call_user_func($parts[1] . '::instance');
             } else {
                 $ref = new ReflectionClass($parts[1]);
                 $parts[1] = method_exists($parts[1], '__construct') ? $ref->newinstanceargs($args) : $ref->newinstance();
             }
         }
         $func = array($parts[1], $parts[3]);
     }
     if (!is_callable($func)) {
         // No route handler
         if ($hooks == 'beforeroute,afterroute') {
             $allowed = array();
             if (isset($parts[1])) {
                 $allowed = array_intersect(array_map('strtoupper', get_class_methods($parts[1])), explode('|', self::VERBS));
             }
             header('Allow: ' . implode(',', $allowed));
             $this->error(405);
         } else {
             user_error(sprintf(self::E_Method, is_string($func) ? $func : $this->stringify($func)));
         }
     }
     $obj = FALSE;
     if (is_array($func)) {
         $hooks = $this->split($hooks);
         $obj = TRUE;
     }
     // Execute pre-route hook if any
     if ($obj && $hooks && in_array($hook = 'beforeroute', $hooks) && method_exists($func[0], $hook) && call_user_func_array(array($func[0], $hook), $args) === FALSE) {
         return FALSE;
     }
     // Execute callback
     $out = call_user_func_array($func, $args ?: array());
     if ($out === FALSE) {
         return FALSE;
     }
     // Execute post-route hook if any
     if ($obj && $hooks && in_array($hook = 'afterroute', $hooks) && method_exists($func[0], $hook) && call_user_func_array(array($func[0], $hook), $args) === FALSE) {
         return FALSE;
     }
     return $out;
 }
开发者ID:sheck87,项目名称:f3-multilang,代码行数:66,代码来源:base.php


注:本文中的ReflectionClass::newinstance方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。