powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Делать все методы статическими или класс абстрактным?
25 сообщений из 104, страница 3 из 5
Делать все методы статическими или класс абстрактным?
    #38051120
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2Еще... Если возникнет ситуация, что в системе уже будет класс Album или Image, как решить эту проблему? Такой вариант покатит?

action.php
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
namespace album;

...

$album = new Album;
$album->init($_POST);

class Album {

    ...

    include_once('lib/gd.php'); //или lib/magickwand.php, если она есть на хостинге и работает лучше.
    $preview_name = \image\Image::makeavatar();

    ...
    
}


lib/dg.php и lib/magickwand.php
Код: php
1.
2.
3.
4.
5.
namespace image;

class Image {

}



лучше придумай своим классам какой-нить префикс нормальный (например Sb - взято с твоего ника), да и пиши классы SbAlbum, SbImage. Я пространства имён никогда в php не пользовал... Это походу менее удобно.
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38051199
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот не знаю, не знаю. В крутых движках используется. Да и спецы говорят, что с ними лучше, только примеров не приводят. В общем, нужно получить консультацию у человека, который с ними на ты. В одном движке, например, подключение экземпляра класса описывается так: $db = \lib\db();

А так же стоит ли использовать ErrorException или слишком накручено будет?
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38053908
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос по исключениям. Сейчас обрабатываю их так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
...
if ($file['error']) {			
	$this->errors['file'] = $file['error']; //Загружен с ошибкой...
	return false;				
}
if (!array_key_exists($file['type'], $this->allowed_type)){		
	$this->errors['file'] = 10; //Файл неразрешенного типа
	return false;	
} 	

$new_file_name = uniqid() . '.' . $this->allowed_type[$file['type']];

if (!move_uploaded_file($file['tmp_name'], $this->upload_dir . $new_file_name)) {
	$this->errors['file'] = 9; //Не удалось переместить из временной директории
	return false;
}

return $new_file_name;	
...



Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
...
function error() {

	$error_report = '';
	switch ($this->errors['file']) {		
		case 1: //Размер принятого файла превысил максимально допустимый размер, который задан директивой upload_max_filesize конфигурационного файла php.ini
		case 2: //Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме.
		case 5: //Размер загружаемого файла превысил все мыслимые значения.
			$error_report = 'Файл ' . $_FILES['name'] . ' слишком большой. Размер загружаемого файла не должен превышать ' . round(MAX_FILE_SIZE/1048576, 2) . ' Мб';
			break;
		case 3: //Загружаемый файл был получен только частично.
		case 4: //Файл не был загружен.
		case 6: //Отсутствует временная папка. Добавлено в PHP 4.3.10 и PHP 5.0.3.
		case 7: //Не удалось записать файл на диск. Добавлено в PHP 5.1.0.
		case 8: //PHP-расширение остановило загрузку файла.
		case 9: //Не удалось переместить из временной директории
			$error_report = 'Загрузка не удалась';
			break;
		case 10: $error_report = 'Файл неразрешенного типа'; //Файл неразрешенного типа
			break;
		case 11: $error_report = 'Обновите браузер'; //Старые браузеры пока не поддерживаются
	}

	die($error_report); //Или дальнейшая обработка
}



В книжках рекомендуют использовать Exception. И с одной стороны к ним подходил и с другой, никак не догоняю куда их прицепить в моем случае. Т.е. прицепить не трудно, но сложность понимания и размер кода увеличиваются в полтора раза. Да и, вообще, не видел рабочих примеров с подобными конструкциями. Обычно всегда переменная errors заводится, как у меня. А вы использовали бы Exception в подобном случае и как?
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38053934
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
...
if ($file['error']) {			
switch($file['error']) {
		case 1: //Размер принятого файла превысил максимально допустимый размер, который задан директивой upload_max_filesize конфигурационного файла php.ini
		case 2: //Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме.
		case 5: //Размер загружаемого файла превысил все мыслимые значения.
			throw new Exception('Файл ' . $_FILES['name'] . ' слишком большой. Размер загружаемого файла не должен превышать ' . round(MAX_FILE_SIZE/1048576, 2) . ' Мб');
		case 3: throw new Exception('Загружаемый файл был получен только частично.');
		case 4: throw new Exception('Файл не был загружен.');
		case 6: throw new Exception('Отсутствует временная папка. Добавлено в PHP 4.3.10 и PHP 5.0.3.');
		case 7: throw new Exception('Не удалось записать файл на диск. Добавлено в PHP 5.1.0.');
		case 8: throw new Exception('PHP-расширение остановило загрузку файла.');
}
}
if (!array_key_exists($file['type'], $this->allowed_type)){		
	throw new Exception('Файл неразрешенного типа', 10);
} 	

