Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在drupal中实现全局工作_Php_Drupal_Global - Fatal编程技术网

Php 如何在drupal中实现全局工作

Php 如何在drupal中实现全局工作,php,drupal,global,Php,Drupal,Global,当作为普通php网页运行时,此代码段可以正常工作 <?php $foo = 123; function whatever () { global $foo; echo "FOO = $foo<br/>"; } whatever (); ?> 但是在drupal基本页面中放入完全相同的代码会得到这个输出 FOO = PHP显然在工作,但globals没有。 我对drupal很在行,但我懂php。我在谷歌上搜索了这个问题,但没有发现任何相关信息 为什么它

当作为普通php网页运行时,此代码段可以正常工作

<?php
  $foo = 123;

function whatever ()
{
  global $foo;
  echo "FOO = $foo<br/>";
}

whatever ();
?>
但是在drupal基本页面中放入完全相同的代码会得到这个输出

FOO = 
PHP显然在工作,但globals没有。 我对drupal很在行,但我懂php。我在谷歌上搜索了这个问题,但没有发现任何相关信息

为什么它不能在drupal中工作? 我如何让它工作?
请不要回答,你不应该使用全局

进一步的实验表明,Drupal php页面中的代码可以正常工作

<?php
  global $foo;  // This trick makes it work
  $foo = 123;

function whatever ()
{
  global $foo;
  echo "FOO = $foo<br/>";
}
whatever ();
?>
他正在工作


希望这能有所帮助。

如何将此代码放到Drupal basic页面?您是否用这段代码创建并添加了一个模块?Drupal是用PHP编写的,它不会(也不能)阻止您使用globals。事实上,Drupal可以制作。我建议您将代码从PHP过滤器中移出(它使用
eval()
,显然会导致问题),并移到一个自定义模块中,这样就不会有问题了。请参阅user4035,我单击内容-添加内容-基本页面,并将文本格式设置为PHP代码。克莱夫,你的意思是说将php代码放在基本页面中就是使用eval()来执行php吗?我刚刚测试了上述代码在普通php页面(而不是drupal)的eval()函数中执行时也可以工作。
<?php
  global $foo;  // This trick makes it work
  $foo = 123;

function whatever ()
{
  global $foo;
  echo "FOO = $foo<br/>";
}
whatever ();
?>
$GLOBAL ["foo"] = 123;