The data_get function retrieves a value from a nested array or object using "dot" notation:
$data = ['products' => ['desk' => ['price' => 100]]];

$price data_get($data'products.desk.price');
        return tap(new AblyMessage, function ($message) use ($event$payload) {

            
$message->name $event;

            
$message->data $payload;

            
$message->connectionKey data_get($payload'socket');

        });

    }
    {

        if (
method_exists($event'broadcastWith') &&

            ! 
is_null($payload $event->broadcastWith())) {

            return 
array_merge($payload, ['socket' => data_get($event'socket')]);

        }



        
$payload = [];
        [$value$key] = static::explodePluckParameters($value$key);



        foreach (
$array as $item) {

            
$itemValue data_get($item$value);
            if (is_null($key)) {

                
$results[] = $itemValue;

            } else {

                
$itemKey data_get($item$key);



                if (
is_object($itemKey) && method_exists($itemKey'__toString')) {

                    
$itemKey = (string) $itemKey;
                if (! is_string($prop) && is_callable($prop)) {

                    
$result $prop($a$b);

                } else {

                    
$values = [data_get($a$prop), data_get($b$prop)];



                    if (! 
$ascending) {

                        
$values array_reverse($values);
                $result = [];



                foreach (
$target as $item) {

                    
$result[] = data_get($item$key);

                }



                return 
in_array('*'$key) ? Arr::collapse($result) : $result;
            [$value$key] = $this->explodePluckParameters($value$key);



            foreach (
$this as $item) {

                
$itemValue data_get($item$value);



                if (
is_null($key)) {

                    yield 
$itemValue;
                if (is_null($key)) {

                    yield 
$itemValue;

                } else {

                    
$itemKey data_get($item$key);



                    if (
is_object($itemKey) && method_exists($itemKey'__toString')) {

                        
$itemKey = (string) $itemKey;
    {

        if (
func_num_args() === 2) {

            return 
$this->contains(function ($item) use ($key$value) {

                return 
data_get($item$key) === $value;

            });

        }
    public function value($key$default null)

    {

        if (
$value $this->firstWhere($key)) {

            return 
data_get($value$key$default);

        }



        return 
value($default);
        $values $this->getArrayableItems($values);



        return 
$this->filter(function ($item) use ($key$values$strict) {

            return 
in_array(data_get($item$key), $values$strict);

        });

    }
    public function whereNotBetween($key$values)

    {

        return 
$this->filter(function ($item) use ($key$values) {

            return 
data_get($item$key) < reset($values) || data_get($item$key) > end($values);

        });

    }
        $values $this->getArrayableItems($values);



        return 
$this->reject(function ($item) use ($key$values$strict) {

            return 
in_array(data_get($item$key), $values$strict);

        });

    }
        }



        return function (
$item) use ($key$operator$value) {

            
$retrieved data_get($item$key);



            
$strings array_filter([$retrieved$value], function ($value) {

                return 
is_string($value) || (is_object($value) && method_exists($value'__toString'));
        }



        return function (
$item) use ($value) {

            return 
data_get($item$value);

        };

    }