$new_file_name = uniqid() . '.' . $this->allowed_type[$file['type']];

if (!move_uploaded_file($file['tmp_name'], $this->upload_dir . $new_file_name)) {
	throw new Exception('Загрузка не удалась', 9);
}

return $new_file_name;	
...


Код: php
1.
2.
3.
4.
5.
6.
...
try {
// ваш код
} catch(Exception $e) {
  print $e->getMessage();die();
}


ps. die использовать плохой тон. Если будите Unit тесты писать он вам все тесты поломает
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38054051
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. предлагаете вынести swith в место проверки... Так не получится, т.к., к примеру, case 5: берет свои значения не от $file['error'], а из другого места (проверка data-lenght). Но, в общем-то можно передавать так же номер, и перебор делать уже в catch. Код и вправду выглядит здорово. Спасибо за ответ! )

P.S. die() там временно как заглушка. Код будет отправляться как ответ серверу
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38054356
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторберет свои значения не от $file['error'], а из другого места (проверка data-lenght)
вот тут какраз и появлятсья прелесть exception. Они позваляют "прыгать не на 1 уровень вверх как делает это return false; а сразу на несколько. Чтов ам мешает прямо там при проверке data-length выкидывать exception ? Какраз для этого они и нужны.
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38059116
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там и выкидываю. А потом собираю все коды в catch и прогоняю по списку, группируя как надо...
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38059416
прочёл топ (посмотрел сорцы) - бегло...
совет - почитай про основы ООП - любую книгу! - особое внимание удели главам о связях и зависимостях!

class Album
там вообще не нужен никакой инит - используй конструктор!
выдели логику по работе с бд в отдельный класс!
не привязывайся к пост\гет - уже советовали!
вообще не понял - почему "ALBUM"?!
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38061031
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за совет. Книжку на днях прочел, уже все переделал в традициях ООП, как разберусь со всеми проблемами, так выложу. К примеру с тем же конструктором возникли вопросы: /topic/987490&pg=-1 Думаю, что должно быть готовое решение такой задачи.

