PHP中的C风格变量初始化

Jho*_*lla 4 php c++ variables scope

PHP中有本地,私有,静态和公共变量这样的东西吗?如果是这样,你能给出每个样本以及如何在课堂内外演示它们的范围吗?

mau*_*ris 5

我不知道C++,但PHP的工作原理是:

对于函数范围:

<?php

  $b = 6;

  function testFunc($a){
    echo $a.'-'.$b;
  }

  function testFunc2($a){
    global $b;
    echo $a.'-'.$b;
  }

  testFunc(3);
  testFunc2(3);

?>
Run Code Online (Sandbox Code Playgroud)

输出是

3-
3-6

函数内部的代码只能使用global关键字访问函数外部的变量.见http://php.net/manual/en/language.variables.scope.php

至于课程:

<?php

class ExampleClass{

  private $private_var = 40;
  public $public_var = 20;
  public static $static_var = 50;

  private function classFuncOne(){
    echo $this->private_var.'-'.$this->public_var; // outputs class variables
  }

  public function classFuncTwo(){
    $this->classFuncOne();
    echo $private_var.'-'.$public_var; // outputs local variable, not class variable
  }

}

$myobj = new ExampleClass();

$myobj->classFuncTwo();
echo ExampleClass::$static_var;
$myobj->classFuncOne(); // fatal error occurs because method is private

?>
Run Code Online (Sandbox Code Playgroud)

输出将是:

40-20
-
50
致命错误:在第22行的C:\ xampp\htdocs\scope.php中从上下文''调用私有方法ExampleClass :: classFuncOne()

需要注意的一点是:PHP没有变量初始化,尽管可以设置或不设置变量.设置变量后,会为其分配值.您可以使用它unset来删除变量及其值.未设置的变量等效于false,如果将其与所有错误输出一起使用,您将看到E_NOTICE错误.