【问题标题】:Kohana globals being cleared?Kohana 全局变量被清除?
【发布时间】:2011-06-23 23:33:56
【问题描述】:

我之前写了一个问题,试图在 Kohana 中使用控制器,但我放弃并重写了文件。所以现在,我在 Kohana 控制器中有这个 php 脚本。控制器正在呈现的视图“需要”一个 php 文件,以便我可以执行一些第三方功能。我遇到了一个重大问题并开始调试。问题似乎是包含文件内的函数无法从同一个文件中访问函数外的变量。看来 Kohana 正在以某种方式清除全局变量???

示例:

//controller.php
require_once("ccfunctions.php");

//ccfunctions.php
$test = 'something';
function test(){
  global $test;
  echo $test;
}
test();
//This does not produce anything

对这个有什么想法吗?

编辑: 实际上,即使从我正在呈现的视图文件中,上面的示例也不起作用。忘记包含的文件。我意识到 Kohana 试图强制执行 MVC 模型,但这很荒谬。为什么我不能在视图文件中创建函数并调用全局变量?

【问题讨论】:

  • 你可以...一定有其他问题。您所描述的正是帮助文件所做的,所以为什么它对您不起作用可能是由与 Kohana 无关的问题引起的,但我可能是错的。有兴趣知道问题是什么。您是否尝试在 test 函数中回显字符串文字以查看函数本身是否被调用?
  • @Endophage:字符串文字在函数内显示良好。奇怪。在这里扯我的头发;)我以前没有使用过Kohana,这是一个收购项目。到目前为止一切都很好,但这真的很困扰我。
  • 您的问题与 kohana 无关,而与对变量可见性范围的理解有关。
  • @Endophage。是的,我不明白这是如何处理的。

标签: php kohana global-variables


【解决方案1】:

在这两种情况下,您都需要为变量指定global

//controller.php
require_once("ccfunctions.php");

//ccfunctions.php
global $test;
$test = 'something';
function test(){
  global $test;
  echo $test;
}
test();
//This does not produce anything

顺便说一句,这真的很奇怪,我相信在不使用global的情况下,任何情况下都有解决方法

【讨论】:

  • 从字符串声明中指定“全局”会产生解析错误。
【解决方案2】:

不要使用全局变量。当您想使用全局变量时,为什么要使用 OOP 框架?

【讨论】:

  • 不是我的选择。如果您必须花费数小时修改代码以适应 MVC 模型,为什么还要使用框架?
  • @Senica Gonzalez: kohana 适合 MVC模型
  • 我知道,我就是这么说的。但其他代码并不总是适合该模型。反正没关系。
猜你喜欢
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
相关资源
最近更新 更多