【问题标题】:Jumi (Joomla plugin) breaking PHP global keywordJumi (Joomla 插件) 打破 PHP 全局关键字
【发布时间】:2010-03-02 18:48:08
【问题描述】:

当我通过 Jumi 包含一个 PHP 脚本时,它似乎破坏了 global 关键字。示例:

<?php

$a = 5;

function foo()
{
        global $a;
        if (isset($a))
                echo $a;
        else
                echo '$a is not set';
}

foo();

?>

当我自己运行这个 PHP 脚本(名为 test.php)时,它会正确打印 5。当我通过 Jumi 在仅包含以下内容的 Joomla 文章中运行它时:

{jumi test.php}{/jumi}

它打印$a is not set

这是 Jumi 或 Joomla 中的错误,还是有一些(未记录的)我应该解决的方法?

当我通过 Jumi 包含一个 PHP 脚本时,它似乎破坏了 global 关键字。示例:

<?php

$a = 5;

function foo()
{
        global $a;
        if (isset($a))
                echo $a;
        else
                echo '$a is not set';
}

foo();

?>

当我自己运行这个 PHP 脚本(名为 test.php)时,它会正确打印 5。当我通过 Jumi 在仅包含以下内容的 Joomla 文章中运行它时:

{jumi test.php}{/jumi}

它打印$a is not set

这是 Jumi 或 Joomla 中的错误,还是有一些(未记录的)我应该解决的方法?


更新:如果我在脚本的顶部范围内将 $a 标记为全局:

<?php

global $a;
$a = 5;
function foo()
{
        global $a;
        if (isset($a))
                echo $a;
        else
                echo '$a is not set';
}
foo();

?>

test.php 可以正常运行,既可以单独运行,也可以通过 Jumi 包含在内。我最好的猜测是 Jumi 脚本包含在函数上下文中,而不是全局上下文中。

【问题讨论】:

  • 您的全球顶级解决方案对我不起作用(J1.5 / jumi 1.2.0):(
  • 您是否在内部和外部都将其标记为全局?
  • +1 表示更新。这也是 sourcerer 代码的一个问题,但正如其他地方所提到的,它可能是 Joomla 的“功能”

标签: php joomla global-variables


【解决方案1】:

您可以尝试一些不同的方法like this,因为我相信 Joomla 默认会限制范围

【讨论】:

【解决方案2】:

在 joomla 中使用 Jumi 非常容易,因为它在 2.5、3.0 版本中受支持
我有一个解决方案:

  1. 安装 Jumi。
  2. 转到仪表板(管理面板)。
  3. 点击组件 -> 新建
  4. 输入标题。
  5. 在自定义脚本中,您可以直接将您的 PHP/JavaScript 代码
  6. 您可以使用 Jumi 语法将文件名放在那里:{jumi[directory/filename.php]}

但请记住为其创建菜单,以便它可以出现在菜单的onclick 事件中。

【讨论】:

    猜你喜欢
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 2013-05-30
    • 2016-03-27
    • 2014-02-21
    • 1970-01-01
    相关资源
    最近更新 更多