РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
130 of 274 menu

Защищённое свойство

Защищённое свойство (protected property) в Livewire - это свойство компонента, помеченное модификатором доступа protected. Такие свойства не передаются в JavaScript-часть компонента и не синхронизируются с клиентской стороной. Они используются для хранения внутреннего состояния, вычисляемых данных или служебной информации, которая не должна быть доступна в браузере.

Основное отличие защищённого свойства от публичного - оно не участвует в процессе гидратации и не отправляется клиенту. Это повышает безопасность и снижает объём передаваемых данных. Защищённые свойства можно изменять и читать только внутри класса компонента.

Синтаксис

<?php class MyComponent extends Component { protected $internal = 'value'; } ?>

Пример

Создадим компонент с защищённым свойством для хранения конфиденциальных данных:

<?php namespace AppLivewire; use LivewireComponent; class Profile extends Component { public $name = 'John Doe'; protected $apiKey = 'secret-12345'; public function getApiKey() { return $this->apiKey; } public function render() { return view('livewire.profile'); } } ?>
<div> <p>Name: {{ $name }}</p> <p>API Key: {{ $this->getApiKey() }}</p> </div>

Результат выполнения кода:

<div> <p>Name: John Doe</p> <p>API Key: secret-12345</p> </div>

Пример

Защищённое свойство не появляется в JavaScript-объекте компонента. Попытка обратиться к нему из Blade-шаблона напрямую приведёт к ошибке, если не использовать метод-геттер:

<?php namespace AppLivewire; use LivewireComponent; class Data extends Component { public $user = 'admin'; protected $password = 'super-secret'; public function render() { return view('livewire.data'); } } ?>
<div> <p>User: {{ $user }}</p> <p>Password: {{ $password }}</p> </div>

Результат выполнения кода:

<div> <p>User: admin</p> <p>Password: </p> </div>

Пример

Защищённые свойства часто используются для кеширования результатов вычислений, которые не должны синхронизироваться с клиентом:

<?php namespace AppLivewire; use LivewireComponent; class Stats extends Component { public $items = [1, 2, 3, 4, 5]; protected $sum; public function getSum() { if ($this->sum === null) { $this->sum = array_sum($this->items); } return $this->sum; } public function render() { return view('livewire.stats'); } } ?>
<div> <p>Sum: {{ $this->getSum() }}</p> </div>

Результат выполнения кода:

<div> <p>Sum: 15</p> </div>

Смотрите также

  • публичные свойства public-property,
    которые доступны в шаблоне и синхронизируются с клиентом
  • вычисляемые свойства computed-get,
    которые создаются с помощью метода с аннотацией #[Computed]
  • метод render,
    который возвращает шаблон компонента
  • класс Component,
    от которого наследуются все компоненты Livewire
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить