Jak się dobrać do stałej klasy

Filed under PHP by Łukasz Dywicki

Mały konkursik - jak pobrać stałą z klasy..? Kod jest, jedyny problem to to, że nazwa stałej może się zmienić...

PHP:
  1. <?php
  2. class Foo {
  3. const TAK = 'prawda';
  4. const NIE = 'fałsz';
  5. const CHGW = 'a kto go tam wie';
  6. }
  7.  
  8. if($_GET['imie'] == 'Bolek') {
  9. // $constant = 'TAK';
  10. } elseif(!empty($_GET)) {
  11. // $constant = 'NIE';
  12. } else {
  13. // $constant = 'CHGW';
  14. }
  15. echo '... wlasnie co ? ..';
  16. ?>

10 responses so far

10 Responses to “Jak się dobrać do stałej klasy”

  1. Fipaj says:

    eval...?

    mm, fajne zadanie :) uwielbiam takie :)

  2. dr_bonzo says:

    A czemu nie przypiszesz do $constant = Foo::TAK ?
    Skoro znasz nazwy stalych to znasz tez klase skad pochodza wiec mozesz ja dopisac.

  3. dr_bonzo says:

    Ha!

    $ref = new ReflectionClass( 'Foo' );
    print( $ref->getConstant( $constant ) );

  4. Fipaj says:

    $methods = get_class_methods ('Foo');

    ;)

  5. Fipaj says:

    Oj tfu, miałem na myśli get_class_vars().

  6. dr_bonzo says:

    Fipaj -- nie zadziala --> http://phpfi.com/126344
    Rezulatat:
    a kto go tam wie
    Array ( [wtf] => What the fuck is WTF? [staticWTF] => What the fuck is staticWTF? ) No i co? Nie dziala

    zadziala tylko dla zmiennych instancji i klasy, nie dla stalych.

    A rozwiazaniem jest:
    $ref = new ReflectionClass( $className );
    return $ref->getConstant( $constantName );

  7. Jest krótsze rozwiązanie. :)

  8. Fipaj says:

    ReflectionProperty...? :)

    No nic, ja już odpadłem :)

  9. constant('Foo::'. $constant);

  10. dr_bonzo says:

    Wiedzialem ze to istnieje! tylko nie moglem znalezc :)
    LXXXIII. Miscellaneous Functions -- no swietnie :)

Leave a Reply