#php
Вопрос:
У меня есть эта функция, которая очень хорошо работает для того, что я хочу, чтобы она делала:
function textStyles($prefix, $position, $type){
$title = get_sub_field($prefix . '_' . $position . '_font_' . $type);
$titles = get_sub_field($prefix . '_' . $position . '_font_' . $type);
$titleNG = get_field($prefix . '_' . $position . '_font_' . $type);
$titleOption = get_field($prefix . '_' . $position . '_font_' . $type, 'options');
$titleTheme = get_theme_mod( 'hero_text_' . $type, 0 );
return $title ?: $titles ?: $titleNG ?: $titleOption ?: $titleTheme;
}
Но затем, чтобы использовать его, я делаю такие вещи, как это:
$titleSize = textStyles($sepPrefix, 'title', 'size');
$titleColor = textStyles($sepPrefix, 'title', 'color');
$titleWeight = textStyles($sepPrefix, 'title', 'weight');
$titleAlign = textStyles($sepPrefix, 'title', 'alignment');
$titleClass = $titleSize . ' ' . $titleColor . ' ' . $titleWeight . ' ' . $titleAlign;
$introSize = textStyles($sepPrefix, 'intro', 'size');
$introColor = textStyles($sepPrefix, 'intro', 'color');
$introWeight = textStyles($sepPrefix, 'intro', 'weight');
$introAlign = textStyles($sepPrefix, 'intro', 'alignment');
$introClass = $introSize . ' ' . $introColor . ' ' . $introWeight . ' ' . $introAlign;
Я уверен, что должен быть СУХОЙ способ сделать это, но я даже не уверен, как его искать!
Ответ №1:
Вы могли бы сделать что-то вроде этого
function textClass($prefix, $position, $attrs)
{
$classes = [];
foreach ($attrs as $attr) {
$classes[] = textStyles($prefix, $position, $attr);
}
return implode(' ', $classes);
}
А затем назовите его с нужными вам атрибутами примерно так:
$introClass = textClass($sepPrefix, 'intro', ['size', 'color', 'weight', 'alignment']);
Комментарии:
1. Блестяще! Работает очаровательно и позволяет мне задавать меньше параметров, как мне иногда нужно. Спасибо!