Let's start the core tutorial in a traditional way: The Hello World application.
This example will implement a very minimal BlueMvc-application and inspect it piece by piece.
For this, the bluemvc-core package is required.
$ composer require bluemvc/bluemvc-core
For a real project you probably want to begin with a more complete template, like the one used in the get started tutorial.
All we need now is a basic index.php file in the web root:
<?php
declare(strict_types=1);
require_once 'vendor/autoload.php';
use BlueMvc\Core\Application;
use BlueMvc\Core\Controller;
use BlueMvc\Core\Request;
use BlueMvc\Core\Response;
use BlueMvc\Core\Route;
class HelloController extends Controller
{
public function indexAction(): string
{
return 'Hello world';
}
}
$application = new Application();
$application->addRoute(new Route('', HelloController::class));
$request = new Request();
$response = new Response();
$application->run($request, $response);
This application will display the text "Hello World" in the browser when navigating to the root url (e.g. http://localhost/).
Let's find out how it works.
require_once 'vendor/autoload.php';
use BlueMvc\Core\Application;
use BlueMvc\Core\Controller;
use BlueMvc\Core\Request;
use BlueMvc\Core\Response;
use BlueMvc\Core\Route;
Nothing special here.
Since bluemvc-core was installed with composer, we need to require the vendor/autoload.php file.
We also tell PHP that we want to use some classes from the BlueMvc/Core namespace.
class HelloController extends Controller
{
public function indexAction(): string
{
return 'Hello world';
}
}
Here a controller is declared by extending the Controller class.
The indexAction, which will be invoked when the url ends with "/", is implemented to return the text "Hello world".
$application = new Application();
Next, the Application is created.
The application is the main part of the framework and handles setup, routing, error handling and more.
$application->addRoute(new Route('', HelloController::class));
The application needs to know which controller to use for a specific request url.
This is done by adding a set of Route instances.
In this example, a Route is added that tells the application to use HelloController for all requests to the root-level directory in the url.
$request = new Request();
The Request object contains information about the current request, e.g. url, query and form parameters, cookies and so on.
$response = new Response();
The Response object in turn, will contain everything that is sent back to the client, such as the content, status code and more.
$application->run($request, $response);
And finally, this is where the magic happens!
Very simplified, the flow is like this:
✎ Published in category core