Зачем в PHP ссылки?

Я уже как год активно программирую на PHP и JS и недавно листая тетрадки с лекций по C++ то и дело натыкался на ссылки, я на сколько помню это для того чтобы программа была динамичная или что то с памятью там связно, в общем там ничего я как помню не обходится без указателй и ссылок, решил присмотреться к документации PHP и тут немало выделено этому, зачем же использовать в PHP ссылки и указатели, как правильно и можно какой нибудь пример, скажем как это может помочь в работе с БД или на примере контроллера/модели что нибудь повседневное такое для PHP программиста , было бы очень полезно для меня!!
  • Вопрос задан
  • 3927 просмотров
Решения вопроса 5
MintTea
@MintTea
Ну так, сходу:

Модификация элементов внутри цикла требует ссылки:
foreach ($array as &$item) {
    $item *= 2;
}

Рекурсивное замыкание реализуется ссылкой:
$recursiveClosure = function() use (&$recursiveClosure) {
    $recursiveClosure();
};

Передача параметров в функцию по ссылке:
function foo(&$result)
{
    $result = 'result';
}


Можно продолжать. Я удивлен, как вы не столкнулись ни с одним из вышеперечисленного за год.
Ответ написан
AlexPTS
@AlexPTS
Full stack веб разработчик
Вам надо книгу какую-то взять для ночичков, обычно это там объясняется, что такое переменные, что ссылки и тд. Чтобы комплексно понять и сложить все в 1 картину.
Ответ написан
@sdo
Мы обычно используем ссылки, чтобы вернуть из функции "несколько" результатов. Лучше один раз увидеть. Предположим, мы пишем функцию для запроса данных к БД. Начнем с простого:
function query($sql){
 ...
  return $data;
}

Вызов:
print_r ( query("Select * from test" ) );

Вроде ниче так, пока в таблице есть записи - мы знаем что если из функции что-то вернулось - запрос состоялся. А если пусто - это нет данных или произошла ошибка? Получается, возвращать надо TRUE (запрос состоялся)/FALSE, ну а то что нет данных - это еще не ошибка.. И тогда мы стали делать так (передавать из функции $data по ссылке):
function query($sql, &$data){
 ...
  return $result;
}
// это позволяет вызывать запросы следующим образом:
if ( query('select * from test', $data) ){
    // проверка и обработка $data
}
else{
// обработка ошибки
}
Ответ написан
nowm
@nowm
Если что, «в методах объекта, $this всегда является ссылкой на вызывающий объект»

Если вы можете обойтись без использования $this в коде, то, определённо, ссылки вам не принесут пользы. :)

class MyModel {
    private $db;

    public function __construct($db) {
        $this->db = $db;
    }
}


В коде выше тоже используется механизм ссылок — $db, которая передаётся в конструктор и свойство «db» класса MyModel указывают на один и тот же экземпляр объекта после того, как отработал конструктор MyModel.

как это может помочь в работе с БД или на примере контроллера/модели что нибудь повседневное такое для PHP программиста , было бы очень полезно для меня!!

Я думаю, что механизм ссылок самым непосредственным образом помогает вам работать с БД. Но, так как ядро PHP само занимается оптимизациями, связанными со ссылками, от кодера не очень часто требуется их использовать явно.

Это тоже самое, что жёсткие ссылки в файловой системе. От них может быть большая польза, но рядовой пользователь не очень часто их использует осознанно.
Ответ написан
@suppot4545
В этой статье мне понравился пример использования ссылок в php
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы