Skip to content

Commit df61baa

Browse files
committed
Change visibility around Action, new ActionDI class
1 parent 73dcce4 commit df61baa

File tree

2 files changed

+42
-10
lines changed

2 files changed

+42
-10
lines changed

src/Router/Action.php

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121

2222
class Action implements ActionInterface {
2323

24-
private $class;
25-
private $method;
24+
protected $class;
25+
protected $method;
2626
private $fixedArgs;
2727

2828
public function __construct($class, $method, $fixedArgs = array()){
@@ -31,18 +31,14 @@ public function __construct($class, $method, $fixedArgs = array()){
3131
$this->fixedArgs = $fixedArgs;
3232
}
3333

34-
public function getClass(){
35-
return $this->class;
36-
}
37-
38-
public function getMethod(){
39-
return $this->method;
34+
protected function getCallable(){
35+
$class = $this->class;
36+
return array(new $class(), $this->method);
4037
}
4138

4239
public function execute(array $parameters){
4340
$parameters = $this->fixedArgs + $parameters;
44-
$class = $this->class;
45-
$callable = array(new $class(), $this->method);
41+
$callable = $this->getCallable();
4642
if(is_callable($callable)){
4743
return call_user_func_array($callable, $parameters);
4844
} else {

src/Router/ActionDI.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
/*****************************************************************************/
3+
/* PhpTreeBasedRouter
4+
Copyright (C) 2015 Alejandro Quiroga
5+
6+
This program is free software; you can redistribute it and/or
7+
modify it under the terms of the GNU General Public License
8+
as published by the Free Software Foundation; either version 2
9+
of the License, or (at your option) any later version.
10+
11+
This program is distributed in the hope that it will be useful,
12+
but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+
GNU General Public License for more details.
15+
16+
You should have received a copy of the GNU General Public License
17+
along with this program; if not, write to the Free Software
18+
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19+
*******************************************************************************/
20+
namespace MinusFour\Router;
21+
22+
use MinusFour\DIContainer\ContainerInterface;
23+
24+
class ActionDI extends Action {
25+
private $container;
26+
27+
public function __construct(ContainerInterface $container, $class, $method, array $fixedArgs = array()){
28+
$this->container = $container;
29+
parent::__construct($class, $method, $fixedArgs);
30+
}
31+
32+
protected function getCallable(){
33+
return array($this->container->resolve($this->class), $this->method);
34+
}
35+
}
36+
?>

0 commit comments

Comments
 (0)