Skip to content

3. Methods

İzni Burak Demirtaş edited this page Nov 22, 2020 · 6 revisions

PHP Router supports GET, POST, PUT, DELETE, OPTIONS, PATCH, HEAD, AJAX and ANY request methods.

Usage

# GET Request
$router->get('/get-request', function() {
  return 'Hello World.';
});
# POST Request
$router->post('/post-request', function() {
  return 'Hello World.';
});

If you want to use Request and Response instance in Router, you can bind them to your Route callback. For example:

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

# POST Request
$router->post('/post-request', function(Request $request, Response $response) {
  return $response->setContent($request->getMethod());
});

You can check Symfony HTTP Foundation to get more information about Request and Response instance.

Available HTTP Methods List for PHP-Router:

  • ANY => All request methods
  • GET => Get method
  • POST => Post method
  • PUT => Put method
  • DELETE => Delete method
  • HEAD => Head method
  • OPTIONS => Options method
  • PATCH => Patch method
  • AJAX => Request must be XmlHttpRequest
  • XPOST => Request must be XmlHttpRequest and Post method
  • XPUT => Request must be XmlHttpRequest and Put method
  • XDELETE => Request must be XmlHttpRequest and Delete method
  • XPATCH => Request must be XmlHttpRequest and Patch method

Other examples:

# XPOST Request (Ajax & Post)
$router->xpost('/ajaxp-request', function() {
  return 'Hello World.';
});
# ANY Request (It accepts all requests.)
$router->any('/any-request', function() {
  return 'Hello World.';
});

Also, you can define more than one method at one time for a request.

Example:

$router->add('GET|POST', '/request', function() {
  return "Hello World. I'm working GET or POST method.";
});

Finally, Response of the PHP-Router works three way:

1- You can use string definition directly. This string will be added to Response instance automatically.

$router->get('/', function() {
  return 'Hello World.';
});
# "Hello World" string will be added into Response instance of Symfony.

2- You can use Response instance directly. In this case, send() method will be triggered by PHP-Router automatically. So, don't use ->send() method in your callback.

use Symfony\Component\HttpFoundation\Response;

$router->get('/', function(Response $response) {
  return $response->setContent('Hello World');
});

3- You can use array directly. In this case, the array will be converted to json string and sent a response with application/json headers via Response instance of Symfony.

$router->get('/', function() {
  return ['Hello', 'World'];
});

You can check Symfony HTTP Foundation to get more information about Request and Response instance.

NOTE:

A post value must be sent in an object named "_method" for the Put, Delete, Patch methods.

Example:

# curl -X PUT http://localhost:3000/put-request
# OR 
# curl -X POST http://localhost:3000/put-request -d _method=put

$router->put('/put-request', function() {
  return 'Hello World.';
});
Clone this wiki locally