Const error * @arg1 [OPT] Argument 1 * @arg2 [OPT] Argument 2 * @arg... [OPT] Argument ... * * @return instance Error instance * */ public function __construct($const){ call_user_func_array([$this, 'set'], func_get_args()); } /* ERROR GETTER * * @return Err Error * */ public function get(){ return $this->error; } /* ERROR SETTER * * @error Const error * @arg1 [OPT] Argument 1 * @arg2 [OPT] Argument 2 * @arg... [OPT] Argument ... * * @return instance Error instance * */ public function set($const){ /* [1] On découpe les arguments =========================================================*/ /* (1) On récupère l'erreur */ $this->error = !is_numeric($const) ? Err::UnknownError : $const; /* (2) On récupère les arguments */ $this->arguments = array_slice(func_get_args(), 1); } /* EXPLICITE UN CODE D'ERREUR * * @return explicit Description explicite du code d'erreur * */ public function explicit(){ switch($this->error){ case Err::Success: return $this->Success(); break; case Err::ParsingFailed: return $this->ParsingFailed(); break; case Err::UnreachableResource: return $this->UnreachableResource(); break; case Err::UploadError: return $this->UploadError(); break; case Err::FormatError: return $this->FormatError(); break; case Err::TokenError: return $this->TokenError(); break; case Err::PermissionError: return $this->PermissionError(); break; case Err::DisabledModule: return $this->DisabledModule(); break; case Err::MissingPath: return $this->MissingPath(); break; case Err::WrongPathModule: return $this->WrongPathModule(); break; case Err::UnknownModule: return $this->UnknownModule(); break; case Err::UnknownMethod: return $this->UnknownMethod(); break; case Err::UncallableModule: return $this->UncallableModule(); break; case Err::UncallableMethod: return $this->UncallableMethod(); break; case Err::UnknownHttpMethod: return $this->UnknownHttpMethod(); break; case Err::ConfigError: return $this->ConfigError(); break; case Err::MissingParam: return $this->MissingParam(); break; case Err::WrongParam: return $this->WrongParam(); break; case Err::ModuleError: return $this->ModuleError(); break; case Err::InvalidURI: return $this->InvalidURI(); break; case Err::PDOConnection: return $this->PDOConnection(); break; case Err::WrongPathRepo: return $this->WrongPathRepo(); break; case Err::UnknownRepo: return $this->UnknownRepo(); break; case Err::RepoError: return $this->RepoError(); break; case Err::UnknownTable: return $this->UnknownTable(); break; case Err::NotAllowedSchema: return $this->NotAllowedSchema(); break; case Err::NoMatchFound: return $this->NoMatchFound(); break; case Err::UnknownTemplate: return $this->UnknownTemplate(); break; case Err::UnknownAddress: return $this->UnknownAddress(); break; case Err::UnknownError: return $this->UnknownError(); break; case Err::AlreadyExists: return $this->AlreadyExists(); break; case Err::MissingBody: return $this->MissingBody(); break; case Err::MissingHeaders: return $this->MissingHeaders(); break; default: return $this->UnknownDebugError(); break; } } private function Success(){ return 'all right'; }private function ParsingFailed(){ if( count($this->arguments) > 0 ) return $this->arguments[0].' parsing failed'; else return 'parsing failed'; }private function UnreachableResource(){ return 'unreachable resource'; }private function UploadError(){ return 'upload error'; }private function FormatError(){ return 'format error'; }private function TokenError(){ return 'bad or expired token'; }private function PermissionError(){ if( count($this->arguments) > 0 ) return "missing permission: '".$this->arguments[0]."'"; else return 'permission error'; }private function DisabledModule(){ return 'disabled module'; }private function MissingPath(){ return 'missing path'; }private function WrongPathModule(){ return 'wrong module\'s path'; }private function UnknownModule(){ if( count($this->arguments) > 0 ) return 'unknown module \''.$this->arguments[0].'\''; else return 'unknown module'; }private function UnknownMethod(){ if( count($this->arguments) > 0 ) return 'unknown method \''.$this->arguments[0].'\''; else return 'unknown method'; }private function UncallableModule(){ if( count($this->arguments) > 0 ) return 'uncallable module \''.$this->arguments[0].'\''; else return 'uncallable module'; }private function UncallableMethod(){ if( count($this->arguments) > 0 ) return 'uncallable method \''.$this->arguments[0].'\''; else return 'uncallable method'; }private function UnknownHttpMethod(){ return 'unknown HTTP method'; }private function ConfigError(){ return 'configuration error'; }private function MissingParam(){ if( count($this->arguments) > 0 ) return 'missing param \''.$this->arguments[0].'\''; else return 'missing param'; }private function WrongParam(){ if( count($this->arguments) > 0 ) if( count($this->arguments) > 1 ) return 'wrong param \''.$this->arguments[0].'\' expected to be of type \''.$this->arguments[1].'\''; else return 'wrong param \''.$this->arguments[0].'\''; else return 'wrong param'; }private function ModuleError(){ if( count($this->arguments) > 0 ) return 'module error: \''.$this->arguments[0].'\''; else return 'module error'; }private function InvalidURI(){ return 'invalid URI'; }private function PDOConnection(){ return 'database error'; }private function WrongPathRepo(){ return 'wrong repository\'s path'; }private function UnknownRepo(){ return 'unknown repository'; }private function RepoError(){ return 'repository error'; }private function UnknownTable(){ return 'unknown table'; }private function NotAllowedSchema(){ return 'schema browsing not allowed'; }private function NoMatchFound(){ return 'no match found'; }private function UnknownTemplate(){ return 'unknown template'; }private function UnknownAddress(){ return 'unknown'; }private function UnknownError(){ return 'unknown error'; }private function AlreadyExists(){ return 'item already exists'; }private function MissingBody(){ return 'body is missing'; }private function MissingHeaders(){ return 'headers are missing'; }private function UnknownDebugError(){ return 'unknown debug error'; } public function setHttpCode(){ http_response_code( $this->error == Err::Success ? 200 : 417 ); } } ?>