Эта тема на forum.dklab.ru


lorien: return как аргумент для AND
Почему нельзя писать ... and return 'bla-bla-bla' ?
php говорит, что там ошибка.
К примеру
function Foo( $foobar ) {
$foobar == 13 and return 'foobar is not 14';
$foobar = 13;
return 'foobar is not 14';
}
Евгений Галашин:
Потому что return это не функция, а ключевое слово. RTFM.
Константин Жинько [tIT]:
Убийственный код!
Anonymous:
Евгений Галашин
А где в fucking manual написано, что нельзя использовать return в выражениях типа вышеприведённого? Можно цитату?
die,exit,include,require,etc. это тоже ключевые слова, но они не вызывают ошибки интерпретации.
Maus:
// Ниже никоим образом не рассматривается бредовость кода, а только его работоспособность
Гость
die, exit, include, require работают, потому что они подобны функциям (function-like), хотя и не во всем. Из-за этой функциеподобности будет работать print(), но не будет echo().
Кстати, вот странность: include/require работают, но .. только один раз:
$foobar = 13;
$foobar == 13 and include("foo.php"); // работает!
$foobar == 13 and include("foo.php") and include("foo.php"); // не работает!
Но! Переведя сообщение об ошибке и положив в каталог, который указан в include_path файл с именем "1", от сообщения об ошибке избавляемся, причем имя файла, указанного во всех инклудах,кроме крайнего правого (он инклюдится первым), игнорируется. Что это - баг, фича или извращение -я не знаю..
Юрий Насретдинов:
извращение
lorien:
Ну на эти грабли я уже наступал. Там просто надо вокруг каждого include круглые скобки поставить. Типа того:
return (
(include_once('class/genericclass.php')) and
(include_once('class/sql.php')) and
(include_once('class/utils.php')) and
(include_once('class/config.php')) and
(include_once('class/module.php')) and
(include_once('class/error.php')) and
(include_once('class/user.php')) and
(include_once('class/cgi.php')) and
(include_once('mod/shell.php')) and
(include_once('class/thing.php')) and
(include_once('class/tpl.php')) and
(include_once('class/timer.php'))
);

Эта тема на forum.dklab.ru