需要在函数内使用外部变量

时间:2018-03-17 作者:Ivan

我正在研究一个主题,需要帮助。

基本上我有一个早期设置的变量,叫做$type

<?php
if ( preg_match( "/^kssm-/i", $licensekey )&& preg_match("/@/i", $licensekey) == true) : ?>
<span style="color:#ae5842;">
    <?php print( \'Your License is Active\' ); $type = 1; ?>
</span>
然后我有一个函数,我想使用$type 变量

function file_pull() {
    if ( $upgrade_type == 1 ) {
        $import_path = \'/main/\';

        $files_array = array(
            \'start\'               => array(),
            \'home\'                => array(
                \'description\' => __( \'Importing: Main Templates\', \'kss\' ),
                \'files\'       => array(
                    \'home.xml\',
                ),
            ),

        );
    }
    if ( $upgrade_type == 2 ) {
        $import_path = \'/main/\';

        $files_array = array(
            \'start\'               => array(),
            \'home\'                => array(
                \'description\' => __( \'Importing: Main Templates\', \'kss\' ),
                \'files\'       => array(
                    \'page1.xml\',
                ),
            ),

        );
    }
}
我试过环球,但没有用。虽然这不是一个优雅的解决方案。

有什么值得一试的吗?

谢谢,谢谢。

1 个回复
SO网友:jasonp

你说得对,使用globals充其量是不雅观的。几乎总是有更好的解决方案不依赖于全局变量。但是,如果在file_pull() 函数(例如使用调试器),甚至只是打印$GLOBALS 在函数范围内的php错误日志中$type 变量是否显示为全局数组的一部分?

如果不是,我猜您的“第一个代码块”是某个文件的一部分,而该文件实际上并没有与包含您的函数的文件同时执行。

有助于了解代码块的来源。E、 g.功能。php、插件目录中的文件等。查看WordPress如何加载其所有文件可能会有所帮助(Between functions.php, widgets and plugins, which is loaded first?), 甚至PHP的执行方式(https://www.sitepoint.com/how-php-executes-from-source-code-to-render/).

(我假设$upgrade_type 在您上面的示例中,这里输入了错误的内容,实际上您的代码中没有输入错误。。。否则,根本问题可能就是这个打字错误。)

祝你好运

结束

相关推荐

Functions.php过滤器未应用于AJAX调用

我已经使用php向菜单中添加了一个元素(为了便于说明,简化了代码):add_filter( \'wp_nav_menu_\' . $menu_slug . \'_items\', \'add_menu_item\' , 10, 2 ); function add_menu_item ( $items ) { $item = sprintf(\'<li class=\"custom-item\">%s</li>\', menu_item_content ()