forked from SimplesIP/pabx-app
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.3 KiB
115 lines
2.3 KiB
<?php |
|
|
|
/* Autoload através do autoload.json |
|
* |
|
* O método get_NamespaceToPathname fará essa conversão |
|
* depois que o json estiver carregado. |
|
* |
|
* A json precisa manter o padrão |
|
* "before_id": "<Namespace+File>", |
|
* "after_id": "<pathname>" |
|
* |
|
*/ |
|
|
|
|
|
class JsonAutoload { |
|
|
|
private $json_file; |
|
private $json_data_dec; |
|
private $replace_namespace; |
|
private $namespace_to_change; |
|
private $amount_replace; |
|
|
|
|
|
function __construct( ) { |
|
|
|
$this->amount_replace = 0; |
|
$this->replace_namespace = array( ); |
|
$this->namespace_to_change = array( ); |
|
$this->ExistFileJSON( ); |
|
$this->ReadJson( ); |
|
$this->get_JsonLibrary(); |
|
|
|
} |
|
|
|
|
|
public function get_NamespaceToPathname( $classname ){ |
|
|
|
$result = str_replace( $this->namespace_to_change, $this->replace_namespace, $classname ); |
|
|
|
return $result; |
|
} |
|
|
|
|
|
private function obtain_replace_namespace( $lib, $json_replace ){ |
|
|
|
$amount_replace = count( $json_replace["replace"] ); |
|
|
|
$odd = ($amount_replace % 2); |
|
if( $odd == 1 ){ |
|
$this->ERROR_OBJ("Campo Replace em autoload.json tem quantidade ímpar. Deve ser par em $lib"); |
|
} |
|
|
|
foreach ($json_replace["replace"] as $key => $value) { |
|
|
|
if( str_contains( $key, "before") ){ |
|
$this->namespace_to_change[$this->amount_replace] = $value; |
|
} |
|
|
|
if( str_contains( $key, "after") ){ |
|
$this->replace_namespace[$this->amount_replace] = $value; |
|
} |
|
|
|
|
|
if(count($this->replace_namespace) == count($this->namespace_to_change)){ |
|
++$this->amount_replace; |
|
} |
|
} |
|
} |
|
|
|
private function get_JsonLibrary( ){ |
|
|
|
foreach ( $this->json_data_dec as $lib => $value ) { |
|
|
|
if(!is_array($value["replace"])){ |
|
$this->ERROR_OBJ("Está faltando campo replace em $lib no arquivo {$this->json_file}"); |
|
} |
|
|
|
$this->obtain_replace_namespace( $lib, $value ); |
|
} |
|
} |
|
|
|
private function ExistFileJSON( ){ |
|
|
|
if( !file_exists( $this->FileName() )){ |
|
$this->ERROR_OBJ("Não foi possível encontrar o json para autoload"); |
|
} |
|
|
|
return true; |
|
} |
|
|
|
private function ReadJson( ){ |
|
|
|
$json_file = file_get_contents( $this->FileName() ); |
|
|
|
$this->json_data_dec = json_decode( $json_file, true ); |
|
|
|
if(!$this->json_data_dec){ |
|
$this->ERROR_OBJ("não foi possivel carregar {$this->json_file}"); |
|
} |
|
} |
|
|
|
private function FileName( ){ |
|
|
|
$this->json_file = dirname(__FILE__)."/autoload.json"; |
|
|
|
return $this->json_file; |
|
} |
|
|
|
private function ERROR_OBJ( $str ){ |
|
echo $str; |
|
die; |
|
} |
|
|
|
} |
|
|
|
|