Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > statische variablen
Antwort
 
Themen-Optionen
Alt 27.02.2006, 17:22   Nach oben    #1
Erfahrener Benutzer
 
Registriert seit: 19.08.2005
Beiträge: 115
Standard statische variablen

Hallo,
Ich habe folgendes Problem:
Ich habe einige Klassen in einem Ordner, wobei deren dateinamen immer so aussehen:
name_der_klasse.class.php
In der Hauptdatei werden alle diese Dateien geladen, jedoch wird nicht unbedingt von jeder Klasse eine Instanz erstellt.
Am Ende der Seite möchte ich eine Select-box haben, in der man eine der vorkommenden Klassen wählen kann.
Da die namen jedoch nicht selbsterklärend sind, haben alle klassen die variable $name, die ihnen einen richtigen Namen zuweisen.
PHP-Code:
<?php
class test {
      public 
$name "Das ist eine Testklasse";
}
?>
Nun ist das Problem, dass ich an $name herankommen muss, egal ob ich nun nur den Namen der Klasse, oder nur eine Instanz der Klasse habe.
Deklariere ich $name nicht als static, so bekomme ich den Fehler
Access to undeclared static property: test::$name
, wenn ich sie mithilfe von
test::$name aufrufen möchte.
Deklariere ich sie als static, kann ich sie nicht von der Instanz her aufrufen:
Undefined property: test::$name
(der Aufruf sieht natürlich so aus: $var = $instanz->name


PHP-Code:
<?php
class test {
      public 
$name "Das ist eine Testklasse";
}

class 
test2 {
      public static 
$name "Das ist eine Testklasse";
}
$instanz1 = new test;
$instanz2 = new test2;
echo 
$instanz1->name// geht
echo test::$name// geht nicht

echo $instanz2->name// geht nicht
echo test2::$name// geht
?>
__________________
Programming today is a race between software engineers striving to build bigger and better
idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the
universe is winning.
Buhmann ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.02.2006, 17:28   Nach oben    #2
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 449
Standard

Tjo.. ist halt so. Du kannst nicht auf eine Instanzvariable ohne Instanz der Klasse zugreifen und auch nicht auf eine Klassenvariable über die Instanz der Klasse.
__________________
Corvin ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.02.2006, 17:51   Nach oben    #3
Benutzer
 
Registriert seit: 27.02.2006
Beiträge: 38
Standard

Mach doch einfach eine get Methode ala:

public getClassname() {
return this.beschreibung;
}
freezer ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.02.2006, 19:32   Nach oben    #4
Benutzer
 
Registriert seit: 17.08.2005
Beiträge: 87
Standard

Oder verwende immer den statischen Zugriff; wozu per -> wenn es doch klassenweit gilt?
PHP-Code:
<?php
class T
{
    public static 
$name "Das ist eine Testklasse"// keine Konstante?
    
    
public function aMethod()
    {
        echo 
'-'T::$name'-';
    }
}

echo 
'='T::$name'=  ';

$t = new T;
$t->aMethod();
?>

Geändert von VolkerK (27.02.2006 um 19:38 Uhr).
VolkerK ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.02.2006, 20:21   Nach oben    #5
Jay
Gast
 
Beiträge: n/a
Standard

Wenn du von allen Klassen ein Objekt hättest könntest du mit foreach durch iterieren. Aber ansonsten stimme ich mit VolkerK über ein.
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.02.2006, 23:15   Nach oben    #6
Erfahrener Benutzer
 
Registriert seit: 19.08.2005
Beiträge: 115
Standard

Zitat:
Zitat von VolkerK
Oder verwende immer den statischen Zugriff; wozu per -> wenn es doch klassenweit gilt?
PHP-Code:
<?php
class T
{
    public static 
$name "Das ist eine Testklasse"// keine Konstante?
    
    
public function aMethod()
    {
        echo 
'-'T::$name'-';
    }
}

echo 
'='T::$name'=  ';

$t = new T;
$t->aMethod();
?>
Das Problem ist, dass es an der Stelle etwas kompliziert ist, herauszufinden, von welcher klasse die instanz eigentlich ist ...
Argh ich idiot ... da gabs ne funktion für glaub ich .... dann hat sichs erledigt, danke
__________________
Programming today is a race between software engineers striving to build bigger and better
idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the
universe is winning.
Buhmann ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.03.2006, 10:57   Nach oben    #7
Benutzer
 
Registriert seit: 17.08.2005
Beiträge: 87
Standard

Ja, es gibt http://de2.php.net/get_class und in php5 auch die Möglichkeit, per Reflection an die Daten zu kommen.
PHP-Code:
<?php
class T
{
  public static 
$name "Das ist eine Testklasse"// keine Konstante?
   
}

$t = new T;

$r = new ReflectionObject($t);
echo 
$r->getStaticPropertyValue('name');
?>
VolkerK ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Namensgebung der Variablen WarrenFaith Allgemeine Java-Programmierung 9 14.07.2007 05:21
PHP Variablen Michael PHP-Programmierung 1 23.09.2006 00:12
statische Methode per Reflection aufrufen ehli75 Allgemeine Java-Programmierung 2 02.02.2006 13:17
Rechnen mit Variablen Bookworm PHP-Programmierung 28 24.11.2005 16:49
Variablen slater Allgemeine Java-Programmierung 6 04.11.2005 09:40


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:29 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44