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


PHP ClassType::getMethod方法代码示例

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


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

示例1: isAllowed

 /**
  * {@inheritdoc}
  */
 public function isAllowed($role, $resource, $privilege)
 {
     if ($role instanceof IRole) {
         $role = $role->getRoleId();
     }
     if (!$resource instanceof PresenterResource) {
         throw new \Ark8\Security\Exceptions\SkipException(sprintf('Resource must be instance of %s, %s given.', PresenterResource::class, gettype($resource)));
     }
     $request = $resource->getRequest();
     $presenterName = $request->getPresenterName();
     list($signal, $signalReceiver) = $this->getSignal($request);
     if (!$signal) {
         throw new \Ark8\Security\Exceptions\SkipException(sprintf('No signal sent.'));
     }
     $refClass = new PresenterComponentReflection($class = $this->presenterFactory->getPresenterClass($presenterName));
     while ($name = array_shift($signalReceiver)) {
         $name = 'createComponent' . ucfirst($name);
         if (!$refClass->hasMethod($name)) {
             throw new \Nette\InvalidStateException(sprintf('Method %s::%s is not implemented.', $refClass->getName(), $name));
         }
         $refMethod = $refClass->getMethod($name);
         if (!$refMethod->hasAnnotation('return')) {
             throw new \Nette\InvalidStateException(sprintf('Method %s::%s must have fully qualified return annotation.', $refClass->getName(), $name));
         }
         $refClass = new ClassType($refMethod->getAnnotation('return'));
     }
     if (!$refClass->hasMethod($name = Presenter::formatSignalMethod($signal))) {
         throw new \Ark8\Security\Exceptions\SkipException(sprintf('Method %s::%s is not implemented.', $refClass->getName(), $name));
     }
     $refMethod = $refClass->getMethod($name);
     if (!$refMethod->hasAnnotation($privilege)) {
         throw new \Ark8\Security\Exceptions\SkipException(sprintf('Method %s::%s does not have annotation %s.', $refClass->getName(), $name, $privilege));
     }
     return in_array($role, preg_split('#\\s+#', trim((string) $refMethod->getAnnotation($privilege))));
 }
开发者ID:ark8,项目名称:security,代码行数:38,代码来源:SignalAuthorizator.php

示例2: callStaticReflectionNoParams

 /**
  * @param ClassType $class
  * @param string $method
  * @return mixed|null
  */
 private function callStaticReflectionNoParams(ClassType $class, $method)
 {
     return $class->getMethod($method)->invokeArgs(null, []);
 }
开发者ID:dtforce,项目名称:nette-inject,代码行数:9,代码来源:InjectionCompilerExtension.php

示例3: prepareData

 /**
  * Parsuje a validuje data rekvestu
  *
  * @param string
  */
 protected function prepareData($presenter, $action)
 {
     // není-li anotací @schema řečeno jinak ...
     $ref = new ClassType($this);
     $schema = $ref->getMethod('action' . $action)->getAnnotation('schema');
     // nenačítá a nevaliduje se tělo požadavku (typicky GET nebo DELETE bez těla)
     if ($schema === FALSE) {
         return;
     }
     // ... automaticky použije schéma podle presenteru a akce
     if (!$schema) {
         $schema = $this->formatSchemaFiles($presenter, $action);
     }
     $data = $this->parseData($this->rawPostData);
     // validace podle JSON schématu
     $this->validateSchema($data, $schema);
     $this->data = $data;
 }
开发者ID:gorocacher,项目名称:RestApiBase,代码行数:23,代码来源:ApiPresenter.php


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