Как использовать callback функции внутри класса

Пробовали ли вы использовать функции PHP, требующие указания кол-бек функции в качестве аргумента? Я часто пользуюсь preg_replace_callback().

Если функция вызывается внутри класса, то хотелось бы и callback разместить внутри этого же класса (объекта). О плюсах поговорим немного позже.

Как правильно объявить и вызвать такую функцию?

Предлагаю рассмотреть следующий пример PHP кода:

Класс ABN объявляет публичный метод-функцию repl(), которая заменяет цифры в строке на символ «-».  Для замены используется вызов хелпера — приватой функции этого же класса _callback(). Функция может быть объявлена и как public, это уже на ваш вкус.

Мне хотелось лишь обратить внимание на технику формирования аргумента в месте, где нужно указать CALLBACK функцию — это массив из двух элементов : ссылка на объект $this + имя функции.

Первым плюсом является сохранение чистоты пространства имен. Хелпер остаётся внутри своего класса, не создавая «бардака».

Если в хелпер требуется передать дополнительные параметры, то в случае с глобальной функцей-хелпером, необходимо будет объявлять вспомогательные глобальные переменные. А в случае хелпера внутри класса, вы сможете остаться в рамках контекста объекта, чтобы передать дополнительные данные в _callback функцию.

Написать комментарий

Мало букафф? Читайте есчо !

Время в PHP, смещение от GMT, UTC

Январь 14, 2016 г.

Для начала разберемся что такое GMT и UTC.  Во многих источниках они упоминаются как синонимы, и между ними действительно не существенная разница (до 1 секунды). Их отличие в методике получения точного значения. UTC (универсальное координированное ...

Читать

Формируем относительную ссылку

Март 2, 2017 г.

Посмотрим как можно сформировать url относительно текущего местоположения файла в php. К примеру, у в каталоге /site-script/ находится программа на PHP  и подкаталог /site-script/img, где хранятся картинки. Требуется построить относительный ...

Читать

 

Комментарии к «Как использовать callback функции внутри класса»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: