2018-02-17 17:24:08 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
namespace error\core;
|
|
|
|
|
|
|
|
use \error\core\Err;
|
|
|
|
|
|
|
|
class Error{
|
|
|
|
|
|
|
|
private $error = null;
|
|
|
|
private $arguments = [];
|
|
|
|
|
|
|
|
/* ERROR CONSTRUCTOR
|
|
|
|
*
|
|
|
|
* @error<const> Const error
|
|
|
|
* @arg1<String> [OPT] Argument 1
|
|
|
|
* @arg2<String> [OPT] Argument 2
|
|
|
|
* @arg...<String> [OPT] Argument ...
|
|
|
|
*
|
|
|
|
* @return instance<Error> Error instance
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public function __construct($const){
|
2018-02-27 13:48:07 +00:00
|
|
|
//make the static analisis happy
|
|
|
|
$tmp = $const;
|
2018-02-17 17:24:08 +00:00
|
|
|
call_user_func_array([$this, 'set'], func_get_args());
|
|
|
|
}
|
|
|
|
|
|
|
|
/* ERROR GETTER
|
|
|
|
*
|
|
|
|
* @return Err<Err::Constant> Error
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public function get(){ return $this->error; }
|
|
|
|
|
|
|
|
/* ERROR SETTER
|
|
|
|
*
|
|
|
|
* @error<const> Const error
|
|
|
|
* @arg1<String> [OPT] Argument 1
|
|
|
|
* @arg2<String> [OPT] Argument 2
|
|
|
|
* @arg...<String> [OPT] Argument ...
|
|
|
|
*
|
|
|
|
* @return instance<Error> 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<String> 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;
|
2018-03-01 17:01:45 +00:00
|
|
|
case Err::ConfigError: return $this->ConfigError(); break;
|
2018-02-17 17:24:08 +00:00
|
|
|
case Err::MissingParam: return $this->MissingParam(); break;
|
|
|
|
case Err::WrongParam: return $this->WrongParam(); break;
|
2018-03-01 17:01:45 +00:00
|
|
|
case Err::WrongDefaultParam: return $this->WrongDefaultParam(); break;
|
2018-02-17 17:24:08 +00:00
|
|
|
case Err::ModuleError: return $this->ModuleError(); 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;
|
2018-03-03 15:01:20 +00:00
|
|
|
case Err::MissingBody: return $this->MissingBody(); break;
|
|
|
|
case Err::MissingHeaders: return $this->MissingHeaders(); break;
|
2018-02-17 17:24:08 +00:00
|
|
|
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;
|
|
|
|
|
|
|
|
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
|
2018-03-01 17:01:45 +00:00
|
|
|
return 'wrong param';
|
|
|
|
}private function WrongDefaultParam(){
|
|
|
|
if( count($this->arguments) > 0 )
|
|
|
|
if( count($this->arguments) > 1 )
|
|
|
|
return 'wrong default param \''.$this->arguments[0].'\' expected to be of type \''.$this->arguments[1].'\'';
|
|
|
|
else
|
|
|
|
return 'wrong default param \''.$this->arguments[0].'\'';
|
|
|
|
else
|
2018-02-17 17:24:08 +00:00
|
|
|
return 'wrong param';
|
|
|
|
}private function ModuleError(){
|
|
|
|
return 'module error';
|
|
|
|
}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';
|
2018-03-03 15:01:20 +00:00
|
|
|
}private function MissingBody(){
|
|
|
|
return 'Missing HTTP body';
|
|
|
|
}private function MissingHeaders(){
|
|
|
|
return 'Missing HTTP headers';
|
2018-02-17 17:24:08 +00:00
|
|
|
}private function UnknownDebugError(){
|
|
|
|
return 'unknown debug error';
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function setHttpCode(){
|
|
|
|
http_response_code( $this->error == Err::Success ? 200 : 417 );
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
?>
|