Что означает запустить PHP функционируют с амперсандом?

Я выполнил несколько проектов MVC, работающих в настоящее время с L2SQL под капотом, и нашел, что им очень приятно пользоваться. Сейчас я начинаю новый проект и решил написать его, используя EF и L2EF, учитывая ранее цитированные статьи, провозглашающие смерть L2SQL. Спустя всего пару дней я решил вернуться к L2SQL. Простые вещи, такие как необходимость установки внешних ключей для вставок с использованием либо ужасного синтаксиса, показанного ниже, либо ненужные поиски, потрясли меня.

foo.Foreign_TypeReference.EntityKey = 
     new EntityKey("DataContextName.Foreign_Type", "Foreign_Type_Id", ForeignTypeId);

Вместо:

foo.Foreign_Type_Id = ForeignTypeId;

Я не думаю, что будет очень трудно перенести L2SQL на будущую версию EF, поскольку L2SQL имеет подмножество функциональных возможностей (хотя и лучше реализованных) , Несколько вещей, которые есть в L2SQL, которых нет в L2EF, например Single () и SingleOrDefault (), можно перенести в EF, создав несколько методов расширения. Я думаю, что потребуется гораздо меньше времени для запуска системы с использованием L2SQL, а затем перенести ее позже, когда EF не так вонючий.

124
задан Peter O. 12 September 2014 в 05:47
поделиться

2 ответа

An ampersand before a function name means the function will return a reference to a variable instead of the value.

Returning by reference is useful when you want to use a function to find to which variable a reference should be bound. Do not use return-by-reference to increase performance. The engine will automatically optimize this on its own. Only return references when you have a valid technical reason to do so.

See Returning References.

152
ответ дан 24 November 2019 в 01:08
поделиться

Как уже упоминалось, он возвращает ссылку. В PHP 4 объекты присваивались по значению, как и любое другое значение. Это в высшей степени неинтуитивно и противоречит тому, как работает большинство других языков.

Чтобы обойти проблему, ссылки использовались для переменных, указывающих на объекты. В PHP 5 ссылки используются очень редко. Я предполагаю, что это устаревший код или код, пытающийся сохранить обратную совместимость с PHP 4.

14
ответ дан 24 November 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: