воспламенитель кода form_input - PullRequest
0 голосов
/ 18 декабря 2010

Пара вопросов здесь ..

  1. Каков следующий синтаксис?
  2. Что означают все части?

    (( ! is_array($data)) ? $data : '')
    
  3. Как это используется в конце функции?

    function form_input($data = '', $value = '', $extra = '')
    {
        $defaults = array('type' => 'text', 'name' => (( ! is_array($data)) ? $data : ''), 'value' => $value);
        return "<input "._parse_form_attributes($data, $defaults).$extra." />";
    }
    

Спасибо.Блейк

Ответы [ 4 ]

3 голосов
/ 18 декабря 2010

Хорошо, позвольте мне попробовать, насколько я понимаю, ваш вопрос.

Какой следующий синтаксис?

Это определение функции.

Что означают все кусочки?

Это троичный оператор . Это означает: если $data не является массивом (!is_array($data)), вернуть $data (? $data), в противном случае вернуть пустую строку (: '')

Это сокращение от if-else.

Как это используется в конце функции?

Не уверен, что вы имеете в виду здесь. Функция _parse_form_attributes($data, $defaults) вызывается ведьмой, которая возвращает строку.

Если это в вашем вопросе относится к $defaults, то это просто массив, который получает сборку и содержит следующие значения:

Array (
    'type' => 'text',
    'name' => $data, // or empty string if $data is an array,
    'value' => $value
);

Он используется для создания элемента ввода, который будет выглядеть следующим образом:

<input type="text" 
       name="(value of $data or empty)" 
       value="(value of $value)"
       (value of $extra)
       />
1 голос
/ 18 декабря 2010

Это встроенное выражение:

function form_input($data = '', $value = '', $extra = '')
{
    if (is_string($data)) {   // or better: is_scalar()
        // leave as-is
    }
    else {
        $data = '';
    }
    ...

(слегка изменено.)
Это в основном гарантирует, что параметр $data никогда не будет массивом.Возможно, в предыдущих версиях функции было разрешено использовать массив, и это код безопасности для обеспечения правильной работы.

Обратите внимание, что принудительное использование типов - это другой подход (часто избыточный, но иногда рекомендуемый):

 function xy($data, $value, $z) {

      assert( ! is_array($data) );
      assert( is_string($value) );
1 голос
/ 18 декабря 2010

Хорошо, похоже, это генерирует HTML для ввода формы с полезными значениями по умолчанию. Чтобы ответить на ваши вопросы по порядку:

  1. Это функция, которая принимает необязательные параметры. Вы можете позвонить, например, form_input('SomeData', 'SomeValue');
  2. Он создает HTML-код для элемента и включает в себя любую информацию, которую вы ему предоставляете, используя значения по умолчанию, если значение не указано
  3. Трудно ответить ... Короче говоря, вы определяете новую функцию. Если вы предоставите параметры, они будут использованы для создания элемента формы. Если вы их опустите, будут использоваться значения по умолчанию - например, type по умолчанию будет text для вывода, например <input type="text" [blah]>
  4. Я не совсем уверен, что вы здесь имеете в виду - Добавить как пары ключ-значение, например <input type="text" key="Value" [blah]>? Если это так, я бы лично потерял переменную $extra и вместо этого имел бы массив пар ключ-значение. В противном случае вам необходимо указать $extra, например, key1="value1" key2="value2"
0 голосов
/ 18 декабря 2010

1) Возвращает поле ввода;

2) Простите?

3) Функция принимает три значения. $ value - это значение по умолчанию для поля ввода (которое вы найдете в текстовом поле); $ data будет именем формы, если это не массив, иначе имя будет пустым; $ extra - это строка, содержащая другие данные, которые будут добавлены в форму. Пожалуйста, обратитесь к функции _parse_form_attributes;

4) ссылка

Кстати, я искренне надеюсь, что _parse_form_attributes () делает что-то удивительное, поскольку это выглядит как невероятно многословная функция, а codeigniter имеет несколько удобных встроенных функций генерации форм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...