$data[$node->parent]->childs[] = $node;
легко реализуется с помощью методов __get/__set . смысл есть только в случаях когда нужно отслеживать изменение данных, но в большинстве случаев есть варианты попроще. curl 'https://scanner.tradingview.com/forex/scan' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0' -H 'Accept: */*' -H 'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3' --compressed -H 'Referer: https://ru.tradingview.com/' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Origin: https://ru.tradingview.com' -H 'Connection: keep-alive' -H 'Cookie: _sp_ses.cf1a=*; _sp_id.cf1a=b0fefb4e-b6fc-4b7f-be1e-d843eac80acd.1579889900.1.1579890288.1579889900.32bd111d-e857-4de4-90e6-d4b8428b5863; __utma=226258911.215838491.1579889900.1579889900.1579889900.1; __utmb=226258911.16.8.1579890236897; __utmc=226258911; __utmz=226258911.1579889900.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmt=1' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' -H 'TE: Trailers' --data '{"symbols":{"tickers":["FX_IDC:EURUSD"],"query":{"types":["forex"]}},"columns":["Recommend.All","RSI","RSI[1]","Stoch.K","Stoch.D","Stoch.K[1]","Stoch.D[1]","CCI20","CCI20[1]","ADX","ADX+DI","ADX-DI","ADX+DI[1]","ADX-DI[1]","AO","AO[1]","Mom","Mom[1]","MACD.macd","MACD.signal","Rec.Stoch.RSI","Stoch.RSI.K","Rec.WR","W.R","Rec.BBPower","BBPower","Rec.UO","UO","EMA5","close","SMA5","EMA10","SMA10","EMA20","SMA20","EMA30","SMA30","EMA50","SMA50","EMA100","SMA100","EMA200","SMA200","Rec.Ichimoku","Ichimoku.BLine","Rec.VWMA","VWMA","Rec.HullMA9","HullMA9"]}'
К статическому методу Вы не можете обращаться через объект.если влезаешь в чужой ответ так хоть не лажай - нельзя из статики вызывать $this, а наоборот можно, другое дело что это считается правилом дурного тона.