相关疑难解决方法(0)

PHP全局函数

global关键字的效用是什么?

是否有任何理由更喜欢一种方法?

  • 安全?
  • 性能?
  • 还要别的吗?

方法1:

function exempleConcat($str1, $str2)
{
  return $str1.$str2;
}
Run Code Online (Sandbox Code Playgroud)

方法2:

function exempleConcat()
{
  global $str1, $str2;
  return $str1.$str2;
}
Run Code Online (Sandbox Code Playgroud)

什么时候使用有意义global

对我来说,它似乎很危险 ......但它可能只是缺乏知识.我感兴趣的是记录(例如代码示例,文档链接......)技术原因.

提前致谢!


赏金

这是关于这个主题的一个很好的一般性问题,我(@Gordon)正在提供奖励以获得更多答案.无论您的答案是否与我的答案一致或给出不同的观点都无关紧要.由于该global主题时不时出现,我们可以使用一个很好的"规范"答案来链接.

php language-design

98
推荐指数
7
解决办法
2万
查看次数

无法访问函数内的全局变量

这(我的代码的简化版)不起作用:

<?php
    $sxml = new SimpleXMLElement('<somexml/>');

    function foo(){
        $child = $sxml->addChild('child');
    }

    foo();
?>
Run Code Online (Sandbox Code Playgroud)

为什么?我想访问,$sxml因为我想在foo()失败时记录错误. foo()递归调用自己来创建一个目录列表,所以我担心将整体传递给$sxml自己(如同foo($sxml))可能会损害性能.

有没有办法进入$sxml内部$foo而不将其作为参数传递?(PHP 5.2.x +)

编辑:如果代码看起来像这样,实际上怎么办?

<?php
    bar(){
        $sxml = new SimpleXMLElement('<somexml/>');
        function foo(){
            $child = $sxml->addChild('child');
        }
        foo();
    }
    bar();
?>
Run Code Online (Sandbox Code Playgroud)

php variables scope global-variables

56
推荐指数
3
解决办法
9万
查看次数

从类中访问全局变量

我有以下(剥离)代码:

<?PHP
    class A {
        function Show(){
            echo "ciao";
        }
    }

    $a = new A();
    $b = new B();

    class B {
        function __construct() {
            $a->Show();
        }
    }
?>
Run Code Online (Sandbox Code Playgroud)

有点意外,我无法从类中访问全局定义的$ a变量,我得到一个未定义的变量异常.有帮助吗?

php

9
推荐指数
3
解决办法
2万
查看次数