#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 .