Versio

static property opvragen

Overzicht Reageren

Terence Hersbach

Terence Hersbach

12/09/2008 23:56:00
Quote Anchor link
Goeienacht allemaal,

ik heb de volgende situatie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
class Foo {
    $test = 'bar';
}


$class = 'Foo';
$prop = 'test';
?>


Hoe kan ik statisch de waarde van Foo::$test opvragen met $class en $prop?

enige oplossing die ik me kan bedenken is ev(i/a)l, of een methode aanmaken die de waarde teruggeeft (wat ik liever niet heb)..

ps. Ik wil perse niet eerst een object aanmaken, zoals volgende code doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$obj
= new $class();
echo $obj->test; // bar
?>


edit: en nee, ik wil ook niet wachten tot php 5.3 :)
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
 
PHP hulp

PHP hulp

25/05/2012 18:38:26
Gesponsorde koppelingen:
 
Jelmer rrrr

Jelmer rrrr

13/09/2008 00:04:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
class Foo {
    static public $test = 'bar';
}


$class = 'Foo';
$prop = 'test';
?>

Is uit te lezen met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$classReflection
= new ReflectionClass($class);
echo $classReflection->getStaticPropertyValue($prop);
?>

Helaas heeft PHP 5.2 nog geen mogelijkheid waarbij je variabelen voor :: kan zetten volgens mij. In PHP 5.3 werkt dit weer wel. Of het in 5.2 werkt moet je zelf even testen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $class::${$prop};
?>
 
Terence Hersbach

Terence Hersbach

13/09/2008 00:08:00
Quote Anchor link
laatste levert op:
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting ',' or ';'

dat van die refelctionclass wist ik niet, maar dan moet ik wel weer eerst een object aanmaken :(

edit: toch maar even gedaan, zit ook een functie in om te checken of de property wel bestaat. is ook altijd handig natuurlijk!
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
 



Overzicht Reageren

Get Adobe Flash player