Ну, я еще проверил насчет контекста переменных.
переменные объявляемые/используемые в подключаемом файле, остаются в контексте вызова, независимо от конструкции.
с функциями такая же байда.
Идея:
можно пройтись по PMA и заменить один способ вызова на другой(думаю спокойно можно в автоматическом режиме эту операцию проделать)
ну и соовтетсвенно посмотреть что при этом изменится.
самому лень сейчас проверять, но с удовольствием бы послушал о результатах
Добавлено через 15 минут
любопытсво не выдержало, и проверил сам.
итог:
в PMA подобная конструкция используется всего лишь в одном месте.
таким образом подключаются конфиги.
и подключаются они таким способом именно ради того, чтобы корректно обработать ошибку парсинга конфига(которые написан на PHP), в случае если кто-то неосторожно его модифицирует неверным образом
PHP:
if (function_exists('file_get_contents')) {
$eval_result =
eval('?>' . trim(file_get_contents($this->getSource())));
} else {
$eval_result =
eval('?>' . trim(implode("\n", file($this->getSource()))));
}
error_reporting($old_error_reporting);
if ($eval_result === false) {
$this->error_config_file = true;
} else {
$this->error_config_file = false;
$this->source_mtime = filemtime($this->getSource());
}
при этом выводится вполне красиво оформленное сообщение вида "phpMyAdmin was unable to read your configuration file!", вместо "Parse error"
короче все ради удобства пользователя.
PS заодно выянилось, что include возвращает
int 1, если в файле нету return, а eval возвращает
null
хотя, это и в справке можно найти, полагаю ж)
Добавлено через 26 минут
PHPCod3r.
вы так опубликовали тему, как будто в PMA используют повсеместно такой метод, чем лично меня(например) ввели в заблуждение.
в то время, как достаточно было просто проанализировать небольшой кусок кода, и если он непонятен, то хотя бы привести его, чтобы мы мы могли думать уже над ним, а не идти вслепую.
Ну, чтож, мы разобрались для чего в данном конкретном случае PMA использует такой способ.
Решение интересное, и полагаю оно будет полезно тем, кто не знал о нем(например мне

)
Более практического применения финту не вижу.