Anonymous
Надо ещё оттестировать, на чистом шаблоне.
Anonymous
Dmitriy
по идеи всегда должен вызывать getVariable через магию
Anonymous
Павел
Я считал что при protected всегда магия
Павел
А оно вишь чо
Anonymous
Я не уверен что всё ок в проекте, затестирую дома если силы останутся
Павел
Ну тут тока на private получается
Павел
__get() в BaseObject вообще не вернёт свойство если нет геттера
Павел
И там нет привязки к YII_DEBUG
Anonymous
Да я знаю, что там нет привязки.
Anonymous
Я шарю как кишки работают
Anonymous
Поэтому и удивился, ЧЗХ
Павел
Нужно повторение эксперимента
Dmitriy
Павел
Шерме!
Anonymous
Dmitriy
только приват свойство вызывается через getTest(), паблик и протектед на прямую
Павел
Кагэто?
Dmitriy
class CustomView extends View {
private $test = 1;
public function getTest() { return $this->test;
}
}
вот код. брекпоинт стоит на getTest. в коде вызываю $this->test
брекпоинт срабатывает только если $test приватный
Павел
Фигня какая то
Павел
А если просто класс и __get()
Павел
Сработает на protected?
Anonymous
Просто видимо путаницу сам механизм рендера вводит, там перехват потока вывода идет и класс через DI создается.
Павел
Магия! Поэтому я всегда подчеркивание добавляю к имени свойства
Павел
Anonymous
Не совсем странно)
Павел
Всегда думал что работает на proteted
Anonymous
Работает, если ты для модели например сделаешь
Павел
То что вызов рендер внутри класса это вносит дополнительную путаницу
Anonymous
Тут фишка в том, что CustomView и View родственники
Павел
Но внутри класса и private свойства должны быть доступны без геттера
Anonymous
Следовательно могут обратиться к protected
Anonymous
хотя...
Dmitriy
Не совсем странно)
странно, из View мы вызываем протектед метод . хотя видимость не позволит без магии
Anonymous
\yii\base\Component
Метод canGetProperty
Идет вызов property_exists($this, $name), следовательно если protected объявлен, то будет возвращен.
Павел
Это тут при чем? __get() наследуется от BaseObject
Anonymous
Anonymous
А кто тебе мешает получить protected свойство
Dmitriy
Anonymous
хотя тогда бы и приватные должны были бы быть доступны
Павел
Anonymous
Без пол литра не обойтись...
Павел
Вьюха просто инклудится в renderphpfile()
Павел
Павел
Странно...
Anonymous
Я тебе гарантирую что там CustomView будет
Anonymous
Просто вардоком активно пользуюсь
Павел
Ну так в файле вьюхи $this это экземпляр CustomObject
Павел
Так CustomView или CustomObject?
Anonymous
CustomView имел в виду
Anonymous
Я уже часов 30-35 не сплю
Павел
Так я с этим согласен 😆
Павел
Оч странно, оч.
Павел
Надо на php 5.6 проверить
Павел
Мож в семёрке магия только на private работает
Павел
А мы, лохи, этого не знаем
Anonymous
Кстати да, и там и там РНР7
Dmitriy
я не понимаю как во вью передается класс View, я не нашел такой фитчи. Там просто вызывается renderphp внутри View . раз в View пхп файл по идеи должны приватные свойства на прямую браться, а это не так =(
Anonymous
Вот я о том же
Anonymous
Либо должны и приватные быть доступны
Anonymous
Либо не доступны протектед
Dmitriy
можно разработчиков позвать и задать вопрос
Павел
тогда уж разработчиков PHP
Павел
Тема такая
Павел
Внутри класса вызов и private и protected происходит напрямую
Павел
Из класса потомка вызов protected - напрямую, а private через __get()
Vladislav
Народ, как подключить js в контроллере?
Павел
Leta
зачем в контроллере?
Павел
Кароче через AssetManager
KoJIT
у меня приватное свойство вызвалось напрямую
Vladislav
АссетМэненжер подключает во всех экшенах
Vladislav
мне только в одном нужно