🤔
Какие бывают области видимости?Область видимости (или видимость) определяет, где в коде можно получить доступ к переменным, функциям и другим объектам. В 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.
🟠
Публичная область видимостиСвойства и методы доступны отовсюду.
🟠
Защищённая область видимостиСвойства и методы доступны только внутри класса и его наследников.
🟠
Приватная область видимостиСвойства и методы доступны только внутри класса, в котором они объявлены.
Ставь 👍 и забирай 📚 Базу знаний