70 lines
1.7 KiB
PHP
70 lines
1.7 KiB
PHP
<?php
|
|
|
|
/*
|
|
Copyright (c) 2009 hamcrest.org
|
|
*/
|
|
|
|
class FactoryParameter
|
|
{
|
|
/**
|
|
* @var FactoryMethod
|
|
*/
|
|
private $method;
|
|
|
|
/**
|
|
* @var ReflectionParameter
|
|
*/
|
|
private $reflector;
|
|
|
|
public function __construct(FactoryMethod $method, ReflectionParameter $reflector)
|
|
{
|
|
$this->method = $method;
|
|
$this->reflector = $reflector;
|
|
}
|
|
|
|
public function getDeclaration()
|
|
{
|
|
if ($this->reflector->isArray()) {
|
|
$code = 'array ';
|
|
} else {
|
|
$class = $this->reflector->getClass();
|
|
if ($class !== null) {
|
|
$code = '\\' . $class->name . ' ';
|
|
} else {
|
|
$code = '';
|
|
}
|
|
}
|
|
$code .= '$' . $this->reflector->name;
|
|
if ($this->reflector->isOptional()) {
|
|
$default = $this->reflector->getDefaultValue();
|
|
if (is_null($default)) {
|
|
$default = 'null';
|
|
} elseif (is_bool($default)) {
|
|
$default = $default ? 'true' : 'false';
|
|
} elseif (is_string($default)) {
|
|
$default = "'" . $default . "'";
|
|
} elseif (is_numeric($default)) {
|
|
$default = strval($default);
|
|
} elseif (is_array($default)) {
|
|
$default = 'array()';
|
|
} else {
|
|
echo 'Warning: unknown default type for ' . $this->getMethod()->getFullName() . PHP_EOL;
|
|
var_dump($default);
|
|
$default = 'null';
|
|
}
|
|
$code .= ' = ' . $default;
|
|
}
|
|
return $code;
|
|
}
|
|
|
|
public function getInvocation()
|
|
{
|
|
return '$' . $this->reflector->name;
|
|
}
|
|
|
|
public function getMethod()
|
|
{
|
|
return $this->method;
|
|
}
|
|
}
|