
Павел
25.10.2017
11:39:27
Непонятно
Надо доки курить когда вызывается __get()

Dmitriy
25.10.2017
11:41:39
да там ничего интересного в __get
стандартный код

Google

?
25.10.2017
11:42:01
Надо ещё оттестировать, на чистом шаблоне.

Dmitriy
25.10.2017
11:42:19
по идеи всегда должен вызывать getVariable через магию

?
25.10.2017
11:42:44

Павел
25.10.2017
11:42:57
Я считал что при protected всегда магия
А оно вишь чо

?
25.10.2017
11:43:20
Я не уверен что всё ок в проекте, затестирую дома если силы останутся

Павел
25.10.2017
11:43:38
Ну тут тока на private получается
__get() в BaseObject вообще не вернёт свойство если нет геттера
И там нет привязки к YII_DEBUG

?
25.10.2017
11:46:28
Да я знаю, что там нет привязки.
Я шарю как кишки работают

Google

?
25.10.2017
11:46:46
Поэтому и удивился, ЧЗХ

Павел
25.10.2017
11:48:46
Нужно повторение эксперимента

Dmitriy
25.10.2017
11:49:12

Павел
25.10.2017
11:49:32
Шерме!

?
25.10.2017
11:49:38

Dmitriy
25.10.2017
11:51:03
только приват свойство вызывается через getTest(), паблик и протектед на прямую

Павел
25.10.2017
11:51:44
Кагэто?

Dmitriy
25.10.2017
11:53:06
class CustomView extends View {
private $test = 1;
public function getTest() { return $this->test;
}
}
вот код. брекпоинт стоит на getTest. в коде вызываю $this->test
брекпоинт срабатывает только если $test приватный

Павел
25.10.2017
11:54:09
Фигня какая то
А если просто класс и __get()
Сработает на protected?

?
25.10.2017
12:00:48
Просто видимо путаницу сам механизм рендера вводит, там перехват потока вывода идет и класс через DI создается.

Павел
25.10.2017
12:02:10
Магия! Поэтому я всегда подчеркивание добавляю к имени свойства

Dmitriy
25.10.2017
12:02:23

Павел
25.10.2017
12:02:38

?
25.10.2017
12:02:52
Не совсем странно)

Павел
25.10.2017
12:02:58
Всегда думал что работает на proteted

?
25.10.2017
12:03:27
Работает, если ты для модели например сделаешь

Павел
25.10.2017
12:03:28
То что вызов рендер внутри класса это вносит дополнительную путаницу

Google

?
25.10.2017
12:03:49
Тут фишка в том, что CustomView и View родственники

Павел
25.10.2017
12:03:53
Но внутри класса и private свойства должны быть доступны без геттера

?
25.10.2017
12:04:00
Следовательно могут обратиться к protected
хотя...

Dmitriy
25.10.2017
12:04:37
Не совсем странно)
странно, из View мы вызываем протектед метод . хотя видимость не позволит без магии

?
25.10.2017
12:05:45
\yii\base\Component
Метод canGetProperty
Идет вызов property_exists($this, $name), следовательно если protected объявлен, то будет возвращен.

Павел
25.10.2017
12:06:28
Это тут при чем? __get() наследуется от BaseObject

?
25.10.2017
12:06:55
А кто тебе мешает получить protected свойство

Dmitriy
25.10.2017
12:07:17

?
25.10.2017
12:07:23
хотя тогда бы и приватные должны были бы быть доступны

Павел
25.10.2017
12:07:49

?
25.10.2017
12:07:54
Без пол литра не обойтись...

Павел
25.10.2017
12:08:17
Вьюха просто инклудится в renderphpfile()
Странно...

?
25.10.2017
12:09:21
Я тебе гарантирую что там CustomView будет
Просто вардоком активно пользуюсь

Павел
25.10.2017
12:09:39
Ну так в файле вьюхи $this это экземпляр CustomObject

Google

Павел
25.10.2017
12:10:03
Так CustomView или CustomObject?

?
25.10.2017
12:10:10
CustomView имел в виду
Я уже часов 30-35 не сплю

Павел
25.10.2017
12:10:30
Так я с этим согласен ?
Оч странно, оч.
Надо на php 5.6 проверить
Мож в семёрке магия только на private работает
А мы, лохи, этого не знаем

?
25.10.2017
12:13:18
Кстати да, и там и там РНР7

Admin
ERROR: S client not available

Dmitriy
25.10.2017
12:24:01
я не понимаю как во вью передается класс View, я не нашел такой фитчи. Там просто вызывается renderphp внутри View . раз в View пхп файл по идеи должны приватные свойства на прямую браться, а это не так =(

?
25.10.2017
12:25:10
Вот я о том же
Либо должны и приватные быть доступны
Либо не доступны протектед

Dmitriy
25.10.2017
12:26:55
можно разработчиков позвать и задать вопрос

Павел
25.10.2017
12:47:45
тогда уж разработчиков PHP
Тема такая
Внутри класса вызов и private и protected происходит напрямую
Из класса потомка вызов protected - напрямую, а private через __get()

Vladislav
25.10.2017
12:58:10
Народ, как подключить js в контроллере?

Google

Павел
25.10.2017
12:59:04

Елена
25.10.2017
12:59:13
зачем в контроллере?

Павел
25.10.2017
12:59:27
Кароче через AssetManager

Vladimir
25.10.2017
12:59:34
у меня приватное свойство вызвалось напрямую

Vladislav
25.10.2017
12:59:52
АссетМэненжер подключает во всех экшенах
мне только в одном нужно

Dmitriy
25.10.2017
13:00:22

Елена
25.10.2017
13:01:10
указываешь там где нужно

Павел
25.10.2017
13:01:29

Елена
25.10.2017
13:01:57

Dmitriy
25.10.2017
13:01:57

Vladislav
25.10.2017
13:02:03
вместо $script путь можно указать @rooless ?

Павел
25.10.2017
13:02:11
Да, должны быть

Елена
25.10.2017
13:03:11

Павел
25.10.2017
13:12:34
Что пробовать? registerJS разве работает в контроллере?

Елена
25.10.2017
13:14:27

Павел
25.10.2017
13:14:52
Народ, как подключить js в контроллере?

Vladislav
25.10.2017
13:19:21
он даже в layouts не робит

Елена
25.10.2017
13:20:23
а добавил в файл с views
use app\assets\AppAsset;
AppAsset::register($this);

Vladislav
25.10.2017
13:21:47
да он там есть