впрсы
.docx
|
СТУДЕНТ: БАБКИН АС ГРУППА: ИС-353 ДАТА СДАЧИ: 22.03.2023 |
ПРАКТИЧЕСКАЯ РАБОТА Ответы на вопросы
Челябинск, 2023
|
31. Что такое абстрактный класс в PHP и для чего он используется? |
Абстрактный класс представляет частичную реализацию для классов-наследников.
|
|
31. Что такое абстрактный класс в PHP и для чего он используется? |
Абстрактный класс представляет частичную реализацию для классов-наследников.
|
|
32. Как объявить абстрактный класс в PHP? |
Через параметр abstract
|
abstract class Messenger { abstract function send($message); // абстрактный метод
|
33. Может ли абстрактный класс содержать реализацию методов в PHP? |
Да может.
|
|
34. Какие методы могут быть объявлены в абстрактном классе PHP? |
Такие же абстрактные
|
|
35. Может ли класс наследовать несколько абстрактных классов в PHP? |
Нет, только один. Либо использовать трейты
|
|
36. Может ли абстрактный класс быть наследником другого абстрактного класса в PHP? |
Да может, так как последний просто расшириться
|
|
37. Какие методы абстрактного класса должны быть обязательно реализованы в его наследниках в PHP? |
Все объявленные
|
|
38. Как использовать абстрактные классы для обеспечения множественного наследования в PHP? |
Использовать трейты
|
|
39. Какие преимущества имеют абстрактные классы в сравнении с интерфейсами в PHP? |
Их можно переопределять
|
|
40. Как использовать абстрактные классы для обеспечения безопасности кода в PHP? |
Создавать их в отдельных файлах и вызывать от туда
|
|
41. Что такое трейт в PHP и для чего он используется? |
Позволяет использовать множественное наследование
|
|
42. Как объявить трейт в PHP? |
Объявить как класс
|
trait ezcReflectionReturnInfo { function getReturnType() { /*1*/ } function getReturnDescription() { /*2*/ } } |
43. Можно ли создавать объекты на основе трейта в PHP? |
Только в классе использующий трейт
|
|
44. Каким образом трейты реализуют множественное наследование в PHP? |
Позволяет повторно использовать набор методов
|
|
45. Можно ли наследовать трейт в PHP? Если да, то как это сделать? |
Как обычный класс, только после определения
|
|
46. Какие ограничения накладываются на использование трейтов в PHP? |
Нельзя создать экземпляр трейта
|
|
47. Как использовать трейты для добавления функциональности к классам в PHP? |
Множественное наследование В трейтах можно определять статические переменные, статические методы и статические свойства.
|
|
48. Можно ли переопределить метод, объявленный в трейте, в классе PHP? |
Да, но при повторном испоьзовании трейта
|
|
49. Какие преимущества имеют трейты в сравнении с наследованием классов в PHP? |
Семантика комбинации трейтов и классов определена таким образом, чтобы снизить уровень сложности, а также избежать типичных проблем, связанных с множественным наследованием и c т.н. mixins.
|
|
50. Как использовать трейты для реализации поведенческих паттернов в PHP? |
Использовать статические методы
|
<?php trait StaticExample { public static function doSomething() { return 'Что-либо делаем'; } } class Example { use StaticExample; } Example::doSomething(); |
51. Как объявить свойство класса в PHP? |
Объявить класс -> и используя параметр доступа объявить свойство
|
class User { public int $id; public ?string $name; } |
52. Можно ли задать значение свойства класса в момент его объявления? |
Да, кроме readonly
|
|
53. Как получить значение свойства класса в PHP? |
Вызвать свойство после объявления обращения к классу
|
|
54. Как изменить значение свойства класса в PHP? |
Перегрузить класс, создать дубликат класса с другим значениме
|
|
55. Как проверить наличие свойства у экземпляра класса в PHP? |
Использовать instanceof
|
|
56. Можно ли объявить свойство класса как приватное или защищенное? |
Только при модификации области видимости
|
|
57. Как объявить статическое свойство класса в PHP? |
Доступны только через ::
|
class Foo { public static function aStaticMethod() { // ... } |
58. Можно ли получить доступ к статическому свойству класса без создания экземпляра класса? |
Доступ к статическим свойствам осуществляется с помощью оператора разрешения области видимости (::), и к ним нельзя получить доступ через оператор объекта (->).
|
|
59. Что такое геттеры и сеттеры свойств класса в PHP и как их использовать? |
Методы позволяющие изменять приватные свойства
|
|
60. Можно ли изменять свойства объекта класса в конструкторе? |
Только с модификатором public
|
|
61. Как объявить метод класса в PHP? |
Как функцию
|
class User { private $age; public function getAge() { return $this->age; }
}
|
62. Можно ли вызвать метод класса без создания экземпляра класса? |
Только если обращаться напрямую к классу через ::
|
|
63. Как передать аргументы в метод класса в PHP? |
Через констрактор или при создании экземпляра класса и установки значений в него.
|
|
64. Какие типы методов класса есть в PHP, и как они отличаются друг от друга? |
Обычные и магические Магические имеют предустановленные функции и начинаются с “__” Обычные описываются самостоятельно
|
|
65. Можно ли объявить метод класса как приватный или защищенный? |
Это невозможно
|
|
66. Что такое статический метод класса в PHP, и как его объявить? |
Метод с использованием только статических данных
|
|
67. Как передать аргументы в статический метод класса в PHP? |
Использованием this
|
$this->const; |
68. Можно ли вызывать статический метод класса от экземпляра класса? |
Только через полное имя класса classname::class
|
|
69. Что такое конструктор и деструктор класса в PHP, и как их использовать? |
Классы, в которых объявлен метод-конструктор, будут вызывать этот метод при каждом создании нового объекта, так что это может оказаться полезным, например, для инициализации какого-либо состояния объекта перед его использованием. Деструктор уничтожает класс или его экземпляр
|
|
70. Можно ли вызвать метод класса, который был объявлен в родительском классе, в дочернем классе в PHP? |
Только если этот класс наследует родительский
|
class Base { public function foo(int $a = 5) { echo "Допустимо\n"; } } class Extend extends Base { function foo(int $a) { parent::foo($a); } } |