Я пытаюсь получить конфигурацию шаблона сетевого устройства из mon go и использовать его для настройки устройства. Итак, у меня есть classDevice со свойствами, относящимися к устройствам, и методы CRUD для управления устройствами. Моя проблема здесь в том, что я не понимаю, как расширить свойства класса. Я пробовал поместить свойства в $vars
с get_object_vars
, но результат тот же, пустая переменная.
Вот пример того, что я пытаюсь сделать:
<?php
class Device {
public $ip;
public $mode;
public function __construct($data = false)
{
$this->ip = $data['ip'];
$this->mode = $data['mode'];
}
public function configure(){
if ($this->mode == 'bridge'){
$localvar = 'test';
}
$template = array('0' => 'set ip $this->ip', '1' => 'set mode $this->mode', '2' => 'set calculated attr $localvar');
$cfgexpanded = array();
foreach ($template as $config) {
preg_match_all('/\$([a-zA-Z0-9\-\>]+)/', $config, $variables, PREG_PATTERN_ORDER);
foreach($variables[1] as $variable){
$config = str_replace('$'.$variable, $$variable, $config);
}
array_push($cfgexpanded, $config);
}
var_dump($cfgexpanded);
}
}
$data['ip'] = '1.2.3.4';
$data['mode'] = 'bridge';
$test = new Device($data);
$test->configure();
?>
Это дает:
PHP Notice: Undefined variable: this->ip in /home/pedro/test.php on line 23
PHP Notice: Undefined variable: this->mode in /home/pedro/test.php on line 23
array(3) {
[0]=>
string(7) "set ip "
[1]=>
string(9) "set mode "
[2]=>
string(24) "set calculated attr test"
}
И это реальный код, где $ cfg - это Mon go возвращаемый объект, содержащий шаблон для применения там, где у меня есть локальные переменные и свойства объекта:
foreach ($cfg['cfg'] as $config) {
$$replace, $config));
preg_match_all('/\$([a-zA-Z0-9\-\>]+)/', $config, $variables, PREG_PATTERN_ORDER);
foreach($variables[1] as $variable){
$config = str_replace('$'.$variable, $$variable, $config);
}
array_push($cfgexpanded, $config);
}