Я не знаю Kohana, но я предполагаю, что это подразумевает, что при проверке электронной почты он вызывает _unique_email ().
В PHP обратные вызовы могут помочь вам в разработке, чтобы предоставить вам простой способ расширить ваш код. Например:
$post = new Blog_Post();
$post->contents = $_POST['contents'];
$post->save();
Этот фрагмент кода создаст новое сообщение в блоге, установит содержимое и сохранит его в базе данных. Но, допустим, вы хотите обработать BBCode в содержимом. Как вы можете сделать это без необходимости редактировать класс Blog_Post? С обратным вызовом.
$post = new Blog_Post();
$post->onSave('parseBBCode');
$post->contents = $_POST['contents'];
$post->save(); # Will call parseBBCode when saving the blog post.
function parseBBCode($contents) {
# Parse BBCode and return the parsed contents.
}
Очевидно, что существуют разные способы реализации обратных вызовов, но вы сказали, что знаете силу обратных вызовов в JS, и они всегда onClick, onLoad, onKeyUp и т. Д., Поэтому я хотел бы привести пример, несколько напоминающий такое поведение.
Надеюсь, это помогло. Относительно ваших вопросов о параметрах, это зависит от того, что дано для обратного вызова. В моем примере любая функция, которая запускается в onSave, будет иметь только параметр $ contents.
В blog_post у меня есть функция onSave (), которая хранит функцию, которую нужно вызвать обратно, а затем, когда функция save () пытается сохранить сообщение, она вызывает любые обратные вызовы, определенные с помощью onSave. (). Надеюсь, я достаточно ясен.
В основном, аргументы, которые передаются обратным вызовам, зависят от функций, которые их вызывают. Я мог бы вызвать функцию save () parseBBCode () с любыми аргументами, которые я хотел, но они решаются функцией, которая вызывает обратный вызов, а не обратным вызовом. Обратный вызов не контролирует, какие аргументы ему передаются.