Конструктор PHP API Facebook — локальная переменная игнорируется по какой-то причине?

#php #facebook-php-sdk

#php #facebook-php-sdk

Вопрос:

Предостережение: я ни в коем случае не гуру PHP — надеюсь, кто-нибудь сможет объяснить, что делает этот код — почему он применяет что-то к локальной переменной ($ state), а затем игнорирует ее? Этот код находится в 3.1.1 php sdk, и я заметил это при отладке проблемы с взаимодействием js sdk и php во время запуска authResponse.

   public function __construct($config) {
    $this->setAppId($config['appId']);
    $this->setApiSecret($config['secret']);
    if (isset($config['fileUpload'])) {
      $this->setFileUploadSupport($config['fileUpload']);
    }

    $state = $this->getPersistentData('state');
    if (!empty($state)) {
      $this->state = $this->getPersistentData('state');
    }
  }
  

Это так просто, как он хотел использовать $this->state = $state ?

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

1. Если люди не отвечают или не используют это, это сложно. На несколько вопросов, которые я задал, на большинство даны ответы или комментарии. Что вы имеете в виду?

Ответ №1:

Она не игнорируется. В следующей строке она используется в качестве параметра для empty .

Параметры empty должны быть переменными (см. Руководство), поэтому он используется таким образом.

Тем не менее, они, вероятно, могли бы использовать его и в $this->state назначении. Почему они этого не сделали, я бы не знал.

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

1. Я предполагаю, что вы не хотите переопределять $this->state с пустым результатом. Итак, вы сохраняете результат, чтобы иметь возможность использовать empty() функцию, и если он пуст, вы ничего не хотите делать.

2. Ну, очевидно, вы не хотите переопределять ее пустым состоянием, проверка пустоты гарантирует, что это следующее назначение, на которое я ссылался в последней строке моего Q.

3. Ну, они могли бы использовать $state переменную в присваивании внутри if-блока. Это то, что я имел в виду. Теперь он снова вызывает средство получения без причины.

Ответ №2:

Я думаю, это упущение со стороны программистов. Он мог и должен был присвоить $state $this->state .