PHP 可选函数参数设置为对现有对象的引用

PHP Optional Function Parameter Set to Reference to Existing Object

我什至不知道这是否可行,但我正在尝试为现有对象设置一个可选值。

这是我正在尝试的代码的简化版本。

<?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();


?>

我遇到错误: 语法错误,

中出现意外的“&”

感谢任何帮助,我再次不确定是否有可能做我想做的事情,很抱歉我是个菜鸟。

谢谢

装饰模式示例:

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)。