Что касается этой ветки, то возникла сложность с исключениями:
Код: php
\r\npublic function init($param) {\r\n    ...\r\n    if ($row[\'quantity\'] >= $this->maxNumberOfFiles) {\r\n    try {\r\n        throw new Exception(\'Превышено количество загружаемых элементов\', 13);\r\n    } catch(Exception $e) {\r\n\t??? //Нужно и это исключение обрабатывать в нижнем блоке catch\r\n    }\r\n    ...\r\n}\r\n\r\npublic function savefile($maxSize, $allowedType) {\r\n    try {\r\n        if(!empty($_FILES)) {\r\n            ...\r\n            if ($file[\'error\']) {\t\t\t\r\n                throw new Exception(\'Загружен с ошибкой...\', $file[\'error\']);\r\n            }\t\t\t\r\n            if ($file[\'size\'] > $maxSize){\t\r\n                throw new Exception(\'Превышен допустимый размер файла\', 12);\r\n            }\r\n    } catch(Exception $e) {\r\n        switch ($e->getCode()) {\t\t\r\n            case 1: //Размер принятого файла превысил максимально допустимый размер, который задан директивой upload_max_filesize конфигурационного файла php.ini\r\n            case 2: //Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме.\r\n            case 5: //Размер загружаемого файла превысил все мыслимые значения.\r\n            ...\r\n        }\r\n    }\r\n    return false;\r\n}\r\n
\r\n
Т.е., чтобы сделать все с одним блоком catch, придется брать в try, вообще, весь код. А если в этом коде еще и другие блоки try будут, например, относящиеся к БД, то произойдет их пересечение и будет все очень запутанно.

На счет того, чтобы без init() делать... Ну не в конструктор же логику выносить. Просто init() будет запускаться из конструтора. Или это идет вразрез с ООП?

Обертку над БД, наверное, заменю комментарием, все равно в каждом движке она своя... Чтобы не усложнять модуль.
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38061553
авторНа счет того, чтобы без init() делать... Ну не в конструктор же логику выносить. Просто init() будет запускаться из конструтора. Или это идет вразрез с ООП?
вразрез пойдёт тогда, когда тебе или др. программисту будет неудобно использовать твоё творение! Остальное ИМХО - надумано ;)
обычно, в конструкторе инициируют объект, а всё остальное делают через методы класса
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
class Image {

        private $_params = array(
            'opt1' => 'val0',
            'opt2' => array('o1' => 0, 'o2' => 0, 'o3' => 0),
            'opt3' => 'val0'
        );

	public function __constuct($params) {
		$this->_params = array_replace_recursive($this->_params, $params);
	}
        
        public function save() {blah...blah...}
        public function resize($x, $y) {blah...blah...}
        public function watermark($watString = "blah...blah...") {blah...blah...}
        
        //проверять можно в конструкторе - а можно оставить отдельный метод!
        public function validate($validateParams = array('type' => array('image' => ('jpg', 'bmp', 'gif')))) {blah...blah...}

        and etc.
}



авторЧтобы не усложнять модуль.
Module !== Class
когда определишься, что ты создаёшь, тогда придёт осознание всего остального!

Успехов!
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38061565
ещё совет!
не распихивай эти throw по всему коду - они используются немного ;) в других целях...
к примеру, заведи переменную класса - $error = FALSE - и записывай код ошибки в неё!
после проверяй, если $error не пустая, то была ошибка!
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38061592
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так...ещё совет!
не распихивай эти throw по всему коду - они используются немного ;) в других целях...
к примеру, заведи переменную класса - $error = FALSE - и записывай код ошибки в неё!
после проверяй, если $error не пустая, то была ошибка!

а сами ошибки вынеси в отдельный участок кода (и создай статические константы класса)... где для каждой константы дай адекватное название типа ELOAD или LOADERROR (по аналогии SAVEERROR, SIZEERROR и т.д.) и соотнеси его с кодом ошибки, а по коду подтягивай текст ошибки (какой-нить массив создай...). Просто я думаю в нынешнем виде сменить язык модуля или просто изменить текст ошибки будет очень сложно... а это уже не идеальный модуль. Сами константы позволят легче ошибками управлять из вне (если кому вдруг понадобится), ведь запомнить имя констант легче чем номера ошибок....
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38061619
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изначально у меня и было все без throw и складывалось в массив ошибок. Только вчера его убрал. Вообще, с ошибками надо определиться. Обязательно должны быть исключения/ошибки для пользователя. Это:
- файл слишком большой (не должен превышать Х МБ)
- файл неверного типа (в т.ч. если не удалось обработать)
- превышено кол-во загружаемых файлов
- закончилось отведенное место
- браузер не поддерживает загрузку
- ошибка сервера (попробуйте загрузить файл позже)

Внутренних ошибок загрузки будет больше, но они несут смысл только при отладке, поэтому по умолчанию отдельно не выводятся. Соответственно, константы для них тоже не стоит заводить.

Далее о константах. К примеру, нужно вывести: «файл не должен превышать Х МБ», где Х переменная. Это уже в константу не запихнуть. Опять же не знаю как лучше, формировать текст ошибки, на сервере или отсылать код + дополнительные значения (те же Х МБ) JS-скрипту и там уже обрамлять в текст.

