Path: blob/master/src/aphront/AphrontController.php
12240 views
<?php12abstract class AphrontController extends Phobject {34private $request;5private $currentApplication;6private $delegatingController;78public function setDelegatingController(9AphrontController $delegating_controller) {10$this->delegatingController = $delegating_controller;11return $this;12}1314public function getDelegatingController() {15return $this->delegatingController;16}1718public function willBeginExecution() {19return;20}2122public function willProcessRequest(array $uri_data) {23return;24}2526public function handleRequest(AphrontRequest $request) {27if (method_exists($this, 'processRequest')) {28return $this->processRequest();29}3031throw new PhutilMethodNotImplementedException(32pht(33'Controllers must implement either %s (recommended) '.34'or %s (deprecated).',35'handleRequest()',36'processRequest()'));37}3839public function willSendResponse(AphrontResponse $response) {40return $response;41}4243final public function setRequest(AphrontRequest $request) {44$this->request = $request;45return $this;46}4748final public function getRequest() {49if (!$this->request) {50throw new PhutilInvalidStateException('setRequest');51}52return $this->request;53}5455final public function getViewer() {56return $this->getRequest()->getViewer();57}5859final public function delegateToController(AphrontController $controller) {60$request = $this->getRequest();6162$controller->setDelegatingController($this);63$controller->setRequest($request);6465$application = $this->getCurrentApplication();66if ($application) {67$controller->setCurrentApplication($application);68}6970return $controller->handleRequest($request);71}7273final public function setCurrentApplication(74PhabricatorApplication $current_application) {7576$this->currentApplication = $current_application;77return $this;78}7980final public function getCurrentApplication() {81return $this->currentApplication;82}8384public function getDefaultResourceSource() {85throw new PhutilMethodNotImplementedException(86pht(87'A Controller must implement %s before you can invoke %s or %s.',88'getDefaultResourceSource()',89'requireResource()',90'initBehavior()'));91}9293public function requireResource($symbol) {94$response = CelerityAPI::getStaticResourceResponse();95$response->requireResource($symbol, $this->getDefaultResourceSource());96return $this;97}9899public function initBehavior($name, $config = array()) {100Javelin::initBehavior(101$name,102$config,103$this->getDefaultResourceSource());104}105106}107108109