Variable Aufrufe statischer Methoden
Ich war gerade dabei, ein wunderschoenes Konzept zu implementieren, das
u.a. darauf aufbaut, variable statische Methoden variabler Klassen
aufzurufen, also in etwa so:
$result = $class::$method;
Ging dummerweise nicht. Nach einigem Herumprobieren verriet mir dann das
Manual: "as of PHP 5.3.0, it's possible to reference the class using a
variable". Fein, allerdings habe ich hier nur PHP 5.2, das klappt also
nicht.
Faellt jemandem ein praktikabler Workaround ein? (Alle denkbaren Werte
von $class in einem switch() abzufragen, kommt leider nicht in Frage)
Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Geht nicht!? Gibt's nicht! Stefan.
(Sloganizer)
Re: Variable Aufrufe statischer Methoden
..oO(Stefan Froehlich)
>Ich war gerade dabei, ein wunderschoenes Konzept zu implementieren, das
>u.a. darauf aufbaut, variable statische Methoden variabler Klassen
>aufzurufen, also in etwa so:
>
>$result = $class::$method;
>
>Ging dummerweise nicht. Nach einigem Herumprobieren verriet mir dann das
>Manual: "as of PHP 5.3.0, it's possible to reference the class using a
>variable". Fein, allerdings habe ich hier nur PHP 5.2, das klappt also
>nicht.
>
>Faellt jemandem ein praktikabler Workaround ein? (Alle denkbaren Werte
>von $class in einem switch() abzufragen, kommt leider nicht in Frage)
Was sagt denn call_user_func()?
Micha
Re: Variable Aufrufe statischer Methoden
On Thu, 29 Nov 2007 22:58:29 +0100 Michael Fesser wrote:
> >$result = $class::$method;
> >Faellt jemandem ein praktikabler Workaround ein?
> Was sagt denn call_user_func()?
Ah, das gute liegt manchmal so nah. Ich war zu sehr auf Objekte
fixiert, danke.
Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Die erhabene Idee, oder warum Stefan so edel rattert!
(Sloganizer)
Re: Variable Aufrufe statischer Methoden
Stefan Froehlich wrote:
>>> $result = $class::$method;
>>> Faellt jemandem ein praktikabler Workaround ein?
>
>> Was sagt denn call_user_func()?
>
> Ah, das gute liegt manchmal so nah. Ich war zu sehr auf Objekte
> fixiert, danke.
Dann hättest Du aber über Reflection stolpern müßen! :-)
Den würde ich hier sowieso den Vorzug geben. Es ist schneller.
Aber halt jeder nach seinen Vorlieben...
MfG, Ulf
--
_,
_(_p> Ulf [Kado] Kadner
\<_)
^^
Re: Variable Aufrufe statischer Methoden
On Fri, 30 Nov 2007 14:42:14 +0100 Ulf Kadner wrote:
> >>> $result = $class::$method;
> Dann hättest Du aber über Reflection stolpern müßen! :-)
> Den würde ich hier sowieso den Vorzug geben. Es ist schneller.
Was das betrifft, grueble ich noch immer darueber nach, wie
und wofuer ich es genau brauchen moechte :-). Irgendwie fehlt
mir da noch der geistige Zugang dafuer, aber vielleicht ist
das ja jetzt die Chance, wo es ein konkretes Beispiel gibt.
Wie wuerde man obiges Statement - elegant und schnell - mit
Reflection nachbilden?
Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Der Traum vom kleinen Glück! Stefan - Glaube und Teste!
(Sloganizer)
Re: Variable Aufrufe statischer Methoden
Stefan Froehlich schrieb:
> On Fri, 30 Nov 2007 14:42:14 +0100 Ulf Kadner wrote:
>>>>> $result = $class::$method;
>> Dann hättest Du aber über Reflection stolpern müßen! :-)
>> Den würde ich hier sowieso den Vorzug geben. Es ist schneller.
> Was das betrifft, grueble ich noch immer darueber nach, wie
> und wofuer ich es genau brauchen moechte :-). Irgendwie fehlt
> mir da noch der geistige Zugang dafuer, aber vielleicht ist
> das ja jetzt die Chance, wo es ein konkretes Beispiel gibt.
> Wie wuerde man obiges Statement - elegant und schnell - mit
> Reflection nachbilden?
$ref = new ReflectionClass($class);
if($ref->hasMethod($method)) {
$ref->getMethod($method)->invoke();
}
<http://de2.php.net/oop5.reflection>
--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
Re: Variable Aufrufe statischer Methoden
Also sprach Thomas Hamacher:
> $ref = new ReflectionClass($class);
>
> if($ref->hasMethod($method)) {
> $ref->getMethod($method)->invoke();
> }
Und das soll tatsächlich schneller sein als call_user_func( array( $class,
$method ) )?
Zweifelnd,
Thomas
--
C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!
(Coluche)
Re: Variable Aufrufe statischer Methoden
Thomas Mlynarczyk schrieb:
> Also sprach Thomas Hamacher:
>
>> $ref = new ReflectionClass($class);
>>
>> if($ref->hasMethod($method)) {
>> $ref->getMethod($method)->invoke();
Das hier muss $ref->getMethod($method)->invoke(null); lauten.
>> }
> Und das soll tatsächlich schneller sein als call_user_func( array( $class,
> $method ) )?
Nein, natürlich nicht. Das ist viel langsamer als call_user_func().
--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
Re: Variable Aufrufe statischer Methoden
Also sprach Thomas Hamacher:
[Reflection]
>> Und das soll tatsächlich schneller sein als call_user_func( array(
>> $class, $method ) )?
> Nein, natürlich nicht. Das ist viel langsamer als call_user_func().
Ulf meinte aber ein paar Postings weiter oben:
> Dann hättest Du aber über Reflection stolpern müßen!
> Den würde ich hier sowieso den Vorzug geben. Es ist schneller.
Gruß,
Thomas
--
C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!
(Coluche)