Определение имен переменных PHP с помощью цикла и массивов — хорошая практика?

Мне нужно определить набор переменных для серии

$charta ='<img src="'.$_SERVER["DOCUMENT_ROOT"].'/output/pdf/charts/aplha.png" alt ="" />';
$chartb ='<img src="'.$_SERVER["DOCUMENT_ROOT"].'/output/pdf/charts/bravo.png" alt ="" />';
$chartc ='<img src="'.$_SERVER["DOCUMENT_ROOT"].'/output/pdf/charts/charlie.png" alt ="" />';

так далее …

Вместо того, чтобы определять их все, как это, я хочу использовать цикл, чтобы определить их с помощью массива

$names = array (
'aplha' =>  'a',
'bravo' =>   'b',
'charlie' => 'c'
);

Поэтому я попробовал это, прочитав о переменных переменных в документации PHP

foreach($names as $k=>$v){
${'chart' . $v} ='<img src="'.$_SERVER["DOCUMENT_ROOT"].'/output/pdf/charts/'.$k.'.png" alt ="" />';
}

И это работает.

Мой простой вопрос — это хорошая / приемлемая практика? Я объяснил свой метод более опытному программисту, и они сказали мне найти другой способ, который не включает переменные переменные, потому что это плохая практика — но я не могу думать ни о том, что с этим не так, ни о том, как это сделать лучше.

Мысли?

0

Решение

Я бы использовал массив с ключом $ v. Это читабельно. Даже лучше:

$names = array(
'a' => 'yourimage1',
'b' => 'yourimage2',
'c' => 'yourimage3',
);

function chartImage($img_string = 'your-default-img')
{
return '<img src="'.$_SERVER["DOCUMENT_ROOT"].'/output/pdf/charts/'.$img_string.'.png" alt ="" />';
}

// somewhere in your code

print chartImage($names['a']); // or
<?= chartImage($names['a']); ?>

Я бы сделал это так, потому что легко увидеть, что ты делаешь. Лучшая читаемость.

Переменные переменные — плохая практика, когда вы определили данные. Там нет причин, чтобы использовать его. Переменные переменные используются, когда вы имеете дело с данными, которые неизвестны. Поскольку вы знаете и заранее определяете переменные в последовательности, переменные переменные не добавляют улучшений и могут сильно запутать второй взгляд при просмотре кода.

Хороший пример использования переменных переменных — в опросах. Вы не уверены, сколько будет проверок или ответов, и поэтому вы будете кодировать переменные, содержащие данные переменных. Когда я создал систему опроса, я создал переменные, которые содержали переменные данные массивов, работающих с типами проверки и типами ввода. Все сводится к контексту и решению проблемы. Использование переменных переменных в вашем контексте не является решением проблемы.

0

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

Других решений пока нет …

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