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

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

            $message->name = $event;

            $message->data = $payload;

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

        });

    }
<?php     {

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

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

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

        }



        $payload = [];
<?php         [$value, $key] = static::explodePluckParameters($value, $key);



        foreach ($array as $item) {

            $itemValue = data_get($item, $value);
<?php             if (is_null($key)) {

                $results[] = $itemValue;

            } else {

                $itemKey = data_get($item, $key);



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

                    $itemKey = (string) $itemKey;
<?php     public function containsStrict($key, $value = null)

    {

        if (func_num_args() === 2) {

            return $this->contains(fn ($item) => data_get($item, $key) === $value);

        }



        if ($this->useAsCallable($key)) {
<?php                 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);
<?php                 $result = [];



                foreach ($target as $item) {

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

                }



                return in_array('*', $key) ? Arr::collapse($result) : $result;
<?php     public function containsStrict($key, $value = null)

    {

        if (func_num_args() === 2) {

            return $this->contains(fn ($item) => data_get($item, $key) === $value);

        }



        if ($this->useAsCallable($key)) {
<?php             [$value, $key] = $this->explodePluckParameters($value, $key);



            foreach ($this as $item) {

                $itemValue = data_get($item, $value);



                if (is_null($key)) {

                    yield $itemValue;
<?php                 if (is_null($key)) {

                    yield $itemValue;

                } else {

                    $itemKey = data_get($item, $key);



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

                        $itemKey = (string) $itemKey;
<?php     public function value($key, $default = null)

    {

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

            return data_get($value, $key, $default);

        }



        return value($default);
<?php     {

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



        return $this->filter(fn ($item) => in_array(data_get($item, $key), $values, $strict));

    }
<?php     public function whereNotBetween($key, $values)

    {

        return $this->filter(

            fn ($item) => data_get($item, $key) < reset($values) || data_get($item, $key) > end($values)

        );

    }
<?php     {

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



        return $this->reject(fn ($item) => in_array(data_get($item, $key), $values, $strict));

    }
<?php         }



        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'));