Php 如何在drupal中实现全局工作
当作为普通php网页运行时,此代码段可以正常工作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
$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;