@@ -4,6 +4,7 @@ declare(strict_types = 1);
namespace Rmphp\Kernel ;
namespace Rmphp\Kernel ;
use Psr\Container\ContainerExceptionInterface ;
use Psr\Container\ContainerInterface ;
use Psr\Container\ContainerInterface ;
use Psr\Http\Message\ServerRequestInterface ;
use Psr\Http\Message\ServerRequestInterface ;
use Psr\Http\Message\ResponseInterface ;
use Psr\Http\Message\ResponseInterface ;
@@ -48,7 +49,7 @@ class App extends Main {
$this -> syslogger () -> log ( " handlers " , " Err - Class " . $appHandler -> className . " is not exists " );
$this -> syslogger () -> log ( " handlers " , " Err - Class " . $appHandler -> className . " is not exists " );
continue ;
continue ;
}
}
$controllers [ $appRouteKey ] = new $appHandler -> className ;
$controllers [ $appRouteKey ] = ( $this -> container () instanceof ContainerInterface ) ? $this -> container () -> get ( $appHandler -> className ) : new $appHandler -> className ;
$log = " Class " . $appHandler -> className ;
$log = " Class " . $appHandler -> className ;
if ( ! empty ( $appHandler -> methodName )){
if ( ! empty ( $appHandler -> methodName )){
@@ -60,9 +61,7 @@ class App extends Main {
$log = " Method " . $appHandler -> className . " / " . $appHandler -> methodName ;
$log = " Method " . $appHandler -> className . " / " . $appHandler -> methodName ;
}
}
$this -> syslogger () -> log ( " handlers " , " OK - " . $log );
$this -> syslogger () -> log ( " handlers " , " OK - " . $log );
/**
* 1. Если на этапе итерации уже получен ответ ResponseInterface - досрочно отдаем результат в эмиттер
*/
if ( $response instanceof ResponseInterface ) {
if ( $response instanceof ResponseInterface ) {
return $response ;
return $response ;
}
}
@@ -70,16 +69,7 @@ class App extends Main {
}
}
}
}
/**
/**
* 2. Если итерации закончились и задан обьект Content им создаем результат для эмиттера
* Отдаем пустой результат
*/
if ( $this -> template () && ! empty ( $this -> template () -> getResponse ())){
$body = $this -> globals () -> response () -> getBody ();
$body -> write ( $this -> template () -> getResponse ());
$body -> rewind ();
return $this -> globals () -> response () -> withBody ( $body );
}
/**
* 3. Отдаем пустой результат если не определен шаблонизатор
*/
*/
return $this -> defaultPage ( 404 );
return $this -> defaultPage ( 404 );
}
}
@@ -87,12 +77,12 @@ class App extends Main {
if ( $this -> logger ()) $this -> logger () -> warning ( $appException -> getMessage () . " on " . $appException -> getFile () . " : " . $appException -> getLine ());
if ( $this -> logger ()) $this -> logger () -> warning ( $appException -> getMessage () . " on " . $appException -> getFile () . " : " . $appException -> getLine ());
$this -> syslogger () -> warning ( " AppException: " . $appException -> getMessage ());
$this -> syslogger () -> warning ( " AppException: " . $appException -> getMessage ());
}
}
catch ( \Exception $exception ) {
catch ( \Exception | ContainerExceptionInterface $exception ) {
if ( $this -> logger ()) $this -> logger () -> warning ( $exception -> getMessage () . " on " . $exception -> getFile () . " : " . $exception -> getLine ());
if ( $this -> logger ()) $this -> logger () -> warning ( $exception -> getMessage () . " on " . $exception -> getFile () . " : " . $exception -> getLine ());
$this -> syslogger () -> warning ( " Exception: " . $exception -> getMessage () . " : " . $exception -> getFile () . " : " . $exception -> getLine ());
$this -> syslogger () -> warning ( " Exception: " . $exception -> getMessage () . " : " . $exception -> getFile () . " : " . $exception -> getLine ());
}
}
catch ( AppError $appError ){
catch ( AppError $appError ){
if ( $this -> logger ()) $this -> logger () -> warning ( $appError -> getMessage () . " on " . $appError -> getFile () . " : " . $appError -> getLine ());
if ( $this -> logger ()) $this -> logger () -> error ( $appError -> getMessage () . " on " . $appError -> getFile () . " : " . $appError -> getLine ());
$this -> syslogger () -> error ( " Error: " . $appError -> getMessage () . " : " . $appError -> getFile () . " : " . $appError -> getLine ());
$this -> syslogger () -> error ( " Error: " . $appError -> getMessage () . " : " . $appError -> getFile () . " : " . $appError -> getLine ());
}
}
catch ( \Error $error ) {
catch ( \Error $error ) {
@@ -100,7 +90,7 @@ class App extends Main {
$this -> syslogger () -> error ( " Error: " . $error -> getMessage () . " : " . $error -> getFile () . " : " . $error -> getLine ());
$this -> syslogger () -> error ( " Error: " . $error -> getMessage () . " : " . $error -> getFile () . " : " . $error -> getLine ());
}
}
/**
/**
* 4. Отдаем ошибку без шаблона
* Отдаем после ошибки
*/
*/
return $this -> defaultPage ( 501 );
return $this -> defaultPage ( 501 );
}
}
@@ -111,10 +101,7 @@ class App extends Main {
*/
*/
private function defaultPage ( int $code ) : ResponseInterface {
private function defaultPage ( int $code ) : ResponseInterface {
if ( is_file ( $this -> baseDir . '/' . getenv ( " PAGE " . $code ))){
if ( is_file ( $this -> baseDir . '/' . getenv ( " PAGE " . $code ))){
$body = $ this -> globals () -> response () -> getBody ();
$this -> globals () -> response () -> getBody ()-> write ( file_get_contents ( $this -> baseDir . '/' . getenv ( " PAGE " . $code ))) ;
$body -> write ( file_get_contents ( $this -> baseDir . '/' . getenv ( " PAGE " . $code )));
$body -> rewind ();
return $this -> globals () -> response () -> withBody ( $body ) -> withStatus ( $code );
}
}
return $this -> globals () -> response () -> withStatus ( $code );
return $this -> globals () -> response () -> withStatus ( $code );
}
}
@@ -167,7 +154,7 @@ class App extends Main {
private function getActions ( array $appNodes ) : void {
private function getActions ( array $appNodes ) : void {
foreach ( $appNodes as $appNode ){
foreach ( $appNodes as $appNode ){
// по умолчанию точка монтирования ровна корню
// по умолчанию точка монтирования от корня
$mountKey = ( ! empty ( $appNode [ 'key' ])) ? $appNode [ 'key' ] : '/' ;
$mountKey = ( ! empty ( $appNode [ 'key' ])) ? $appNode [ 'key' ] : '/' ;
// если url начинается не с точки монтирования смотрим далее
// если url начинается не с точки монтирования смотрим далее