Параметр необязательной функции PHP установлен на ссылку на существующий объект

0

Я даже не знаю, возможно ли это, но я пытаюсь установить необязательное значение для существующего объекта.

Вот упрощенная версия кода, который я пытаюсь сделать.

<?php

class configObject {

private $dataContainer = array();

public function set($dataKey, $dataValue) {
  $this->dataContainer[$dataKey] = $dataValue;
  return TRUE;
}

public function get($dataKey) {
  return $this->dataContainer($dataKey);
}

$this->set('someValue', 'foobar');

} //End configObject Class

function getPaginationHTML($c = &$_config) {

  $someOption = $c->get('someValue');
  // Do other stuff
  return $html;
}

$_config = new configObject();

$html = getPaginationHTML();


?>

Я получаю сообщение об ошибке: синтаксическая ошибка, неожиданное "&" в

Любая помощь приветствуется, опять же я не уверен, что даже возможно сделать то, что я пытаюсь сделать, жаль, что вы нобе.

благодаря

  • 0
    Поскольку getPaginationHTML кажется относительным к вашему классу, почему бы вам не определить его как метод класса? Вы можете использовать шаблон декоратора тоже.
  • 0
    Можете ли вы опубликовать ответ, используя шаблон декоратора? Я не хочу добавлять его в класс configObject, потому что он содержит только информацию о конфигурации, но если я могу расширить класс или что-то еще. Кстати, я использую контейнер зависимостей для внедрения в config, базу данных, классы сессий в моем приложении.
Теги:
function
parameters

1 ответ

1
Лучший ответ

пример с рисунком декоратора:

class ConfigObject {

    private $dataContainer = array();

    public function set($dataKey, $dataValue) {
        $this->dataContainer[$dataKey] = $dataValue;
        return true;
    }

    public function get($dataKey) {
        return $this->dataContainer[$dataKey];
    }

}

class ConfigObjectDecorator {
    private $_decorated;


    public function __construct($pDecorated) {
        $this->_decorated = $pDecorated;
    }

    public function getPaginationHTML($dataKey) {
        $someOption = $this->get($dataKey);
        // Do other stuff
        $html = '<p>' . $someOption . '</p>';
        return $html;
    }

    public function set($dataKey, $dataValue) {
        return $this->_decorated->set($dataKey, $dataValue);    
    }

    public function get($dataKey) {
        return $this->_decorated->get($dataKey);    
    }
}

class ConfigFactory {
    public static function create () {
        $config = new ConfigObject();
        return new ConfigObjectDecorator($config);
    }
}

$config = ConfigFactory::create();
if ($config->set('mykey', 'myvalue'))
    echo $config->getPaginationHTML('mykey');

Обратите внимание, что можно легко переписать ConfigFactory::create() чтобы добавить параметр к другим типам декорации (или none).

  • 0
    Это здорово! Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню