使用php 5.2.17意外的T_FUNCTION但在localhost和php 5.3.10上很好

时间:2012-06-04 18:29:16

标签: php wordpress

我将Wordpress文件上传到运行php 5.2.7版的服务器后出现意外的T_FUNCTION php错误。

主题在localhost(使用MAMP)上工作正常,并且我自己的服务器上运行php版本5.3.10也没有错误。

可能出现什么问题或者可以采取哪些措施来解决此错误?

这是导致错误的行:

add_action('init', function() use($name, $args) {   

整个functions.php文件如下所示:

<?php 

/* Add Post Type */
function add_post_type($name, $args = array() ) {   
    if ( !isset($name) ) return;

    $name = strtolower(str_replace(' ', '_', $name));

    add_action('init', function() use($name, $args) {   
        $args = array_merge(
            array(
                'label' => 'Members ' . ucwords($name) . '',
                'labels' => array('add_new_item' => "Add New $name"),
                'singular_name' => $name,
                'public' => true,
                'supports' => array('title', 'editor', 'comments'),
            ),
            $args
        );

        register_post_type( $name, $args);
    });
}


add_post_type('Netherlands', array(
    'supports' => array('title', 'editor', 'thumbnail', 'comments')
));


add_post_type('Belgium', array(
    'supports' => array('title', 'editor', 'thumbnail', 'comments')
));

    add_post_type('Germany', array(
    'supports' => array('title', 'editor', 'thumbnail', 'comments')
));

    add_post_type('France', array(
    'supports' => array('title', 'editor', 'thumbnail', 'comments')
));

    add_post_type('United-Kingdom', array(
    'supports' => array('title', 'editor', 'thumbnail', 'comments')
));

    add_post_type('Ireland', array(
    'supports' => array('title', 'editor', 'thumbnail', 'comments')
));

    add_post_type('Spain', array(
    'supports' => array('title', 'editor', 'thumbnail', 'comments')
));

    add_post_type('Portugal', array(
    'supports' => array('title', 'editor', 'thumbnail', 'comments')
));

    add_post_type('Italy', array(
    'supports' => array('title', 'editor', 'thumbnail', 'comments')
));

我是php的新手,只能用于Wordpress主题。任何帮助都非常感谢。

3 个答案:

答案 0 :(得分:7)

不能在PHP中使用小于5.3的匿名函数

重新编写代码,使其不涉及匿名函数,它应该可以在旧服务器上运行。

答案 1 :(得分:1)

add_action()的第二个参数属于callback类型。

Pre 5.3,这通常是表示函数的字符串:

add_action('init', 'myFunction');

function myFunction() { echo 'init'; }

在处理对象时,还有其他替代方法,例如create_function和其他语法。

5.3以后,允许使用匿名函数:

add_action('init', function() { echo 'init'; });

答案 2 :(得分:-1)

PHP 5.3.0提供的匿名函数