P.S. В каких же тогда целях используется throw?
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38061621
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так...ещё совет!
не распихивай эти throw по всему коду - они используются немного ;) в других целях...
к примеру, заведи переменную класса - $error = FALSE - и записывай код ошибки в неё!
после проверяй, если $error не пустая, то была ошибка!
Ага и потом програмист возмет этот модуль подключит и будет гадать, как же мне понять почему не сработал функция? То ли в $error смотреть, то ли в $error_code, То ли куда. Зачем придумывать что то, если есть Exception который умею тработать и с $message и с $code ?
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38061658
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО, просто исходя из определения слова «исключение» (а ведь называют их именно исключениями, а не ошибками и проч.), они нужны для обработки любых событий, не входящих в основную ветку программы. Т.е. это ошибки любого уровня критичности, пользовательские промахи (напр., неверный логин и пароль), внеплановые внутренние проверки и проч. То, что они не до конца в ПХП реализованы, другой вопрос. Сейчас плохо, потом хорошо сделают, если уж ООП в этом направлении развивается...

В связи с исключениями появилось два вопроса:

1. throw без блока try не работает (т.е. вызывает ошибку), поэтому если захочу использовать функцию dbconnect в другом месте
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function dbconnect() {
    ...
    throw new Exception('...');
    ...
}

try {
    dbconnect(); //работает
} catch(Exception $e) {
    ...
}

dbconnect(); //ошибка

то она без внешнего блока try просто не будет работать

2. Немного напрягает то, что блок catch нельзя отделить от try. Либо просто не умею их готовить. К примеру
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
try {
    dbconnect();
} catch(Exception $e) {
   ...
}

try {
    filesave();
} catch(Exception $e) {
    ...
}

try {
    userlogin();
} catch(Exception $e) {
    ...
}


Основной код слишком загроможден проверками. Попробуем избавиться:
а) можно вынести исключения в общий блок. Но тогда наступит момент, когда этим блоком придется обертывать всю программу
Код: php
1.
2.
3.
4.
5.
6.
7.
try {
    dbconnect();
    filesave();
    userlogin();
} catch(Exception $e) {
    ...
}


б) Тоже самое, только более ООПшно и в 20 раз сложнее
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
try {
    dbconnect();
} catch(Exception $e) {
   throw new dbException('...');
}

try {
    filesave();
} catch(Exception $e) {
    throw new fileException('...');
}

try {
    userlogin();
} catch(Exception $e) {
    throw new userException('...');
}

class dbException extend Exeption ...


Как поступить лучше?
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38061704
SergSW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2,


Shitbox2hrow без блока try не работает (т.е. вызывает ошибку), поэтому если захочу использовать функцию dbconnect в другом месте
Работает, пробрасывает ошибку выше если она Вами не перехватывается то и будет показана пользователю - всё логично.

Shitbox2можно вынести исключения в общий блок. Но тогда наступит момент, когда этим блоком придется обертывать всю программу
Зачем обёртывать всё программу??? Не понятно. Если Вы будуту использовать их сознательна для сигнализации ошибок, то сам бог велел Вам самому их ловить.
Если Вы хотите пользователю как-то по своему показывать об ошибке - то ставте свой глобальный обработчик прерываний.

Shitbox2Как поступить лучше?
Последняя лесенка - ужасна в практическом плане.
Лучше в этом случае что бы исключения нужного типа генерили сами методы. И тогда Вам либо в общём try их ловить "если надо", если надо чтоб выше то вообще try catch Не нужен.
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38061864
авторАга и потом програмист возмет этот модуль подключит и будет гадать, как же мне понять почему не сработал функция? То ли в $error смотреть, то ли в $error_code, То ли куда.
хм... вообще-то throw - это как-бэ своё исключение... например
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
class Image {
         public function __constuct($params) {
		$this->_params = array_replace_recursive($this->_params, $params);
                if($this->_params['someparam'] !== $this->_someValue ) {
                           throw new Exception('blah...blah...');
                }

	}
}

try {
    $img = new Image($params);
} catch(Exception $e) {
    ...
}


