Главная /
PHP: ООП и классы /
Для расширения функциональности класса cCalculation был разработан класс cCalculationLogged. Конструктор нового класса не изменяет способ генерации значений полей родителя при создании объекта, поэтому было принято решение повторно использовать старый код
Для расширения функциональности класса cCalculation
был разработан класс cCalculationLogged
. Конструктор нового класса не изменяет способ генерации значений полей родителя при создании объекта, поэтому было принято решение повторно использовать старый код. Содержимое файла class.Calculation.php:
<?php
class cCalculation
{
/*базовая функциональность*/
public $Fed = TRUE; protected $DataPath = ""; private $CalcId;
function __construct($_DataPath,$_CalcId)
{
if($_DataPath=="")
{
$this->Fed = FALSE;
}
else
$this->DataPath = $_DataPath;
$this->CalcId = $_CalcId;
}
}
class cCalculationLogged extends cCalculation
{
/*расширенная функциональность*/
protected $LogPath;
function __construct($_DataPath,$_CalcId,$_LogPath)
{
___;
$this->LogPath = $_LogPath;
}
}
?>
Среди приведенных ниже фрагментов укажите все варианты кода, подстановка которого вместо знаков подчеркивания решит поставленную задачу:
вопрос
Правильный ответ:
$this->__construct($_DataPath,$_CalcId)
$parent->__construct($_DataPath,$_CalcId)
parent::__construct($_DataPath,$_CalcId)
self:: __construct($_DataPath,$_CalcId)
решение поставленной задачи невозможно, так как поле с модификатором доступа
private
в родительском классе недоступно из производного класса Сложность вопроса
50
Сложность курса: PHP: ООП и классы
88
Оценить вопрос
Комментарии:
Аноним
Зачёт сдан. Лечу в бар отмечать сессию интуит
29 мар 2020
Другие ответы на вопросы из темы программирование интуит.
- # Сценарий PHP содержит следующий код: <?php class cFoo { function ~cFoo() {echo "был вызван деструктор";} function __construct() {echo "|был вызван конструктор|";} } $bar = new cFoo(); ?> Укажите результат выполнения сценария:
- # Сценарий PHP содержит следующий код: <?php class cFoo { function cFoo() {echo "была вызвана функция cFoo()";} function __construct() {echo "была вызвана функция __construct()";} } $bar = new cFoo(); ?> Укажите результат выполнения сценария:
- # С целью определить, являются ли параметры некоторой функции массивами (что указано при ее определении), был разработан код, пример применения которого выглядит следующим образом: <?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); ?> Среди приведенных ниже пар фрагментов укажите пару, подстановка которой вместо знаков подчеркивания решит поставленную задачу:
- # Код, расположенный в try-блоке перед throw:
- # Был разработан специализированный класс исключений, расширяющий информативность метода getCode(): <?php class eNewException extends Exception { function getCode() {return "Exception code: ".$this->code;} } try {throw new eNewException("test");} catch (Exception $e){echo $e->getCode();} ?> Ожидалось, что результатом выполнения сценария станет строка "Exception code: 0", однако в процессе выполнения сценария была сгенерирована фатальная ошибка. Из приведенных высказываний укажите высказывание, раскрывающее причину некорректности работы программы: