-
Notifications
You must be signed in to change notification settings - Fork 3
/
custom-exception.php
59 lines (44 loc) · 1.6 KB
/
custom-exception.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
// This example shows how to use a custom exception
require __DIR__ . '/../vendor/autoload.php';
use MPScholten\RequestParser\ExceptionFactory;
use MPScholten\RequestParser\ExceptionMessageFactory;
use MPScholten\RequestParser\Symfony\ControllerHelperTrait;
$request = \Symfony\Component\HttpFoundation\Request::createFromGlobals();
class CustomException extends Exception
{
}
class FriendlyExceptionMessageFactory extends ExceptionMessageFactory
{
public function createNotFoundMessage($parameterName)
{
return "Looks like $parameterName is missing :)";
}
public function createInvalidValueMessage($parameterName, $parameterValue, $expected)
{
return "Whoops :) $parameterName seems to be invalid. We're looking for $expected but you provided '$parameterValue'";
}
}
class MyController
{
use ControllerHelperTrait;
public function __construct(\Symfony\Component\HttpFoundation\Request $request)
{
$config = new \MPScholten\RequestParser\Config();
$config->setExceptionFactory(new ExceptionFactory(CustomException::class, CustomException::class));
$config->setExceptionMessageFactory(new FriendlyExceptionMessageFactory());
$this->initRequestParser($request, $config);
}
public function hello()
{
$name = $this->queryParameter('name')->string()->required(); // Will now throw the CustomException
return "Hello $name";
}
}
$controller = new MyController($request);
$action = $request->get('action');
try {
echo $controller->$action();
} catch (CustomException $e) {
echo $e->getMessage();
}