代码点火器form_input

时间:2010-12-18 03:19:48

标签: php arrays codeigniter syntax

这里有几个问题..

  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. 三江源。布雷克

4 个答案:

答案 0 :(得分:3)

好的,就我理解你的问题,让我试试。

  

以下语法是什么?

这是一个功能定义。

  

所有作品的含义是什么?

这是ternary operator。这意味着:如果$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 :(得分:1)

好的,这似乎为表单输入生成了带有有用默认值的HTML ....按顺序回答你的Q:

  1. 这是一个采用可选参数的函数。你可以打电话给form_input('SomeData', 'SomeValue');
  2. 它为元素创建HTML并包含您提供的任何信息,如果没有提供任何值,则使用默认值
  3. 很难回答......总之,你正在定义一个新功能。如果提供参数,它们将用于创建表单元素。如果省略它们,将使用默认值 - 例如type将默认为text以输出<input type="text" [blah]>
  4. 我不太清楚你在这里的意思 - 作为键值对添加,例如<input type="text" key="Value" [blah]>?如果是这种情况,我个人会失去$extra变量,而是拥有一组key-&gt;值对。如果不这样做,您需要酌情$extra,例如key1="value1" key2="value2"

答案 2 :(得分:1)

这是一个内联表达式:

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) );

答案 3 :(得分:0)

1)返回一个输入字段;

2)原谅?

3)函数有三个值。 $ value是输入字段的默认值(在文本框中找到的值);如果表单不是数组,$ data将是表单的名称,否则名称将为空; $ extra是一个包含其他内容的字符串。请参阅函数_parse_form_attributes;

4)link

顺便说一句,我真诚地希望_parse_form_attributes()做一些惊人的事情,因为它看起来像一个令人难以置信的冗长函数,并且codeigniter有一些方便的内置表单生成函数。