Я создал функцию, которая создала две DateTimes на основе первого:Почему мои переменные передаются по ссылке?
// initial datetime (for test)
$dt = new \Datetime;
$dt->setDate(2012, 9, 5);
// splitting into 2 different datetimes
$dates = $this->defineLimitsByDate($dt);
// $dates[0] = 2011-07-01
// $dates[1] = 2012-09-01
На данный момент, право все в. Теперь я передаю эти DateTimes в другую функцию, в которой я использую while
цикл, который увеличивает начальную дату, пока она не достигнет второй один:
// now I use the 2 datetimes into a function...
$dateKeys = $this->generateDateKeys($dates[0], $dates[1]);
// and the function seems to modify them outside itself !
// $dates[0] = 2012-10-01
// $dates[1] = 2012-09-01
Кажется, что цикл в то время как внутри моей функции generateDateKeys
не локально изменяя параметры. Он изменяет значение $ date вне функции. Но я никогда не использую ссылку.
Может ли кто-нибудь просветить меня об этом?
Объекты (в основном) переданы по ссылке. См. Здесь для получения дополнительной информации: http://php.net/manual/en/language.oop5.references.php – Steve