Я пытался использовать array_walk_recursive
для чего-то и хотел использовать один из методов класса в качестве обратного вызова, поэтому попробуйте:
array_walk_recursive($TAINTED, "$this->encode()");
и их вариации не удались. В конце концов я решил:
array_walk_recursive($TAINTED, 'className::encode');
который работает, но я читал здесь, что методы вызова класса в статическом стиле, подобные этому, часто считаются плохой практикой. Или это одна из тех ситуаций, где это необходимо?
Итак, правильно ли это сделать, или есть способ включить функцию обратного вызова, не отказываясь от использования его как метода статического класса?
array_walk_recursive($TAINTED, array($this, 'encode'));
Я знаю, что эта тема старше, но, читая ваши слова «вызов методов класса статическим способом, как это часто считается плохой практикой», я должен сказать, что статические функции являются хорошей практикой при использовании для правильной задачи. Рамки, такие как Laravel и Symphony, показывают истинный потенциал статических методов.
В любом случае, когда вы не боитесь использовать статические методы, вы можете вызвать свой метод с помощью self, а не указывать имя класса, которое может измениться в процессе разработки.
array_walk_recursive($TAINTED, 'self::encode');