diff --git a/core/control/NullHTTPRequest.php b/core/control/NullHTTPRequest.php new file mode 100644 index 000000000..e9ae33fdb --- /dev/null +++ b/core/control/NullHTTPRequest.php @@ -0,0 +1,16 @@ +handleRequest()} and {@link Controller->handleAction()} later on. + * + * @param sapphire + * @subpackage control + */ +class NullHTTPRequest extends SS_HTTPRequest { + + function __construct() { + parent::__construct(null, null); + } + +} \ No newline at end of file diff --git a/core/control/RequestHandler.php b/core/control/RequestHandler.php index f2acb19fc..535dfe731 100755 --- a/core/control/RequestHandler.php +++ b/core/control/RequestHandler.php @@ -73,9 +73,13 @@ class RequestHandler extends ViewableData { * */ static $allowed_actions = null; - + public function __construct() { $this->brokenOnConstruct = false; + + // Check necessary to avoid class conflicts before manifest is rebuilt + if(class_exists('NullHTTPRequest')) $this->request = new NullHTTPRequest(); + parent::__construct(); } @@ -317,8 +321,11 @@ class RequestHandler extends ViewableData { /** * Returns the SS_HTTPRequest object that this controller is using. + * Returns a placeholder {@link NullHTTPRequest} object unless + * {@link handleAction()} or {@link handleRequest()} have been called, + * which adds a reference to an actual {@link SS_HTTPRequest} object. * - * @return SS_HTTPRequest + * @return SS_HTTPRequest|NullHTTPRequest */ function getRequest() { return $this->request; diff --git a/tests/RequestHandlingTest.php b/tests/RequestHandlingTest.php index bb16d42bb..28a4b5300 100755 --- a/tests/RequestHandlingTest.php +++ b/tests/RequestHandlingTest.php @@ -20,6 +20,11 @@ class RequestHandlingTest extends SapphireTest { // ); // } + function testConstructedWithNullRequest() { + $r = new RequestHandler(); + $this->assertType('NullHTTPRequest', $r->getRequest()); + } + function testRequestHandlerChainingAllParams() { // TODO } diff --git a/tests/control/NullHTTPRequestTest.php b/tests/control/NullHTTPRequestTest.php new file mode 100644 index 000000000..2a83e1c7c --- /dev/null +++ b/tests/control/NullHTTPRequestTest.php @@ -0,0 +1,22 @@ +assertFalse($r->isGET()); + $this->assertFalse($r->isPOST()); + $this->assertFalse($r->isPUT()); + $this->assertFalse($r->isDELETE()); + $this->assertFalse($r->isHEAD()); + } + + function testGetURL() { + $r = new NullHTTPRequest(); + $this->assertEquals('', $r->getURL()); + } + +} \ No newline at end of file