parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Есть ли какая-то особенность/разница между $var и $self.var (без locals) в конструкторе класса?

andylars 25.07.2015 21:36 / 26.07.2015 00:27

Сабж.

Недавно наступив на грабли (и наивно полагая), что:
@create[arg]
$arg[$arg] 
$arg - станет public-переменной в контексте класса, где я "подхватил" эту глупость, уже не помню (казалось, я где-то видел, что-то типа: $arghash[^hash::create[$arghash]] (хотя очевидный смысл данного, был создать объект хеш в любом случае, даже если аргумент пустой), но почему-то казалось, что где-то оно работало как автоматическая декларация public-переменной.

В общем, поняв, что где-то я мог оставить public-переменную одноименной аргументу конструктора/метода, я сначала решил попробовать поступить просто:

пройтись по конструкторам, где предполагались public-переменные, которые были декларированый без указания $self, и просто заменить автоматически конкретные $var на $self.var по всему классу. Проверил замена прошла корректно (с точки зрения редактора).

Но на первом же классе (статический между прочим),
код сразу поламался, где-то в методах.

Почему, и где сейчас руки не доходят, нет времени, потом обязательно приведу все в более академический вид. И поэтому пока оставил как есть.

Но собственно сабж?