Главная /
PHP: ООП и классы /
Для расширения функциональности класса cTemplate был разработан класс cTemplateExtended. Конструктор нового класса не изменяет способ генерации значений полей родителя при создании объекта, поэтому было принято решение повторно использовать старый код. Со
Для расширения функциональности класса cTemplate
был разработан класс cTemplateExtended
. Конструктор нового класса не изменяет способ генерации значений полей родителя при создании объекта, поэтому было принято решение повторно использовать старый код. Содержимое файла class.Template.php:
<?php
<?php
class cTemplate
{
/*базовая функциональность*/
public $LastWarning; protected $TType; private $XMLStr;
function __construct($_TType,$_XMLStr)
{
if($_TType=="")
{
$this->TType = "simple";
$this->LastWarning = "Invalid type, type set to 'simple'";
}
else
$this->TType = $_TType;
$this->XMLStr = $_XMLStr;
}
}
class cTemplateExtended extends cTemplate
{
/*расширенная функциональность*/
protected $AdditionalParams;
function __construct($_TType,$_XMLStr,$_AdditionalParams)
{
___;
$this->AdditionalParams = $_AdditionalParams;
}
}
?>
Среди приведенных ниже фрагментов укажите все варианты кода, подстановка которого вместо знаков подчеркивания решит поставленную задачу:
вопрос
Правильный ответ:
$this->__construct($_TType,$_XMLStr)
$parent->__construct($_TType,$_XMLStr)
parent::__construct($_TType,$_XMLStr)
self:: __construct($_TType,$_XMLStr)
решение поставленной задачи невозможно, так как поле с модификатором доступа
private
в родительском классе недоступно из производного класса Сложность вопроса
80
Сложность курса: PHP: ООП и классы
88
Оценить вопрос
Комментарии:
Аноним
Экзамен сдал на 5. спс
02 дек 2018
Аноним
Если бы не опубликованные подсказки - я бы не смог решить c этими тестами intuit.
30 сен 2018
Аноним
Зачёт сдан. Бегу в бар отмечать 5 в зачётке по тесту
22 дек 2016
Другие ответы на вопросы из темы программирование интуит.
- # Сценарий PHP содержит следующий код: <?php class cFoo { function ~cFoo() {echo "был вызван деструктор";} function cFoo() {echo "|был вызван конструктор|";} } $bar = new cFoo(); ?> Укажите результат выполнения сценария:
- # Если класс foo является потомком класса bar, а переменная $a имеет класс foo, то выражение $a instanceof "foo" будет равно:
- # Сценарий PHP содержит следующий код: <?php abstract class cBase { private $Data; function __construct($_Data){$this->Data = $_Data;} abstract function ShowData(); } class cDerivative1 extends cBase { function ShowData(){return $this->Data."&";} } class cDerivative2 extends cBase { function ShowData(){return $this->Data."U";} } $foo = new cDerivative1(6); $bar = new cDerivative2(3); echo $foo->ShowData().$bar->ShowData().$foo->ShowData().$foo->ShowData(); ?> Укажите результат выполнения сценария:
- # Сценарий PHP содержит следующий код: <?php class MyClass { private $Values = array("p1" => 17, "p2" => 14); function __construct ($_p1, $_p2) { $this->p1 = $_p1; $this->p2 = $_p2; } function __set($_name, $_value) {$this->Values[$_name] = $_value;} function __get($_name) {return $this->Values[$_name];} } $c = new MyClass(1,2); $c->p1 -= 10; $c->p2++; echo $c->p1," ",$c->p2; ?> Укажите результат выполнения сценария:
- # Сценарий 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; ?> Укажите результат выполнения сценария: