Jun 28 2006
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
-
class Foo {
-
const TAK = 'prawda';
-
const NIE = 'fałsz';
-
const CHGW = 'a kto go tam wie';
-
}
-
-
if($_GET['imie'] == 'Bolek') {
-
// $constant = 'TAK';
-
} elseif(!empty($_GET)) {
-
// $constant = 'NIE';
-
} else {
-
// $constant = 'CHGW';
-
}
-
echo '... wlasnie co ? ..';
-
?>
eval...?
mm, fajne zadanie :) uwielbiam takie :)
A czemu nie przypiszesz do $constant = Foo::TAK ?
Skoro znasz nazwy stalych to znasz tez klase skad pochodza wiec mozesz ja dopisac.
Ha!
$ref = new ReflectionClass( 'Foo' );
print( $ref->getConstant( $constant ) );
$methods = get_class_methods ('Foo');
;)
Oj tfu, miałem na myśli get_class_vars().
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 );
Jest krótsze rozwiązanie. :)
ReflectionProperty...? :)
No nic, ja już odpadłem :)
constant('Foo::'. $constant);
Wiedzialem ze to istnieje! tylko nie moglem znalezc :)
LXXXIII. Miscellaneous Functions -- no swietnie :)