| Server IP : 47.82.179.145 / Your IP : 216.73.217.129 Web Server : nginx/1.26.3 System : Linux iZt4n9czhka2zvqfajdlr2Z 6.8.0-63-generic #66-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 13 20:25:30 UTC 2025 x86_64 User : www ( 1001) PHP Version : 8.3.30 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /www/wwwroot/scuipturepactory.com/wp-content/themes/plover/core/src/Router/ |
Upload File : |
<?php
namespace Plover\Core\Router;
/**
* @since 1.0.0
*/
class Endpoint {
/**
* Http method
*
* @var string
*/
protected $method;
/**
* Endpoint path
*
* @var
*/
protected $path;
/**
* Endpoint callback
*
* @var mixed
*/
protected $action;
/**
* All middlewares
*
* @var array
*/
protected $middlewares = [];
/**
* Endpoint args
*
* @var array
*/
protected $args = [];
/**
* Create new endpoint
*
* @param $method
* @param $path
* @param $action
* @param $args
* @param array $middlewares
*/
public function __construct( string $method, string $path, $action, array $args = [], array $middlewares = [] ) {
$this->method = $method;
$this->path = $path;
$this->args = $args;
$this->action = function ( $request ) use ( $action ) {
return call_user_func( $action, $request );
};
foreach ( $middlewares as $middleware ) {
$this->use( $middleware );
}
}
/**
* Add a middleware to this endpoint
*
* @param $middleware
*
* @return Endpoint $this
*/
public function use( $middleware ): Endpoint {
$this->middlewares[] = function ( $next ) use ( $middleware ) {
return function ( $request ) use ( $middleware, $next ) {
return call_user_func( $middleware, $request, $next );
};
};
return $this;
}
/**
* Get endpoint args
*
* @return array
*/
public function getArgs(): array {
return $this->args;
}
/**
* @param $args
*
* @return $this
*/
public function setArgs( $args ) {
$this->args = $args;
return $this;
}
/**
* Handle middlewares and action
*
* @param $request
*
* @return mixed
*/
public function handle( $request ) {
$handler = $this->action;
foreach ( array_reverse( $this->middlewares ) as $middleware ) {
$handler = $middleware( $handler );
}
return $handler( $request );
}
}