Dostęp do metody w klasie abstrakcyjnej

Dostęp do metody w klasie abstrakcyjnej
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam,
Mam taki kod:

Kopiuj

final class EnumClass extends Enum
{
    protected const ERROR_STATUS = 'kod html [[X]] error';
    protected const WARNING_STATUS = 'kod html [[X]]  warning error';
    protected const SUCCESS_STATUS = 'kod html [[X]]  success error';
}

Enum - jest klasą abstrakcyjną

chciałbym pobrać te dane:

Kopiuj
$html = EnumClass::${$messageType}

i otrzymuję komunikat: Uncaught exception: 'Error' with message 'Access to undeclared static property.

W jaki sposób poprawnie to zapisać?

mr_jaro
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Grudziądz/Bydgoszcz
  • Postów: 5300
1
  1. zrobiłeś protected więc jak niby chcesz się do tego dostać z zewnątrz
  2. te dane to consty więc tam się $ nie używa
arczinosek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 86
0

Reflection.

Kopiuj
<?php

final class EnumClass
{
    protected const ERROR_STATUS = 'foo';
    protected const WARNING_STATUS = 'bar';
    protected const SUCCESS_STATUS = 'baz';
}

$reflection = new ReflectionClass(EnumClass::class);

$messageType = 'WARNING_STATUS';

$const = $reflection->getConstant($messageType);

var_dump($const);

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.