foreach для приведения объектов в Переполнение стека

Допустим, у меня есть функция приведения,

Object::cast($stdClass, 'MyClass');

эта функция работает отлично, однако, когда я использую этот цикл foreach,

foreach ($stdClasses as &$stdClass) { // & to get the reference
$stdClass = Object::cast($stdClass, 'MyClass');
}

это терпит неудачу на моем удаленном сервере, который является php 5.5.8, но странная вещь, это работает на моем локальном сервере (php 5.5.12).

в чем может быть проблема? потому что версия php отличается? или, возможно, php.ini запретил некоторые директивы на моей удаленной машине?

п.с. Мой локальный сервер также работает под управлением Windows, а удаленный — под Linux.

0

Решение

Наконец-то я понял, где это не сработало, и, наконец, проблема на самом деле не связана с вопросом здесь, но так как это было довольно удивительно, я решил ответить здесь сам, и, возможно, вы можете помочь мне объяснить, что я только что испытал, потому что я не Обязательно пойми почему.

У меня было два класса,

class Foo {
...
}

class Bar {

/** @var Foo $foos */
$foos = array();

public function set_foos ($foos) { $this->foos = $foos; }
public function get_foos () { return $this->foos; }
}

в Linux пишу

$foos = [new Foo(), new Foo()];
$bar = new Bar(); $bar->set_foos($foos);

foreach ($bar->get_foos as &$foo) {
$foo = 1;
}

не работал, объекты Foo не изменились на 1. Чтобы изменить их на 1, мне нужно было добавить функцию в класс Bar,

class Bar {

...

public function serialize () {
foreach($this->foos as &$foo) {
$foo = 1; // works
}
}
}

может кто-нибудь объяснить почему?

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector