php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Einsteigerfragen


 
kelle_fl
30-12-2005, 07:55 
 
Hallo Forummitglieder!

Ich habe mich entschlossen diesem Forum aktiv beizutreten. Da es meinem anschein nach eine rege Beteiligung hat !!

Stellt euch vor, ihr habe ein Loginsystem, wo alle nötigen einstellungen in einer extra config.inc.php gemacht werden. Wie kann ich das ganze denn per OOP regeln?

Wenn die Konfig eine Klasse ist mit den variablen und das Login eine andere Klasse ist, wie ist es denn möglich auf die variablen aus der config zuzugreifen?
Soll ich die Config als interface machen und der Loginklasse übergeben?
Ach wo ich grad beim Fragen bin (ist zwar schon öfters gefragt worden, aber vielleicht weiß ja jemand einen netten link, bei dem ich es auch verstehen kann), wie ist das denn mit den variablen als public static... wann benutz ich welche?

Vielen dank schon mal für hilfreiche Antworten!!

greatz

kelle_fl

 
schmalle
30-12-2005, 09:18 
 
Erstmal welcome on board!

Eine Config Klasse? Eine Login Klasse? mal im Ernst, sowas braucht kein Mensch. Man legt sich eine Configdatei mit Variablen oder arrays an. Dann bastelt man sich eine Steuerklasse, welche die Methode login() enthält. Alles andere ist Overkill ...

 
kelle_fl
30-12-2005, 10:33 
 
danke für die antwort!

Mir geht es halt nur ums prinziep!
Werde schon nicht so eine Login Klasse erstellen ;)

Ist es möglich von einer Klasse auf die Variablen einer anderen Klasse zuzugreifen?

Und hat jemand ein Beispiel oder einen Link für Static, private... Variablen? Versteh ich nämlich net wann ich die nehmen soll..

 
fox34
30-12-2005, 10:46 
 
Ist es möglich von einer Klasse auf die Variablen einer anderen Klasse zuzugreifen?

Natürlich, musst aber vorher global verwenden ;)


Und hat jemand ein Beispiel oder einen Link für Static, private... Variablen? Versteh ich nämlich net wann ich die nehmen soll..


Die "Schlüsselwörter" funktionieren nur bei PHP5 ;)

-> http://php3.de/manual/de/language.oop5.static.php

Das is jetz nur für static... schau dich am besten auf der php.net - Seite noch ein bisschen um ;)

lg

 
kelle_fl
30-12-2005, 11:46 
 
Oki danke, da ist mir schon mal viel geholfen!

Kann man dann einfach sagen,

global ist Klassenübergreifend
static nur die eine Klasse...

Kann das mal jemand vervollständigen mit den vier typen?


Danke!!

 
fox34
30-12-2005, 12:33 
 
Original geschrieben von kelle_fl
Oki danke, da ist mir schon mal viel geholfen!

Kann man dann einfach sagen,

global ist Klassenübergreifend
static nur die eine Klasse...

Kann das mal jemand vervollständigen mit den vier typen?


Danke!!


global ist eigentlich dafür gut, dass du eine Variable in Funktionen verwenden kannst ;)

Zu den typen kann ich dir leider wenig sagen, weil ich die nich benutz... hab php4 ;)


lg

 
flyx
30-12-2005, 14:48 
 
Original geschrieben von fox34
Natürlich, musst aber vorher global verwenden ;)


Stimmt so nicht ganz.
Du kannst auch der Klasse eine Referenz auf die Klasse, in der die Variable drinsteht, übergeben.
Ist imho die bessere Lösung.
Global sollte man nicht alzu oft einsetzen.

Hier kurz zu den schlüsselwörtern:

private:
Attribute und Methoden, die nur von der Klasse/bzw. der Instanz der Klasse benutzt werden können.

public:
Attribute und Methoden, die auch von ausserhalb der Klasse benutzt werden können.

Dann gibt es noch protected, was aber imho nicht von großer Bedeutung ist.
Static hat so gesehn nichts im OO zu tun, das gabs schon vorher.
statict werden Variablen, etc. deklariert, die nicht nach dem Abarbeiten einer Funktion oder einer Methode immernoch zur verfügung stehen.

Hab ich noch was vergessen?
Naja auf PHP.net müsste noch mehr stehen...

 
ghostgambler
30-12-2005, 14:55 
 
Original geschrieben von flyx
Dann gibt es noch protected, was aber imho nicht von großer Bedeutung ist.
wenn du auf Vererbung verzichtest...
public mach ein Attribut von außen private, aber jede abgeleitete Klasse kann noch auf die Eigenschaft zugreifen, was bei private nicht möglich wäre

class test {
private $test;
}
class test2 extends test {
public function grins() {
$this->test = 'test';
}
}
geht nicht, mit public würde es hingegen funktionieren

Static hat so gesehn nichts im OO zu tun, das gabs schon vorher.
statict werden Variablen, etc. deklariert, die nicht nach dem Abarbeiten einer Funktion oder einer Methode immernoch zur verfügung stehen.
man kann aber auch Variablen innerhalb einer Klasse static machen, das ging vorher nicht!

class test {
static $test = 'test';
}

 
kelle_fl
30-12-2005, 15:07 
 
Schön, so langsam kommt bei mir Licht ins dunkeln, was es mit global, static, public und co zu tun hat...

Danke Ghostgambler für die anschaulichen Beispiele!!!

 
ameisenmann
10-05-2006, 22:12 
 
static, das für "statisch" steht, bedeutet bei eigenschaften einer klasse, dass diese eigenschaft einen festen wert hat und dieser nicht geändert bzw. überschrieben wird wenn man die klasse benutzt...

außerdem kann man auf eine solche eigenschaft zugreifen, ohne dass man ein objekt der klasse instanziieren muss...

also fällt das weg:
$klasse = new Klasse();
$klasse->eigenschaft;

statische eigenschaften kann man einfach so aufrufen:
Klasse::eigenschaft;

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:00 Uhr.