2013-08-28 1 views
0

Согласно http://book.cakephp.org/2.0/en/models/behaviors.html#creating-behavior-methods,Как получить параметры передачи по ссылке для методов поведения в cakephp?

я могу сделать следующее:

public function fly(Model $Model, $from, $to) { 
    // Do some flying. 
} 

Я хочу, чтобы иметь прошли по ссылке параметр в методе поведения.

Это мой метод:

public function extractByFields(Model $model, $data, $options = array(), Array $missingFields) { 

параметр Я хочу быть передан по ссылке является $missingFields.

Причина в том, что я хочу вернуть свой $foundFields, но в случае, если есть другие отсутствующие поля, я также хочу предоставить их вызывающему методу.

Если CakePHP не может позволить мне возвращать параметры, переданные по ссылке в моих методах поведения, мне бы хотелось, чтобы некоторые советы о том, как лучше всего использовать обходной путь?

Моя версия CakePHP2.4

ответ

1

С методами поведения вы не можете использовать пройти по ссылке параметры. call_user_func_array() используется для вызова методов, и аргументы не передаются по ссылке.

Возможное обходное решение: хранить недостающие поля в классе Behavior как атрибут и иметь способ их извлечения.

+0

Просто хотел добавить, что я принял обходное решение, предложенное Церамом. Я сохранил $ missingFields как частный атрибут и извлекал их с помощью отдельного метода –