Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
PlayerLoggedOutEvent
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
1 / 1
 from
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3declare(strict_types=1);
4
5namespace AqwSocketClient\Events;
6
7use AqwSocketClient\Interfaces\EventInterface;
8use AqwSocketClient\Interfaces\MessageInterface;
9use AqwSocketClient\Messages\XmlMessage;
10use Override;
11
12/**
13 * Represents an event triggered after the server confirmed that the player's
14 * session was successfully terminated.
15 */
16final class PlayerLoggedOutEvent implements EventInterface
17{
18    /**
19     * @return ?PlayerLoggedOutEvent
20     */
21    #[Override]
22    public static function from(MessageInterface $message): ?EventInterface
23    {
24        if ($message instanceof XmlMessage) {
25            $action = $message->dom->getElementsByTagName('body')->item(0)?->getAttribute('action');
26            if ($action === 'logout') {
27                return new self();
28            }
29        }
30
31        return null;
32    }
33}