Php 从回调返回值

Php 从回调返回值,php,callback,Php,Callback,注册新用户后,我收到一个选择器和令牌,用于帐户验证。 我想知道是否发送了确认邮件,但从回调返回值时遇到问题。以下是我所拥有的: try { $callback = function ($selector, $token) { $msg = "some message"; if(mail($_POST['email'],"Please verify your account",$msg)) {

注册新用户后,我收到一个
选择器
令牌
,用于帐户验证。 我想知道是否发送了确认邮件,但从回调返回值时遇到问题。以下是我所拥有的:

  try {
      $callback = function ($selector, $token) {
          $msg = "some message";
          if(mail($_POST['email'],"Please verify your account",$msg))
          {
              return "success";
          }
          else
          {
              return "mail_not_sent";
          }
      };
      $auth->registerWithUniqueUsername($_POST['email'], $_POST['password'], $_POST['username'], $callback);
      $output['result']=$callback; //this is the array where I want to store the result in ("success" of "mail_not_sent").
  }
  catch ($e) {
  }
,所以如果我必须这样做,我会这样做:

$callback_result = '';

$callback = function ($selector, $token) use (&$callback_result) {
    /* Other code here */
    $callback_result = 'whatever';
    /* Other code here */
};

$auth->registerWithUniqueUsername(/* Other args here */, $callback);
$output['result'] = $callback_result;

这有点奇怪,但:

       try {
      $mailFlag = null;
      $callback = function ($selector, $token) use (&$mailFlag) {
          $msg = "some message";
          if(mail($_POST['email'],"Please verify your account",$msg))
          {
              $mailFlag = "success";
          }
          else
          {
              $mailFlag = "mail_not_sent";
          }
      };
      $auth->registerWithUniqueUsername($_POST['email'], $_POST['password'], $_POST['username'], $callback);
      $output['result'] = $mailFlag; //this is the array where I want to store the result in ("success" of "mail_not_sent").
  }
      catch ($e) {
  }

这些回调有什么用?这似乎是一种愚蠢的做事方式。你有什么建议吗?我基本上想知道什么时候出了问题。因此,或者邮件被发送,用户获得注册(=成功),或者这两件事中的一件失败。为什么不从
$auth->registerWithUniqueUsername
返回一个真/假值(或结果字符串)?在php中,回调可能会变得相当糟糕。@NikolaIsola:那不起作用。。。它会抛出一系列错误,比如选择器和令牌未设置。这非常有效,谢谢!有点离题,但仍然是:现在,当然有可能出现无法发送电子邮件的情况,但注册成功了。有没有办法使电子邮件的发送和注册都能成功,如果没有,这两个都不能成功?我猜不会,但值得一试。从您正在使用的项目的源代码(
delight im/auth
)来看,它不关心回调返回什么,所以我不确定您将如何执行。如果回调指示电子邮件未成功,您是否可以立即“注销”用户?