【问题标题】:Is it bad practice to define an array as part of a function call?将数组定义为函数调用的一部分是不好的做法吗?
【发布时间】:2016-05-11 16:21:03
【问题描述】:

使用 WordPress 并查看代码示例,我看到了将数组与函数一起使用的两种不同方式:

1.先定义数组,然后作为参数传入函数

$args = array(
    'name' => 'Home right sidebar',
    'id' => 'home_right_1',
    'before_widget' => '<div>',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="rounded">',
    'after_title' => '</h2>', 
 );
register_sidebar( $args );

2。将数组定义为函数调用的一部分

register_sidebar( array(
    'name' => 'Home right sidebar',
    'id' => 'home_right_1',
    'before_widget' => '<div>',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="rounded">',
    'after_title' => '</h2>', 
 ) );

将数组定义为函数调用的一部分是不好的做法 (#2) 还是样式选择?

如果这是不好的做法,为什么?

【问题讨论】:

  • 它对 wordpress 有什么特殊的影响?
  • 我也不担心,但我更喜欢第一个。在宏伟的计划中,尽管这是微不足道的。更重要的是,这不是一个 WordPress 问题,甚至都不是 PHP 问题,这是一个通用编程问题,并且在堆栈溢出时会更好
  • @TomJNowell 好的,当然。不知道我是否应该遵循一些 WP 编码风格(因此提出了问题),但我也不确定 PHP 或 WordPress 有什么样的垃圾处理,所以这就是我先去那里的原因。
  • 也许我错了,但是第一个选项(如果写在全局命名空间中)变量在脚本完成之前不会被销毁,而第二个选项参数将在函数结束时被销毁。跨度>

标签: php arrays function


【解决方案1】:

不,这不是坏习惯。

如果您要重用数组,您必须选择第一个可能性。否则,由您决定。

【讨论】:

    【解决方案2】:

    没有选择是不好的做法,一切都与可读性有关。由于可读性,我个人更喜欢选择#1。

    这纯粹只是一个最适合您的案例。只是关于#2的注释,只是为了便于阅读,我将其重写为

    register_sidebar( 
        [
            'name'          => 'Home right sidebar',
            'id'            => 'home_right_1',
            'before_widget' => '<div>',
            'after_widget'  => '</div>',
            'before_title'  => '<h2 class="rounded">',
            'after_title'   => '</h2>', 
        ]
    );
    

    编辑

    注意:上述数组语法 ([]) 仅适用于 PHP 5.4。如果您碰巧使用旧版本(您确实不应该使用),请将短数组语法改回旧语法(array()

    【讨论】:

    • 请注意,[] 数组语法需要 PHP 5.4 或更高版本。 (你应该使用它,但如果你不是……)
    • @duskwuff 我知道这是 PHP 5.4 语法。 但如果您不是……,那么您肯定希望在不久的将来被黑客入侵。不能仅仅因为仍然有主机和用户被恐龙困住,就继续以糟糕的旧方式做事。拥有所有这些强大的功能和语法而不使用它的真正用途是什么
    • 同意!我只是指出这一点,以便任何不幸使用 PHP 5.3 或更早版本的人都知道他们为什么会遇到语法错误。
    猜你喜欢
    • 2017-02-04
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2015-04-10
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多