проверяется\обрабатывается оно как-бэ не в самом классе, а за его пределами, по усмотрению тех программистов, которые будут использовать класс!
а если программер будет обрабатывать\пробрасывать все возможные исключения в коде класса, то и класс он никогда не напишет... (что, собственно, мы и наблюдаем у ТС ;)
авторЗачем придумывать что то, если есть Exception который умею тработать и с $message и с $code ?
вызов exc довольно накладная процедура и, по пустякам (как правило!) его не вызывают!
авторИМХО, просто исходя из определения слова «исключение» (а ведь называют их именно исключениями, а не ошибками и проч.), они нужны для обработки любых событий, не входящих в основную ветку программы. Т.е. это ошибки любого уровня критичности, пользовательские промахи (напр., неверный логин и пароль), внеплановые внутренние проверки и проч. То, что они не до конца в ПХП реализованы, другой вопрос. Сейчас плохо, потом хорошо сделают, если уж ООП в этом направлении развивается...
ты ошибаешься! то, что ты пытаешься подвести под опр. исключение, на самом деле и есть банальнейший error, который не нуждается в отдельной обработке...
зы: вполне себе нормально они проработаны в PHP
Код: php
1.
2.
3.
4.
5.
try {
    dbconnect();
} catch(Exception $e) {
   throw new dbException('...');
}


ты не понимаешь самого простого - любой коннект и без тебя (прекрасно) выкинет ошибку при сбое...
как эту ошибку будет обрабатывать программист, использующий твой класс, тебя вообще не должно волновать!!!
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38061888
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38062003
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приметил конструкцию
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class Image {
    ...
    throw new Exception('blah...blah...');
    ...
}

try {
    $img = new Image($params);
} catch(Exception $e) {
    ...
}


Она мне кажется верной и очень ООПшной, хотя в моем случае это и означает обернуть в try всю программу. И как раз в топике выше была поднята тема, которую можно вынести в фундаментальный вопрос: кто должен обрабатывать исключения, тот кто написал класс или тот кто этот класс использует? Что на этот счет говорят практики программирования?

В случае с классом Album ловля исключения за пределами класса вполне оправдана, т.к. в коде он вызывается только в одном месте, а как быть с классом Image и подобными? Оборачивать каждый вызов в try-catch?

Идеальный вариант, когда в случае неудачи функция/класс молча возвращает false, но в случае необходимости мы могли бы узнать конкретно чем вызвана неудача. Т.е. функцией можно было бы пользоваться так:
Код: php
1.
if (!func()) ...;


или так:
Код: php
1.
2.
3.
4.
5.
try {
    func()
} catch (Exception $e) {
    //детализация. $e - код ошибки...
}


Это к примеру. В современно ПХП такие механизмы существуют?
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38062075
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторкто должен обрабатывать исключения, тот кто написал класс или тот кто этот класс использует
тот кому это исключение нужно
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38064476
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное, вопрос не к ПХПшникам, а к тем, кто знаком с более ООПшными языками. В какую сторону развиваются исключения? Можно ли предположить, что в будущем механизм try ... catch будет использоваться для любых исключительных ситуаций и валидаций? Например, появится оператор продолжения скрипта (если ошибка не критична, но ее нужно зарегистрировать) или оператор повторения блока try, если ошибка исправлена?
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
try {
    ...
    throw new Exception('Исключение', 1);
    ...
} catch(Exception $e) {
    ...
    continue; //или repeat, чтобы повторить блок try
}


Или этот механизм останется только для узкоспециализированных ситуаций?
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38064483
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНапример, появится оператор продолжения скрипта

Код: php
1.
2.
3.
4.
5.
try {
    ...
    throw new Exception('Исключение', 1);
    ...
} catch(NotCriticalException $e) {



авторператор повторения блока try, если ошибка исправлена

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
$result = false;
while($result){
$result = true;
try {

    ...
    throw new Exception('Исключение', 1);
    ...
} catch(NotCriticalException $e) {
$result = false;
}}
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38064800
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Круто! Но не могу найти ничего о NotCriticalException (и код не работает). Он в PHP есть?
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38064824
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет. это ты сам делаешь исключение.
class NotCriticalException extends Exception
...
Рейтинг: 0 / 0
Делать все методы статическими или класс абстрактным?
    #38064833
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эм... Не понял. А чем этот класс должен отличаться? Что в нем прописать, чтобы после обработки возвращалось управление к месту выброса?
...
Рейтинг: 0 / 0
25 сообщений из 104, страница 3 из 5
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Делать все методы статическими или класс абстрактным?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]