コード例 #1
0
ファイル: Error.php プロジェクト: laiello/oops-project
 public static function report(Oops_Error_Handler $errorHandler, $path)
 {
     $errors = '';
     foreach ($errorHandler->getErrors() as $err) {
         $errors .= "Oops-Error: {$err}\n";
     }
     foreach ($errorHandler->getWarnings() as $err) {
         $errors .= "Oops-Warning: {$err}\n";
     }
     foreach ($errorHandler->getNotices() as $err) {
         $errors .= "Oops-Notice: {$err}\n";
     }
     foreach ($errorHandler->getPhps() as $err) {
         $errors .= "Php-errors: {$err}\n";
     }
     if (!strlen($errors)) {
         return;
     }
     $logFile = new Oops_File($path . "/error.log");
     if ($logFile->size > 50 * 1024) {
         if (file_exists($logFile->filename . ".1")) {
             unlink($logFile->filename . ".1");
         }
         $logFile->rename($logFile->filename . ".1");
         $logFile = new Oops_File($path . "/error.log");
     }
     $logFile->makeWriteable();
     $ft = fopen($logFile->filename, "a");
     $request = Oops_Server::getRequest();
     fputs($ft, "\n" . date("r") . "\n " . $request->getUrl() . "\n" . $errors);
     fclose($ft);
 }
コード例 #2
0
ファイル: Storage.php プロジェクト: laiello/oops-project
 /**
  * Decompose stored data to PHP object or value
  * 
  * @param $class
  * @param $id
  * @param $serialized
  * @return mixed
  */
 protected function _decomposeData($class, $id, $serialized)
 {
     if (strlen($serialized)) {
         /**
          * Object (or data) should be restored from serialized string 
          */
         require_once 'Oops/Error/Handler.php';
         $eH = new Oops_Error_Handler();
         $result = unserialize($serialized);
         restore_error_handler();
         if (!$eH->isClear()) {
             require_once 'Oops/Process/Exception.php';
             throw new Oops_Process_Exception("Process stored data decomposition error", OOPS_PROCESS_EXCEPTION_DECOMPOSITION_ERROR);
         }
     } elseif (strlen($class) && Oops_Loader::find($class)) {
         $reflectionClass = new ReflectionClass($class);
         if ($reflectionClass->implementsInterface('Oops_Pattern_Identifiable_Factored_Interface')) {
             /**
              * Object can be restored using corresponding factory
              */
             $factoryCallback = call_user_func($class, 'getFactoryCallback');
             $result = call_user_func($factoryCallback, $id);
         }
         if ($reflectionClass->implementsInterface('Oops_Pattern_Identifiable_Singleton_Interface')) {
             /**
              * This object can be restored using $class::getInstance($id)
              */
             $result = call_user_func(array($class, 'getInstance'), $id);
         } elseif ($reflectionClass->implementsInterface('Oops_Pattern_Singleton_Interface')) {
             /**
              * This object is the single available instance of this class, so it can be restored using $class::getInstance()
              */
             $result = call_user_func(array($class, 'getInstance'));
         } else {
             /**
              * This type of object should be constructed with given $id
              */
             $result = $reflectionClass->newInstance($id);
         }
     } else {
         require_once 'Oops/Process/Exception.php';
         throw new Oops_Process_Exception("Process stored data decomposition error", OOPS_PROCESS_EXCEPTION_DECOMPOSITION_ERROR);
     }
     return $result;
 }