Я не знаю о 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
Неустранимая ошибка: вызов частного метода ExampleClass :: classFuncOne () из контекста '' в C: \ xampp \ htdocs \ scope.php в строке 22 * 1021 *
Одно замечание: PHP не имеет инициализации переменных, хотя говорят, что переменные установлены или не установлены. Когда переменная установлена, ей присваивается значение. Вы можете использовать unset
, чтобы удалить переменную и ее значение. Неустановленная переменная эквивалентна false, и если вы используете ее со всеми выводами ошибок, вы увидите ошибку E_NOTICE.