Beispiel #1
0
 /**
  * Метод безопасно получает контент.
  * В случае возникновения ошибки возвращает её стек.
  */
 public static function getContent($objOrTpl, $method = 'buildContent')
 {
     $isCallable = is_callable($objOrTpl);
     $isTpl = $objOrTpl instanceof Smarty_Internal_Template;
     if (!$isCallable && !$isTpl) {
         check_condition(is_object($objOrTpl), 'Not object passed to ' . __FUNCTION__);
         PsUtil::assertMethodExists($objOrTpl, $method);
     }
     $returned = null;
     $flushed = null;
     ob_start();
     ob_implicit_flush(false);
     try {
         if ($isCallable) {
             $returned = call_user_func($objOrTpl);
         } else {
             if ($isTpl) {
                 $returned = $objOrTpl->fetch();
             } else {
                 $returned = $objOrTpl->{$method}();
             }
         }
     } catch (Exception $ex) {
         ob_end_clean();
         return ExceptionHandler::getHtml($ex);
     }
     $flushed = ob_get_contents();
     ob_end_clean();
     return isEmpty($returned) ? isEmpty($flushed) ? null : $flushed : $returned;
 }
Beispiel #2
0
 /**
  * @covers PsUtil::assertMethodExists
  */
 public function testAssertMethodExists()
 {
     PsUtil::assertMethodExists(ClassA::get__CLASS__(), 'get__FILE__');
     PsUtil::assertMethodExists(ClassA::get__CLASS__(), 'protected_method');
     PsUtil::assertMethodExists(new ClassA(), 'private_final_method');
     try {
         PsUtil::assertMethodExists(new ClassA(), self::NOT_ALLOWED_STR);
         $this->fail('Exception is expected');
     } catch (PException $ex) {
         //OK
     }
 }
Beispiel #3
0
 /**
  * Имплементация метода, выдающего очки пользователю
  */
 private function checkPointsImpl(FoldedClass $class, array $func_get_args, $method)
 {
     /**
      * Проверим, является ли класс наследником PointsGiver.
      * Менеджером он может и не быть, но гивером он быть обязан!:)
      */
     PsUtil::assertInstanceOf($class, 'PointsGiver');
     PsUtil::assertInstanceOf($class->getFoldedEntity()->getFolding(), 'PointsGiverFolding');
     //Проверим наличие метода-имплементации
     $method = $method . 'Impl';
     PsUtil::assertMethodExists($class, $method);
     /** @var PsUser */
     $user = $func_get_args[0];
     check_condition($user instanceof PsUser, 'Пользователь должен быть передан в первом аргументе');
     $ctxt = new GivePointsContext($user->getId(), $class->getFoldedEntity()->getDbCode());
     $func_get_args[0] = $ctxt;
     call_user_func_array(array($class, $method), $func_get_args);
     return $this->checkGivePointsContext($user, $ctxt);
 }