Недавно я столкнулся с проблемой проектирования PHP. Я заметил, что в функции вы можете передать в качестве параметра массив. Сначала я не заметил сильные стороны этой вещи, но теперь я одержим массивами.
Например, в моем классе шаблонов я должен передать некоторые переменные и некоторые mysqli_results в файл шаблона (как это делает phpbb). И мне было интересно, какая из следующих возможностей является лучшей.
# 1
$tpl = new template(array(
'vars' = array('var1' => 'val1', 'var2' => 'val2'),
'loops' = array('loop1' => $result1, 'loop2' => $result2)
));
# 2
$tpl = new template;
$tpl->assignVars(array(
'var1' => 'val1',
'var2' => 'val2'
));
$tpl->assignloops(array(
'loop1' => $result1,
'loop2' => $result2
));
# 3
$tpl = new template;
$tpl->assignVar('var1', 'val1');
$tpl->assignVar('var1', 'val1');
$tpl->assignLoop('loop1', $result1);
$tpl->assignLoop('loop2', $result2);
Или, если есть что-то лучше. Я даже думал о создании класса БД, который выполняет запрос следующим образом:
$result = $db->fastQuery(array(
'select' => 'user-name',
'from' => $table,
'where' => array('user-id' => 123, 'user-image' => 'none'),
'fetch' => true
));
Боже мой, я действительно одержим.