Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in C:\www\htdocs\test.ru\www\index.php on line 19
<?php
class A{
function __construct($n,$l,$p){
try{
if($n="" or $l="" or $p="")
throw new Exception("Ошибка, один из
аргументов не передан конструктору!");
echo "Имя: ",$n;
echo "<br>Логин: ",$l;
echo "<br>Пароль: ",$p;
}catch(Exception $e){
echo $e->getMesage();
}
}
$obj = new A("5","clown","111");
?>
Спустя 4 минуты, 20 секунд (25.07.2011 - 19:45) ADiel написал(а):
syntax error это не исключение. код даже выполняться не будет.
Исключением может быть нотис, но никак не syntax error
Исключением может быть нотис, но никак не syntax error
Спустя 39 секунд (25.07.2011 - 19:46) kristall написал(а):
Фигурную скобку у конструктора не закрыл.
Спустя 26 секунд (25.07.2011 - 19:47) ADiel написал(а):
if($n="" or $l="" or $p="")тут не сравнение, а присваивание идет
Попробуй
function __construct($n="",$l="",$p="")
if(empty($n) || empty($l) || empty($p))
Спустя 9 секунд (25.07.2011 - 19:47) Invis1ble написал(а):
romantik2011
скобку пропустил
скобку пропустил
<?php
class A{
function __construct($n,$l,$p){
try{
if($n="" or $l="" or $p="")
throw new Exception("Ошибка, один из
аргументов не передан конструктору!");
echo "Имя: ",$n;
echo "<br>Логин: ",$l;
echo "<br>Пароль: ",$p;
}catch(Exception $e){
echo $e->getMesage();
}
}
}
$obj = new A("5","clown","111");
?>
Спустя 54 секунды (25.07.2011 - 19:48) Winston написал(а):
Цитата (romantik2011 @ 25.07.2011 - 19:41) |
if($n="" or $l="" or $p="") |
Забываем про это вообще и пишем так
if(!isset($n) || !isset($l) || !isset($p))
Спустя 29 секунд (25.07.2011 - 19:48) Invis1ble написал(а):
ADiel
Цитата |
Исключением может быть нотис, но никак не syntax error |
исключение - это исключение
![wink.gif](http://phpforum.ru/html/emoticons/wink.gif)
например Exception
Спустя 38 секунд (25.07.2011 - 19:49) Invis1ble написал(а):
PHPprogrammer
Цитата |
Забываем про это вообще и пишем так |
почему?
if(!isset($n) || !isset($l) || !isset($p)) никогда true не будет )
кстати, так проще - if(!(isset($n, $l, $p))
Спустя 34 минуты, 59 секунд (25.07.2011 - 20:24) romantik2011 написал(а):
Написал так:
Я хочу чтоб сработало исключение при пустой передаче первого аргумента конструктору, а исключение не срабатывает, а
выдаёт такой результат:
и даже значения переданные конструктору не подставляются.
<?php
class A{
function __construct($n,$l,$p){
try{
if($n="" or $l="" or $p="")
throw new Exception("Ошибка, один из
аргументов не передан конструктору!");
echo "Имя: ",$n;
echo "<br>Логин: ",$l;
echo "<br>Пароль: ",$p;
}catch(Exception $e){
echo $e->getMesage();
}
}
}
$obj = new A("","clown","111");
?>
Я хочу чтоб сработало исключение при пустой передаче первого аргумента конструктору, а исключение не срабатывает, а
выдаёт такой результат:
Имя:
Логин:
Пароль:
и даже значения переданные конструктору не подставляются.
Спустя 23 минуты, 28 секунд (25.07.2011 - 20:47) Invis1ble написал(а):
romantik2011
Цитата |
Я хочу чтоб сработало исключение при пустой передаче первого аргумента конструктору, а исключение не срабатывает, а выдаёт такой результат: Имя: Логин: Пароль: и даже значения переданные конструктору не подставляются. |
все правильно. Тебе же написали, что ты вместо сравнения присваиваешь пустые строки.
if($n=="" or $l=="" or $p=="")
Спустя 2 часа, 37 минут, 5 секунд (25.07.2011 - 23:24) romantik2011 написал(а):
Всё, спасибо так, сработало.
Меня интересует один вопрос.
Зачем нужно писать throw, если зроу выдаёт исключения ,а потом всё равно идёт переход от него в catch
и КЭТЧ выбрасывает ещё исключение, зачем это нужно? Почему не достаточно одно блока try...catch?
Зачем нужен всё-таки ЗРОУ, если его же задачу может выполнить КЭТЧ?
<?php
class nameExc extends Exception{
function __construct($msg){
$msg .=" name!";
parent::__construct($msg);
}
}
class loginExc extends Exception{
function __construct($msg){
$msg .=" login!";
parent::__construct($msg);
}
}
class passExc extends Exception{
function __construct($msg){
$msg .=" password!";
parent::__construct($msg);
}
}
class A{
function __construct($n,$l,$p){
try{
if($n=="")
throw new nameExc("Введите");
if($l=="")
throw new loginExc("Введите");
if($p=="")
throw new passExc("Введите");
}catch(nameExc $e){
echo $e->getMessage();
}
catch(loginExc $e){
echo $e->getMessage();
}
catch(passExc $e){
echo $e->getMessage();
}
}
}
$obj = new A("","clown","111");
?>
Меня интересует один вопрос.
Зачем нужно писать throw, если зроу выдаёт исключения ,а потом всё равно идёт переход от него в catch
и КЭТЧ выбрасывает ещё исключение, зачем это нужно? Почему не достаточно одно блока try...catch?
Зачем нужен всё-таки ЗРОУ, если его же задачу может выполнить КЭТЧ?
Спустя 5 минут, 32 секунды (25.07.2011 - 23:30) Invis1ble написал(а):
Цитата |
всё равно идёт переход от него в catch |
разве? без выброса исключения захода в блок catch не будет
Цитата |
КЭТЧ выбрасывает ещё исключение, зачем это нужно |
catch не выбрасывает исключения, оно их отлавливает
также, можно назначить свои обработчики исключений
Спустя 1 минута, 28 секунд (25.07.2011 - 23:31) romantik2011 написал(а):
без выброса исключения захода в блок catch не будет
А зачем заходить в кетч и второй раз выбрасывать исключение, разве одного раза от ЗРОУ которое выбросило сообщение не достаточно, зачем ещё одно сообщение в исключении?
Спустя 8 минут, 55 секунд (25.07.2011 - 23:40) Invis1ble написал(а):
Цитата |
второй раз выбрасывать исключение |
где оно второй раз выбрасывается? выбрасывает исключение опратор throw, в catch ты его ловишь (catch (Exception $e)) и выводишь с помощью метода getMessage(), а можешь и не выводить, а проделать какие-то другие действия
Спустя 28 минут, 6 секунд (26.07.2011 - 00:08) romantik2011 написал(а):
То есть ЗРОУ даёт возможность отправится в кэтч, а без ЗРОУ, трай...кетч не сможет выдавать исключения?
Спустя 8 часов, 14 минут, 6 секунд (26.07.2011 - 08:22) kristall написал(а):
try-catch -- это ООПшная приблуда, старые функции при ошибках исключений не выбрасывают. Нужно ручками проверять код возврата и кидать.
Спустя 3 часа, 15 минут, 24 секунды (26.07.2011 - 11:38) Nikitian написал(а):
kristall
Для старых функций можно самому кидать исключения так:
Для старых функций можно самому кидать исключения так:
function error_handler($errorType, $message, $errfile, $errline){
throw new Exception( strip_tags($message).' in ['.$errfile.'] on '.$errline.' line', $errorType);
}
function fatalErrorShutdownHandler() {
$last_error = error_get_last();
if ($last_error['type'] === E_ERROR) {
// fatal error
error_handler(E_ERROR, $last_error['message'], $last_error['file'], $last_error['line']);
}
}
set_error_handler('error_handler');
register_shutdown_function('fatalErrorShutdownHandler');
Спустя 1 день, 13 часов, 9 минут, 18 секунд (28.07.2011 - 00:47) Krevedko написал(а):
я в исключения вникал вникал, но смысла их так и не понял
![blink.gif](http://phpforum.ru/html/emoticons/blink.gif)