First of all i am student, so i need to know how compounds Interact with each other, Maybe next time in the future i will do it with a framework, but first thing I need to do is knowing how to build the software form scratch.
My project will be web and mobile application so I decided to create a rest api for both... I will implement my project in Native PHP.
class Controller
{
public $view;
public $model;
public $dataAccess;
public function __construct()
{
$this->view = new View();
$this->model = new Model();
$this->dataAccess = new DataAccess();
}
}
class UserController extends Controller
{
public function __construct()
{
$this->model->tableName = "users";
}
public function get($id)
{
if($id)
{
$this->model->data = $this->dataAccess->selectById($this->model->tableName, $id);
$this->view->render($this->model->data);
}
else
{
$this->view->renderError();
}
}
}
class Application
{
private function __construct()
{}
public static function run()
{
$router = new Router();
$router->get("/users/([0-9]+)", array("UserController", "get"));
$router->run();
}
}
What about the file structure ?
app/
The app directory contains our rest-api components like controllers, views, models, data access.
core/
The directory contains the Router class and the basic classes
Bootstrap/
The directory contains the application.php file which bootstraps the framework by run function and autoload.php file which automatically loading PHP files.
storage/
logs, file caches, and user-generated files.
What about authentication and authorization?
Will I need an extra layer for my architecture, model-view-controller-data access-(middleware or router)
How will the rest api interact with other layers?
For example, does the (middleware or router) layer interact with the controller then controller interact with data access layer for every authentication and authorization process
https://github.com/mahmoudahmedd/i-am-asking-for-feedback
Any other comments I would be grateful, Finally thanks.
great solution: learn on base applications of top frameworks.
namespace/controller/action
, for example: api/user/get
call Controller\Api\User::actionGet()
.For example: https://github.com/koseven/koseven/blob/devel/system/classes/KO7/Controller.php , https://github.com/koseven/koseven/blob/devel/system/classes/KO7/Controller/Template.php