PHP 中有局部变量、私有(private)变量、静态变量和公共(public)变量吗?如果是这样,您能否提供每个示例以及它们的范围如何在类内外和内部函数中展示?
最佳答案
我不了解 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
函数内的代码只能使用 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
?>
输出将是:
40-20
-
50
Fatal error: Call to private method ExampleClass::classFuncOne() from context '' in C:\xampp\htdocs\scope.php on line 22
需要注意的一点是:PHP 没有变量初始化,尽管据说可以设置或不设置变量。设置变量时,它已被分配了一个值。您可以使用 unset
删除变量及其值。未设置的变量等同于 false,如果将它与所有错误输出一起使用,您将看到 E_NOTICE 错误。
关于php - PHP 中的 C 风格变量初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1747254/