PHP中是否有本地,私有,静态和公共变量这样的东西?如果是这样,你能给出每个样本以及如何在课堂内外演示它们的范围吗?
答案 0 :(得分:5)
我不了解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个
致命错误:从第22行的C:\ xampp \ htdocs \ scope.php中的上下文''调用私有方法ExampleClass :: classFuncOne()
需要注意的一点:PHP没有变量初始化,尽管可以设置或不设置变量。设置变量后,会为其分配值。您可以使用unset
删除变量及其值。未设置的变量等效于false,如果将其与所有错误输出一起使用,您将看到E_NOTICE错误。
答案 1 :(得分:4)
在PHP中,有静态,本地,私有,公共和受保护的类变量。
但是,在PHP OOP实现中,情况有所不同:the manual将帮助您:
属性或方法的可见性 可以通过加前缀来定义 关键字public的声明, 保护或私人。
此外,请查看static keyword documentation。
您可以在此处详细了解常规变量及其范围:http://php.net/manual/en/language.variables.scope.php:
在大多数情况下,所有PHP变量只有一个范围。
我希望链接能够比我更好地向你解释; - )
答案 2 :(得分:1)
是的,PHP 5在课堂上包括static variables和visibility。
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