PHP严格标准:在wordpress函数中只能通过引用传递变量

时间:2014-04-13 04:54:39

标签: php wordpress

我使用wordpress插件,我发现在

上返回错误
$alias = (string)end(array_keys($settings));

以上。错误是 PHP Strict Standards: Only variables should be passed by reference in on wordpress function

我在下面添加了这个功能。有人知道如何解决这个错误,因为这个错误,插件的becoz管理仪表板没有加载。

 /*
            * GET modules lists
            */
            function load_modules ()
            {
                $folder_path = $this->cfg['paths']['plugin_dir_path'] . 'modules/';
                $cfgFileName = 'config.php';

                // static usage, modules menu order
                $menu_order = array();

                foreach(glob($folder_path . '*/' . $cfgFileName) as $module_config ){
                    $module_folder = str_replace($cfgFileName, '', $module_config);

                    // Turn on output buffering
                    ob_start();

                    if( is_file( $module_config ) ) {
                        require_once( $module_config  );
                    }
                    $settings = ob_get_clean(); //copy current buffer contents into $message variable and delete current output buffer

                    if(trim($settings) != "") {
                        $settings = json_decode($settings, true);
                        $alias = (string) end(array_keys($settings));

                        // create the module folder URI
                        // fix for windows server
                        $module_folder = str_replace( DIRECTORY_SEPARATOR, '/',  $module_folder );

                        $__tmpUrlSplit = explode("/", $module_folder);
                        $__tmpUrl = '';
                        $nrChunk = count($__tmpUrlSplit);
                        if($nrChunk > 0) {
                            foreach ($__tmpUrlSplit as $key => $value){
                                if( $key > ( $nrChunk - 4) && trim($value) != ""){
                                    $__tmpUrl .= $value . "/";
                                }
                            }
                        }

                        // get the module status. Check if it's activate or not
                        $status = false;

                        // default activate all core modules
                        if(in_array( $alias, $this->cfg['core-modules'] )) {
                            $status = true;
                        }else{
                            // activate the modules from DB status
                            $db_alias = $this->alias . '_module_' . $alias;

                            if(get_option($db_alias) == 'true'){
                                $status = true;
                            }
                        }

                        // push to modules array
                        $this->cfg['modules'][$alias] = array_merge(array(
                            'folder_path'   => $module_folder,
                            'folder_uri'    => $this->cfg['paths']['plugin_dir_url'] . $__tmpUrl,
                            'db_alias'      => $this->alias . '_' . $alias,
                            'status'        => $status
                        ), $settings );

                        // add to menu order arrayhttp://cc.aa-team.com/wp-plugins/smart-seo-v2/wp-admin/admin-ajax.php?action=pspLoadSection&section=Social_Stats
                        if(!isset($this->cfg['menu_order'][(int)$settings[$alias]['menu']['order']])){
                            $this->cfg['menu_order'][(int)$settings[$alias]['menu']['order']] = $alias;
                        }else{
                            // add the menu to next free key
                            $this->cfg['menu_order'][] = $alias;
                        }

                        // add module to activate modules array
                        if($status == true){
                            $this->cfg['activate_modules'][$alias] = true;
                        }

                        // load the init of current loop module
                        if( $status == true && isset( $settings[$alias]['module_init'] ) ){
                            if( is_file($module_folder . $settings[$alias]['module_init']) ){
                                //if( is_admin() ) {
                                    $current_module = array($alias => $this->cfg['modules'][$alias]); 
                                    require_once( $module_folder . $settings[$alias]['module_init'] );
                                //}
                            }
                        }
                    }
                }

                // order menu_order ascendent
                ksort($this->cfg['menu_order']);
            }

1 个答案:

答案 0 :(得分:2)

End通过引用重新接收值,但函数的结果不可变。

您可以重写代码。

$array_keys = array_keys($settings);
$alias = (string)end($array_keys);
unset($array_keys);