문제

콜백 기능이 내 발전에 어떻게 도움이 될 수 있습니까? 특히 PHP. 나는 PHP를 처음 접했고 자체 프로그래밍을 처음 접했지만 jQuery와 같은 JS 라이브러리에서 콜백의 힘을 보았습니다. 나는 PHP에서 콜백으로 일했지만 그것에 대해 많은 질문을하고 있었다.

  1. 콜백 함수의 범위는 무엇입니까?
  2. 콜백 함수로 전달할 수있는 매개 변수 (암시 적 또는 명시 적으로)

다음은 Kohana 문서의 코드입니다.

$post->add_callbacks('email', array($this, '_unique_email'));

// Define the callback method
/*
 * Callback method that checks for uniqueness of email
 *
 * @param  Validation  $array   Validation object
 * @param  string      $field   name of field being validated
 */
public function _unique_email(Validation $array, $field)
{
   // check the database for existing records
   $email_exists = (bool) ORM::factory('user')->where('email', $array[$field])->count_all();

   if ($email_exists)
   {
       // add error to validation object
       $array->add_error($field, 'email_exists');
   }
}

이 콜백은 어떻게 작동 했습니까? 매개 변수는 어디에서 왔습니까?

도움이 되었습니까?

해결책

나는 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에서 콜백의 힘을 알고 있다고 말했으며 항상 on on on on on on onlick, onload, onkeyup 등이므로 그 행동과 다소 비슷한 예를 제시하고 싶었습니다.

나는 이것이 어떤 도움이 되었기를 바랍니다. 매개 변수에 대한 질문과 관련하여 콜백에 제공되는 내용에 따라 다릅니다. 내 예에서는 트리거 된 기능에 온스테이션이 $ 컨텐츠 매개 변수 만 제공됩니다.

blog_post에는 onsave () 함수가 있는데,이 기능은 다시 호출 될 함수를 저장 한 다음 save () 함수가 게시물을 저장하려고 할 때 onsave ()로 정의 된 콜백을 호출합니다. 나는 충분히 분명하기를 바랍니다.

기본적으로 콜백에 전달되는 인수는이를 호출하는 기능에 따라 다릅니다. 내가 원하는 인수와 함께 save () 함수 호출 parsebbcode ()를 만들 수 있지만 콜백이 아니라 콜백을 호출하는 함수에 의해 결정됩니다. 콜백은 어떤 인수가 전달되는지를 제어 할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top