Можно ли наследовать свойство члена родительской области и присвоить его внутренней переменной в операторе «использовать»?

Следующие работы (также с объектами и т.д.):

$b = new stdClass();

$b->a = "foo";
$b->b = "bar";

$example = function () use ($b) {
    echo $b->b;
};
$example();

Есть ли какой-то синтаксический трюк для передачи некоторого свойства объекта/члена массива и одновременного назначения его новой переменной без определения этой переменной во внешней области?

Этот пример псевдокод должен продемонстрировать, что я имею в виду:

$b = new stdClass();

$b->a = "foo";
$b->b = "bar";

$example = function () use ($b->b as $prop) {
    echo $prop;
};
$example();
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
61
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вы имеете в виду выполнение этого действия внутри оператора предложения «использовать» замыкания, я считаю, что ответ отрицательный. Все, что делает предложение «использовать», — это дает вашему закрытию доступ к (а) переменной (переменным), которые уже находятся в родительской области.

Если вы хотите изменить фактическое значение переменной, которую вы включаете через «использование», вы можете передать ее по ссылке, чтобы изменить исходное значение во внешней области, но, насколько мне известно, внутри не разрешено присвоение этот оператор предложения «использовать», который позволит вам создать новую переменную, доступную в области закрытия, которая имеет значение исходной переменной во внешней области.

Ответ принят как подходящий

Почему бы просто не определить его как параметр и покончить с этим? То, что вы пытаетесь сделать, это именно то, что обычно делают функции.

Например. и следуя именно тому варианту использования, который вы представляете в своем вопросе:

$example = function ($prop) {
    echo $prop;
};

$example($b->b);

Конечно, если вы хотите изменить переменную, вам просто нужно объявить ее как передачу по ссылке:

$anotherExample = function (&$prop) {
    echo $prop;
};

use не делает то, что вы хотите, и в этом нет особого смысла. Простая передача параметров функции, которая является основной природой функций, решает эту «проблему».

Очень хорошо сказано

parttimeturtle 08.03.2019 18:12

Другие вопросы по теме