Область видимости (или видимость) определяет, где в коде можно получить доступ к переменным, функциям и другим объектам. В PHP есть несколько видов областей видимости, которые контролируют доступность этих элементов в разных частях программы.
🚩Основные области видимости
🟠Локальная область видимости
Переменные, объявленные внутри функции, имеют локальную область видимости и доступны только внутри этой функции.
<?php
function test() {
$localVar = "I'm local";
echo $localVar; // Выведет "I'm local"
}
test();
echo $localVar; // Ошибка: переменная не найдена
?>
🟠Глобальная область видимости
Переменные, объявленные вне функций и классов, имеют глобальную область видимости и доступны везде в скрипте, кроме внутренних областей видимости (например, внутри функций), если не использовать ключевое слово
global.<?php
$globalVar = "I'm global";
function test() {
global $globalVar;
echo $globalVar; // Выведет "I'm global"
}
test();
?>
🟠Область видимости функций и методов
Переменные, объявленные внутри функции или метода класса, имеют свою локальную область видимости и не видны за её пределами.
<?php
class Test {
public function method() {
$localVar = "I'm local in method";
echo $localVar; // Выведет "I'm local in method"
}
}
$test = new Test();
$test->method();
echo $localVar; // Ошибка: переменная не найдена
?>
🟠Область видимости классов
Публичная (public)
Публичные свойства и методы доступны отовсюду: как внутри класса, так и вне его.
<?php
class Test {
public $publicVar = "I'm public";
public function publicMethod() {
echo $this->publicVar;
}
}
$test = new Test();
echo $test->publicVar; // Доступно и выведет "I'm public"
$test->publicMethod(); // Доступно и выведет "I'm public"
?>
🟠Защищённая (protected)
Защищённые свойства и методы доступны только внутри класса и его наследников.
<?php
class Base {
protected $protectedVar = "I'm protected";
protected function protectedMethod() {
echo $this->protectedVar;
}
}
class Derived extends Base {
public function accessProtected() {
echo $this->protectedVar; // Доступно
$this->protectedMethod(); // Доступно
}
}
$derived = new Derived();
$derived->accessProtected(); // Выведет "I'm protected"
// echo $derived->protectedVar; // Ошибка: доступ запрещен
// $derived->protectedMethod(); // Ошибка: доступ запрещен
?>
🟠Приватная (private)
Приватные свойства и методы доступны только внутри класса, в котором они объявлены, и недоступны в наследниках.
<?php
class Test {
private $privateVar = "I'm private";
private function privateMethod() {
echo $this->privateVar;
}
public function accessPrivate() {
$this->privateMethod(); // Доступно
}
}
$test = new Test();
$test->accessPrivate(); // Выведет "I'm private"
// echo $test->privateVar; // Ошибка: доступ запрещен
// $test->privateMethod(); // Ошибка: доступ запрещен
?>
🟠Локальная область видимости
Переменные доступны только внутри функции или метода, где они объявлены.
🟠Глобальная область видимости
Переменные доступны везде в скрипте, кроме внутренних областей видимости, если не используется
global.🟠Публичная область видимости
Свойства и методы доступны отовсюду.
🟠Защищённая область видимости
Свойства и методы доступны только внутри класса и его наследников.
🟠Приватная область видимости
Свойства и методы доступны только внутри класса, в котором они объявлены.
Ставь 👍 и забирай 📚 Базу знаний