шаблон стратегии — возвращение неопределенной переменной при переполнении стека

Следующий код (взят со следующей страницы на португальском http://br.phptherightway.com/pages/Design-Patterns.html) показывает использование стратегии.
Мой вопрос заключается в том, как метод load () из ArrayOutput может вернуть $ arrayOfData, если он не определен?

interface OutputInterface{
public function load();
}

class ArrayOutput implements OutputInterface{
public function load()    {
return $arrayOfData;
}
}

class SomeClient{
private $output;

public function setOutput(OutputInterface $outputType){
$this->output = $outputType;
}

public function loadOutput(){
return $this->output->load();
}
}

$client = new SomeClient();

// Array
$client->setOutput(new ArrayOutput());
$data = $client->loadOutput();

0

Решение

пожалуйста, посмотрите на код ниже

interface OutputInterface{
public function load();
}

class ArrayOutput implements OutputInterface{
public function load()    {
if (empty ($arrayOfData))
{
return null;  //if the $arrayOfData is empty then it will return an empty response i.e null
}
return $arrayOfData;
}
}

class SomeClient{
private $output;

public function setOutput(OutputInterface $outputType){
$this->output = $outputType;
}

public function loadOutput(){
return $this->output->load();
}
}

$client = new SomeClient();

// Array
$client->setOutput(new ArrayOutput());
$data = $client->loadOutput();
1

Другие решения

Это не может. Этот код больше похож на то, чтобы дать вам представление о том, как реализовать этот шаблон. Это должно быть что-то вроде:

interface OutputInterface {
public function load();
}

class ArrayOutput implements OutputInterface {

private $arrayOfData;

function __construct($array) {
$this->arrayOfData = $array;
}

public function load()    {
return $this->arrayOfData;
}
}
1

По вопросам рекламы [email protected]