online-faq/classes/Factory.class.inc.php
2020-10-02 08:06:04 +02:00

66 lines
1.6 KiB
PHP

<?php
/**
* Class Factory
* This class returns the action and controller for index file
*/
class Factory
{
/**
* Returns the right controller
*
* @param Request $a_request Request
*
* @return mixed
*/
public static function getController( Request $a_request )
{
# Prepare name of controller
$controller_name = mb_strtolower( $a_request->getVar( 'controller' ) );
$controller_name = ucfirst( $controller_name );
$controller_name .= 'Controller';
if ( $controller_name === 'Controller')
{
$controller = new DefaultController();
return $controller;
}
# if controller doesn't exist
if ( !file_exists( __DIR__ . '/../controller/' . $controller_name . '.class.inc.php' ) )
{
return new DefaultController();
}
# Call controller and returns it
$controller = new $controller_name();
return $controller;
} # function getController(...)
/**
* Returns the right action
* @param $a_controller
* @param Request $a_request Request
* @return string
*/
public static function getAction( $a_controller, Request $a_request )
{
# Prepare name of the action
$action_name = mb_strtolower( $a_request->getVar('action') );
$action_name = str_ireplace( 'action', '', $action_name );
$action_name .= 'Action';
# Action not found
if ( !method_exists( $a_controller, $action_name ) )
{
return 'indexAction';
}
return $action_name;
} # function getAction(...)
} # class