В php manual http://php.net/manual/en/mysqli-stmt.bind-param.php
Я вижу такой код:
$stmt->bind_param('sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
/* execute prepared statement */
$stmt->execute();
Метод bind_param()
сохраняет ссылки на значения переменных $code
, $language
, $official
и $percent
. Ссылки хранятся внутри объекта $stmt
.
Когда вы даете значения переменных, объект $stmt
уже знает, где искать значения.
Мы можем создать класс, который делает это сами:
class Play {
protected $reference;
public function bind( & $variable) {
$this->reference = &$variable;
}
public function show() {
echo "{$this->reference}<br>\n";
}
}
Символ &
является ссылочным оператором. Когда вы используете его, вы получаете ссылку на значение другой переменной.
С помощью этого класса мы можем создать объект и повеселиться:
$play = new Play;
$play->bind($string);
$string = 'Hello!';
$play->show();
$string = 'World!';
$play->show();
Ни один php не может использовать переменную, прежде чем писать объявление!
Очевидно, что ни один язык не может выводить значение до его существования.