Главная /
PHP: ООП и классы /
Был разработан специализированный класс исключений, расширяющий информативность метода getMessage(): <?php class eFooException extends Exception { function getMessage() {return "Произошла ошибка! Подробности: ".$this->message;} } try {throw new eFoo
Был разработан специализированный класс исключений, расширяющий информативность метода getMessage()
:
<?php
class eFooException extends Exception
{
function getMessage()
{return "Произошла ошибка! Подробности: ".$this->message;}
}
try {throw new eFooException("тест");}
catch (Exception $e){echo $e->getMessage();}
?>
Ожидалось, что результатом выполнения сценария станет строка "Произошла ошибка! Подробности: тест", однако в процессе выполнения сценария была сгенерирована фатальная ошибка. Из приведенных высказываний укажите высказывание, раскрывающее причину некорректности работы программы:
вопрос
Правильный ответ:
в производном классе не был определен конструктор
класс
Exception
не содержит поля message
типом аргумента блока
catch
следует указать производный класс, а не родительский
метод
getMessage()
переопределить нельзя, т.к. он определен как final
Сложность вопроса
86
Сложность курса: PHP: ООП и классы
88
Оценить вопрос
Комментарии:
Аноним
Зачёт сдал. Иду пить отмечать сессию интуит
06 июл 2019
Аноним
Экзамен сдан на 4 с минусом. лол
29 фев 2016
Другие ответы на вопросы из темы программирование интуит.
- # Сценарий PHP содержит следующий код: <?php class cFoo { private $private = "закрытый"; public $public = "открытый"; function GetContents(){return $this->private." ".$this->public;} } $foo = new cFoo(); echo $foo->GetContents()." ".$foo->private." ".$foo->public; ?> Укажите результат выполнения сценария:
- # Сценарий PHP содержит следующий код: <?php interface iInterface { public $D; function f (); } class cBar implements iInterface { function f (){return $this->D;} } $foo = new cBar; $foo->D = "данные"; echo $foo->f(); ?> Укажите результат выполнения сценария:
- # Сценарий PHP содержит следующий код: <?php function __autoload($_class) { ___; } $foo = new class_MyClass; ?> Код является частью проекта, в котором договоренности именования установлены следующим образом: имена классов состоят из собственно названия класса и предшествующего ему "class_", и для каждого класса есть файл, содержащие полное определение этого класса, причем имя файла имеет вид "class.c_название_класса.php". Среди приведенных ниже фрагментов укажите вариант кода, при подстановке которого вместо знаков подчеркивания сценарий будет работать корректно в соответствии с вышеуказанными условиями:
- # С целью определить, являются ли параметры некоторой функции опциональными (что указано при ее определении), был разработан код, пример применения которого выглядит следующим образом: <?php define("FUNCTION_NAME","GetSmth");//название тестируемой функции include "func.".FUNCTION_NAME.".php";//файл с ее определением function ReflectFunctionParams($_name) { $refl = new ReflectionFunction($_name); foreach(__1__ as $param_num => $param) { if(__2__) { echo "Параметр №".$param_num." функции "; echo $_name."() является опциональным<br>"; } else { echo "Параметр №".$param_num." функции "; echo $_name."() опциональным не является<br>"; } } } ReflectFunctionParams(FUNCTION_NAME); ?> Среди приведенных ниже пар фрагментов укажите пару, подстановка которой вместо знаков подчеркивания решит поставленную задачу:
- # Сценарий PHP содержит следующий код: <?php class cFoo implements ArrayAccess { protected $Contents = array(); public $OperationCount = 0; public function offsetExists($_offset){ return isset($this->Contents[$_offset]); } public function offsetGet($_offset) { return $this->Contents[$_offset]; } public function offsetSet($_offset,$_value){ $this->OperationCount++; $this->Contents[$_offset] = $_value;} public function offsetUnset($_offset) { $this->OperationCount++; unset($this->Contents[$_offset]); } } $foo = new cFoo; $foo["bar1"] .= "1"; $foo["bar2"] .= "2"; echo $foo->OperationCount; ?> Укажите результат выполнения сценария: