Hallo,
Wie kann ich die statische Eigenschaft abrufen, von dessen Klasse ich nur ein Objekt habe, ohne E_STRICT zu verletzen, das heißt die statische Eigenschaft auch wie eine Klasseneigenschaft und nicht wie eine Objekteigenschaft abzurufen (T_PAAMAYIM_NEKUDOTAYIM).
Wie komme ich drauf?
Ich habe eine abstrakte TextControl-Klasse, die eine statische factory-Methode hat, die je nach Parameter ein Objekt der TextControl_Mysql oder ein TextControl_Oci8 zurückliefert.
In der abstrakten Klasse TextControl stehen einige protected static (also Klasseneigenschaften) Variablen mit Standard-SQL-Statements.
Nun können TextControl_Oci8 oder TextControl_Mysql diese Standard-SQL-Statements durch spezifische überschreiben und an genau diese möchte ich jetzt von außen heran.
(Allerdings nur zu Debug-Zwecken und aus Interesse)
Achso: Ohne eval() oder Reflections.
Wie kann ich die statische Eigenschaft abrufen, von dessen Klasse ich nur ein Objekt habe, ohne E_STRICT zu verletzen, das heißt die statische Eigenschaft auch wie eine Klasseneigenschaft und nicht wie eine Objekteigenschaft abzurufen (T_PAAMAYIM_NEKUDOTAYIM).
Wie komme ich drauf?
Ich habe eine abstrakte TextControl-Klasse, die eine statische factory-Methode hat, die je nach Parameter ein Objekt der TextControl_Mysql oder ein TextControl_Oci8 zurückliefert.
In der abstrakten Klasse TextControl stehen einige protected static (also Klasseneigenschaften) Variablen mit Standard-SQL-Statements.
Nun können TextControl_Oci8 oder TextControl_Mysql diese Standard-SQL-Statements durch spezifische überschreiben und an genau diese möchte ich jetzt von außen heran.
(Allerdings nur zu Debug-Zwecken und aus Interesse)
PHP-Code:
<?php
$tc = TextControl::factory($db);
echo $tc->$sql_langExists; // Aufruf als Objekteigenschaft, verletzt E_STRICT
echo TextControl_Mysql::$sql_langExists; // das möchte ich (wenn get_class($tc) = TextControl_Mysql wäre)
echo get_class($tc)::$sql_langExists; // geht nicht
$class = get_class($tc);
echo $class::$sql_langExists; // T_PAAMAYIM_NEKUDOTAYIM-Fehler
echo {$class}::$sql_langExists; // {-Parse-Error;
?>
Kommentar