Skip to content

Commit 7e7252b

Browse files
committed
Абстрактный класс. Абстрактный метод. Финальный класс. Финальный метод
1 parent 797051d commit 7e7252b

File tree

4 files changed

+59
-23
lines changed

4 files changed

+59
-23
lines changed

app/App.php

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,36 @@
11
<?php
22
namespace app;
33

4-
require __DIR__ . '/../vendor/liw/core/App.php';
4+
require __DIR__ . '/../vendor/liw/core/Application.php';
55

6-
use liw\core\App as Application;
6+
use liw\core\Application;
77

88
/**
9+
* Это финальный класс.
10+
* От него более нельзя наследоваться.
911
* Class App
1012
* @package app
1113
*/
12-
class App extends Application
14+
final class App extends Application
1315
{
1416
public function __construct()
1517
{
1618
// Обращаемся к конструктору родительского класса
1719
parent::__construct();
1820
echo 'Создался новый экземпляр класса из папки "app/"<br>';
1921
}
22+
23+
/**
24+
* @return string
25+
*/
26+
public function run()
27+
{
28+
return 'Возвращаем строку, как предписано в родительском классе.';
29+
}
30+
31+
/**
32+
* Попытка переопределить финальный метод вызовет ошибку.
33+
* раскомментируйте строку ниже, чтобы убедиться.
34+
*/
35+
//public function getFramework(){}
2036
}

vendor/liw/core/App.php

Lines changed: 0 additions & 18 deletions
This file was deleted.

vendor/liw/core/Application.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
namespace liw\core;
3+
4+
/**
5+
* Это абстрактный класс.
6+
* Нельзя создать объект этого класса.
7+
* Можно лишь наследоваться от него.
8+
* Class Application
9+
*/
10+
abstract class Application
11+
{
12+
public function __construct()
13+
{
14+
echo 'Создался новый экземпляр класса из папки "vendor/liw/core/"<br>';
15+
}
16+
17+
/**
18+
* Это абстрактный метод.
19+
* Он не содержит реализации (нет тела метода в фигурных скобках)
20+
* @return string
21+
*/
22+
abstract public function run();
23+
24+
/**
25+
* Это финальный метод.
26+
* Его нельзя переопределить в дочернем классе.
27+
*/
28+
final public function getFramework()
29+
{
30+
return 'LIW';
31+
}
32+
33+
}

web/index.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,16 @@
44
* На этот файл будут переадресованы все запросы нашего сайта.
55
*/
66

7+
// Включим вывод всех ошибок на экран.
8+
error_reporting(E_ALL); // устанавливает уровень отслеживаемых ошибок интерпретатором php
9+
ini_set('display_errors', 1); // дает команду интерпретатору php выводить все отслеживаемые ошибки в браузере
10+
711
// Подключили файл из папки app
812
require __DIR__ . '/../app/App.php';
913

1014
// создали новый объект класса из папки vendor
1115
$app = new app\App();
1216

13-
// Имеем доступ к родительскому методу.
14-
$app->run(); // выполнит родительский метод run
17+
// Попытка создать экземпляр абстрактного класса вызовет ошибку.
18+
// Раскомментируйте строку ниже, чтоб убедиться.
19+
//$app2 = new liw\core\Application();

0 commit comments

Comments
 (0)