1 | <?php |
---|
2 | |
---|
3 | require_once('DojoParameter.php'); |
---|
4 | require_once('DojoBlock.php'); |
---|
5 | |
---|
6 | class DojoParameters extends DojoBlock |
---|
7 | { |
---|
8 | private $object = 'DojoParameters'; |
---|
9 | |
---|
10 | private $parameters = array(); |
---|
11 | protected $terminator = ')'; |
---|
12 | |
---|
13 | public function __construct($package, $line_number = false, $position = false){ |
---|
14 | parent::__construct($package, $line_number, $position); |
---|
15 | } |
---|
16 | |
---|
17 | public function destroy() { |
---|
18 | array_walk($this->parameters, 'destroy_all'); |
---|
19 | unset($this->parameters); |
---|
20 | } |
---|
21 | |
---|
22 | public function build(){ |
---|
23 | if (!$this->start) { |
---|
24 | die("DojoParameters->build() used before setting a start position"); |
---|
25 | } |
---|
26 | |
---|
27 | $code = $this->package->getCode(); |
---|
28 | $end = array($this->start[0], $this->start[1]); |
---|
29 | |
---|
30 | do { |
---|
31 | $parameter = new DojoParameter($this->package, $end[0], $end[1], $this->terminator); |
---|
32 | $end = $parameter->build(); |
---|
33 | |
---|
34 | $this->parameters[] = $parameter; |
---|
35 | } while ($code[$end[0]]{$end[1]} != $this->terminator); |
---|
36 | |
---|
37 | $this->setEnd($end[0], $end[1]); |
---|
38 | return $end; |
---|
39 | } |
---|
40 | |
---|
41 | public function getParameter($pos){ |
---|
42 | if ($this->parameters && !empty($this->parameters[$pos])) { |
---|
43 | return $this->parameters[$pos]; |
---|
44 | } |
---|
45 | else { |
---|
46 | return new DojoParameter($this->package); |
---|
47 | } |
---|
48 | } |
---|
49 | |
---|
50 | public function getParameters(){ |
---|
51 | if ($this->parameters) { |
---|
52 | return $this->parameters; |
---|
53 | } |
---|
54 | else{ |
---|
55 | return array(); |
---|
56 | } |
---|
57 | } |
---|
58 | } |
---|
59 | |
---|
60 | ?> |
---|