-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathque3.php
More file actions
39 lines (33 loc) · 1.89 KB
/
Copy pathque3.php
File metadata and controls
39 lines (33 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
require_once 'Authenticator.php';
require_once 'Service.php';
echo "<div style='font-family: sans-serif; background: #fafafa; padding: 20px; border-radius: 8px; max-width: 700px; margin: 20px auto; box-shadow: 0 4px 6px rgba(0,0,0,0.05);'>";
echo "<h2 style='color: #2c3e50; border-bottom: 2px solid #27ae60; padding-bottom: 10px;'>Тестування патерну Singleton (Одинак)</h2>";
$auth1 = Authenticator::getInstance();
echo $auth1->logIn("Олексій");
$auth2 = Authenticator::getInstance();
echo $auth2->logIn("Марія");
$paymentModule = new PaymentService();
$paymentModule->makePayment("Влад", 450.00);
echo "<br><hr style='border: 0; border-top: 1px solid #eee;'><br>";
echo "<h3>Перевірка ідентичності об'єктів:</h3>";
if ($auth1 === $auth2) {
echo "<span style='color: #27ae60; font-weight: bold;'>✔ Збіг! \$auth1 та \$auth2 посилаються на один і той самий екземпляр класу.</span><br>";
} else {
echo "<span style='color: #e74c3c; font-weight: bold;'>❌ Помилка! Створено різні екземпляри.</span><br>";
}
echo "<p>" . $auth1->getActiveSessions() . "</p>";
echo "<br><hr style='border: 0; border-top: 1px solid #eee;'><br>";
echo "<h3>Спроба порушити правила Одинака:</h3>";
try {
echo "❌ <code>new Authenticator()</code> — Неможливо викликати через private конструктор (захищено на рівні PHP).<br>";
} catch (Error $e) {
echo "Захист конструктора спрацював: " . $e->getMessage() . "<br>";
}
try {
$serialized = serialize($auth1);
unserialize($serialized);
} catch (Exception $e) {
echo "<span style='color: #e67e22;'>✔ Спрацював захист від десеріалізації: " . $e->getMessage() . "</span><br>";
}
echo "</div>";