如果语句和数组不起作用,则更智能

时间:2012-10-07 07:33:09

标签: php if-statement

我想创建一种更智能的方法来创建if语句。我正在编写一个函数来执行此操作:

if ( ! function_exists( 'get_meta' ) ) {
    function get_meta($i) {
        $fname_name = array(
                    'copyright_text',
                    'about_name',
                    'archive_name',
                    'contact_name',
                    'lenguage_name',
                    'cc_name',
                    'about_link',
                    'archive_link',
                    'contact_link',
                    'lenguage_link',
                    'cc_link',
                    'about_editors_name',
                    'about_responsibility_name',
                    'about_joinus_name',
                    'about_editors_link',
                    'about_responsibility_link',
                    'about_joinus_link'
                    );
        foreach( $fname_name as $fname )
            include_once( get_option($fname));

        if ( $i ) return $fname_name[$i];
    }
}

但是当调用此函数时,它会返回此错误:

  

警告:include_once()[function.include]:无法打开本地\ wp-content \ themes \ net \ 0.6 \ functions.php中包含的内容(include_path ='。; php \ PEAR') 398

基本上,只想将get_option('');添加到每个数组,例如返回:

get_option('copyright_text');

或甚至更具体,返回:

get_option('copyright_text', '');

FIXED:

好的,我只是自己解决这个问题,但我很感激这里的任何建议。

使用foreachinclude_once,我使用更简单的解决方案:

if ($i) return get_option($fname_name[$i], '');
else if ($i == 0) return get_option($fname_name[0], '');

2 个答案:

答案 0 :(得分:0)

使用此

 foreach( $fname_name as $fname ){
        include_once( get_option($fname));
       if ( $i ) return $fname;
 }

答案 1 :(得分:0)

这看起来就像是在创建一个用于编写访问器方法的快捷方式。你可以自己做一些好看的PHP魔术方法。特别要注意__get,__ set和__call。

http://php.net/manual/en/language.oop5.magic.php

在这种情况下,您正在做的事情类似于以下内容:

class myClass {

    // This could be associated with whatever other data you are interested in
    private $_meta = array(
                'copyright_text',
                'about_name',
                'archive_name',
                'contact_name',
                'lenguage_name',
                'cc_name',
                'about_link',
                'archive_link',
                'contact_link',
                'lenguage_link',
                'cc_link',
                'about_editors_name',
                'about_responsibility_name',
                'about_joinus_name',
                'about_editors_link',
                'about_responsibility_link',
                'about_joinus_link'
                );

    public function __get($name) {
        if (in_array($name, $this->_meta)) {
            return $this->_meta[$name];
        }
    }
}