2015-06-04 3 views
-5

У меня есть код здесь, на веб-сайте, который я взял, и я просто не могу обойти его.PHP - Не могу понять этот код.

Может кто-нибудь, пожалуйста, объясните мне, что именно происходит. У меня хорошее знание PHP, но это меня озадачивает.

Благодаря

function decawave_preprocess_field(&$vars) { 
if($vars['element']['#field_name'] == "field_resource_public_pdf" || $vars['element']['#field_name'] == "field_resource_pdf") { 
$vars['items'][0]['#disclaimer'] = !empty($vars['element']['#object']->field_disclaimer) ? $vars['element']['#object']->field_disclaimer[LANGUAGE_NONE][0]['value'] : 0;} 
} 
+2

Что вы не понимаете, в этом коде? – Rizier123

+0

Отлаживайте его самостоятельно. –

+0

Это стенограмма, если нет? – Andrew

ответ

0

Если значение $vars['element']['#field_name'] равно (примечание type juggling здесь) к 'field_resource_public_pdf' или $vars['element']['#field_name'] равно (типа жонглирования снова) к "field_resource_pdf" строки выполните следующие действия:

Выполнить empty($vars['element']['#object']->field_disclaimer) (документ для this function), если он возвращает false, чем назначить значение $vars['element']['#object']->field_disclaimer[LANGUAGE_NONE][0]['value'] на $vars['items'][0]['#disclaimer']. В противном случае (если [empty][2]($vars['element']['#object']->field_disclaimer) возвращает истину, назначьте 0 к $vars['items'][0]['#disclaimer'].

код довольно прост, но я бы отметить, что сама функция написана очень плохо.

+0

Спасибо, это очень полезная информация, которую вы предоставили –

+0

Есть ли лучший способ написать эту общую функцию? –

+0

1) Как правило, это плохая идея для изменения аргументов, передаваемых в функцию. Вы хотите вернуть желаемое значение из функции. 2) Ваша функция слишком много знает о передаваемых аргументах. Рассмотрите возможность передачи всех ваших переменных для работы отдельно, вместо одного объекта, содержащего несколько значений - от поиска определения метода я должен уметь понять, что мне нужно передать методу. Теперь ваш метод принимает буквально все - но на самом деле он не предназначен для работы с любым набором параметров - на самом деле есть некоторые очень специфические ограничения, в которых поля должны содержать аргументы – borisano

Смежные вопросы