classes/bfw/core/Controller.php
author Markus Broeker<broeker.markus@googlemail.com>
Sun, 14 Feb 2016 15:07:45 +0100
changeset 39 8b4f9c6136f4
parent 31 3a5ee3ba6006
permissions -rw-r--r--
Umstellung auf LF
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
39
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
     1
<?php
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
     2
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
     3
/**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
     4
 * Copyright(C) 2015 Markus Bröker<broeker.markus@googlemail.com>
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
     5
 *
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
     6
 */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
     7
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
     8
namespace bfw\core;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
     9
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    10
use bfw\Request;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    11
use bfw\Response;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    12
use Logger;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    13
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    14
/**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    15
 * Class Controller
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    16
 */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    17
abstract class Controller {
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    18
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    19
    protected $logger;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    20
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    21
    /**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    22
     * @var Model
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    23
     */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    24
    private $model;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    25
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    26
    /**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    27
     * @var Request
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    28
     */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    29
    private $request;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    30
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    31
    /**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    32
     * @var Response
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    33
     */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    34
    private $response;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    35
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    36
    /**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    37
     * @var View
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    38
     */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    39
    private $view;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    40
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    41
    /**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    42
     * Controller constructor.
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    43
     *
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    44
     */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    45
    public function __construct() {
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    46
        $this->request = new Request();
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    47
        $this->response = new Response();
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    48
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    49
        $this->model = $this->getDataModelInstance();
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    50
        $this->view = new View($this, $this->model);
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    51
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    52
        $this->logger = Logger::getLogger(get_class($this));
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    53
    }
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    54
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    55
    private function getDataModelInstance() {
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    56
        $modelName = $this->getModelName();
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    57
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    58
        return new $modelName();
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    59
    }
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    60
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    61
    private function getModelName() {
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    62
        $modelName = str_replace('controller', 'model', get_class($this));
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    63
        $modelName = strtolower($modelName);
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    64
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    65
        return str_replace('controller', '\DataModel', $modelName);
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    66
    }
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    67
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    68
    /**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    69
     * @param $controller
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    70
     * @return string
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    71
     */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    72
    public static function findControllerInNameSpace($controller) {
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    73
        return sprintf('bfw\mvc\controller\%sController', ucfirst($controller));
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    74
    }
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    75
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    76
    /**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    77
     * @return View
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    78
     */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    79
    public function getView() {
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    80
        return $this->view;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    81
    }
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    82
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    83
    /**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    84
     * @param $view
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    85
     * @return $this
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    86
     */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    87
    public function setView($view) {
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    88
        $this->view = $view;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    89
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    90
        return $this;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    91
    }
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    92
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    93
    /**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    94
     * @return Response
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    95
     */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    96
    public function getResponse() {
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    97
        return $this->response;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    98
    }
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
    99
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   100
    /**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   101
     * @param $response
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   102
     * @return $this
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   103
     */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   104
    public function setResponse($response) {
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   105
        $this->response = $response;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   106
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   107
        return $this;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   108
    }
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   109
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   110
    /**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   111
     * @return Model
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   112
     */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   113
    public function getModel() {
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   114
        return $this->model;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   115
    }
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   116
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   117
    /**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   118
     * @param $model
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   119
     * @return $this
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   120
     */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   121
    public function setModel($model) {
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   122
        $this->model = $model;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   123
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   124
        return $this;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   125
    }
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   126
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   127
    /**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   128
     * @return Request
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   129
     */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   130
    public function getRequest() {
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   131
        return $this->request;
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   132
    }
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   133
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   134
    /**
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   135
     * @return mixed
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   136
     */
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   137
    abstract public function index();
8b4f9c6136f4 Umstellung auf LF
Markus Broeker<broeker.markus@googlemail.com>
parents: 31
diff changeset
   138
}