PHP中的C风格变量初始化

PHP中的C风格变量初始化,php,c++,variables,scope,Php,C++,Variables,Scope,PHP中是否存在本地、私有、静态和公共变量?如果是这样,你能给出每个样本,以及它们的范围是如何在类内外函数中演示的?< p>我不知道C++,但是PHP是如何工作的: 对于功能范围: <?php $b = 6; function testFunc($a){ echo $a.'-'.$b; } function testFunc2($a){ global $b; echo $a.'-'.$b; } testFunc(3); testF

PHP中是否存在本地、私有、静态和公共变量?如果是这样,你能给出每个样本,以及它们的范围是如何在类内外函数中演示的?

< p>我不知道C++,但是PHP是如何工作的:

对于功能范围:

<?php

  $b = 6;

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

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

  testFunc(3);
  testFunc2(3);

?>

输出是

3-
3-6

函数内部的代码只能使用全局关键字访问函数外部的变量。看

至于课程:

<?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

?>

产出将是:

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


需要注意的一点是:PHP没有变量初始化,尽管变量可以说是设置的,也可以说是未设置的。设置变量时,已为其赋值。您可以使用
unset
删除变量及其值。not set变量相当于false,如果在输出所有错误时使用它,您将看到一个E_NOTICE错误。

在PHP中有静态、本地、私有、公共和受保护的类变量

但是,在PHP OOP实现中,情况有点不同:将帮助您:

属性或方法的可见性 可以通过在 以公众为关键词的宣言, 受保护的或私人的

此外,请看一下

您将能够在此处阅读更多有关正常变量及其范围的信息:

大多数情况下,所有PHP变量都只有一个作用域

我希望链接能够比我更好地向您解释;-)

是的,PHP5包括学生和课堂

class MyClass
{
    public static $my_static = 'foo';
    public $public = 'Public';
    protected $protected = 'Protected';
    private $private = 'Private';

    public function staticValue() {
       return self::$my_static;
    }
    function printHello()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}

$obj = new MyClass();
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello(); // Shows Public, Protected and Private

+静态、私有、公共、类应用于C++而不是C。