php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.07.2010, 09:54  
Erfahrener Benutzer
 
Registriert seit: 06.12.2009
Beiträge: 115
PHP-Kenntnisse:
Fortgeschritten
luks2com zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Frage zu Klassen und Objekten

Hallo,

ich habe eine Frage:
Ich habe ein Loginsystem. Jetzt ahbe ich ein Objekt OtherUser erstellt (funktioniert auch super)
Ich kann jetzt einfach
PHP-Code:
$peter = new OtherUser;
$peter->uid 1;
echo 
$peter->GetUsername(); 
Jetzt habe ich eine User Klasse.
Diese Klasse ist von dem momentan eiongeloggten User.
Kann ich das irgendwie machen, dass ich in der Klasse User das Objekt OtherUser erstellen kann?
also, dass ich
PHP-Code:
echo User::GetUsername(); 
machen kann.

Ich habe schon versucht in die Userklasse folgendes reinzuschreiben:
PHP-Code:
$peter = new OtherUser;
$peter->uid $_SESSION['uid']; 
Aber das geht nicht

Danke schon mal
luks2com ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.07.2010, 10:11  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.637
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Warum hast du zwei Userklassen?

Eine reicht doch vollkommen aus weil jeder User doch prinzipiel das gleiche "kann".

PHP-Code:
$peter = new OtherUser;
$peter->uid $_SESSION['uid']; 
"Geht nicht" ist keine sinnvolle Fehlerbeschreibung. Was steht dnen in $_SESSION['uid'] drin?

Hat die Klasse User auch die Membervariable uid? Wenn ja sollte im Konstruktor der User Klasse folgendes funktionieren:

PHP-Code:
$uo = new OtherUser;
$uo->uid $this->uid
Sofern die uid im Konstruktor gesetzt wird.

PHP-Code:
echo User::GetUsername(); 
Ist auch Banane weil das ein statischer Aufruf wäre womit kein Zugriff auf $this möglich ist.

Dein ganzes Konzept erscheint mir sehr fragwürdig.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline  
Alt 21.07.2010, 10:12  
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 813
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

Was genau willst du denn machen?
wenn ich das richtig sehe:
Du brauchst nicht eine Klasse OtherUser, sondern nur User, die identisch ist zum derzeit eingeloggten User. Die Objekete existieren ja nur bei jedem Scriptaufruf und werden am Ende gelöscht. Es sei denn du speicherst diese in der DB, was ich aber nicht machen würde.
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Positive Bewertungen sind nicht unwillkommen...
Paul.Schramenko ist offline  
Alt 21.07.2010, 10:36  
Erfahrener Benutzer
 
Registriert seit: 06.12.2009
Beiträge: 115
PHP-Kenntnisse:
Fortgeschritten
luks2com zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Also ich mache gerade ein Browsergame und da kann ich dann durch das OtherUser objekt einfach z.B. bei den News, wo ich nur die uid in der db speichere dies machen:
PHP-Code:
$author = new OtherUser;
$author->uid $news['uid'];
echo 
$author->GetUsername(); 
So jetzt brauch ich eine extra Klasse für den eingeloggten User. Der braucht nähmlich auch extra funktionen und soll auhc nur eine Klasse und kein Objekt sein.
Trotzem sollen die funktionen von dem OtherUser Objekt in der Klasse sein, sodass ich einfach
PHP-Code:
echo User::GetUsername(); 
machen kann.

Also wie ich das jetzt verstanden habe kann cih das Objekt im Konstruktur erzeugen?
luks2com ist offline  
Alt 21.07.2010, 10:48  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.637
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
Zitat von luks2com Beitrag anzeigen
Also wie ich das jetzt verstanden habe kann cih das Objekt im Konstruktur erzeugen?
Da die Klasse für den eingeloggten User ausschließlich statische Methoden enthalten soll: nein.

Ansonsten wäre wohl Vererbung hier das Stichwort oder zumindest ein Singleton.

Aber was ich nach wie vor nicht verstehe... was unterscheidet den eingeloggten User von einem anderem?
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline  
Alt 21.07.2010, 10:55  
Erfahrener Benutzer
 
Registriert seit: 06.12.2009
Beiträge: 115
PHP-Kenntnisse:
Fortgeschritten
luks2com zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

function wie z.B. isLoggedin, oder ganz viele funktionen, die zum Browsergame gheören.
Wie kann cihd as denn etzt umsetzen?
luks2com ist offline  
Alt 21.07.2010, 10:59  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.637
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
Zitat von luks2com Beitrag anzeigen
function wie z.B. isLoggedin, oder ganz viele funktionen, die zum Browsergame gheören.
Wie kann cihd as denn etzt umsetzen?
indem du einfach eine Klasse nimmst?

Denk mal z.B. an eine Freundesliste... das werden dann alles OtherUser Objekte ohne isLoggedIn Funktion für einen Onlinestatus?

Oder wenn du z.B. addItem und removeItem Methoden hast für den eingeloggten User aber nicht in OtherUser und eine Möglichkeit schaffen willst das 2 User miteinander handeln können?

Du brauchst nur eine Klasse.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline  
Alt 21.07.2010, 11:00  
Benutzer
 
Registriert seit: 22.11.2009
Beiträge: 78
PHP-Kenntnisse:
Anfänger
christophk befindet sich auf einem aufstrebenden Ast
Standard

Ich würde das so machen, wie Dark Guardian das vorgeschlagen hat.
Du machst dir eine Klasse OtherUser wie du die jetzt schon hast. Und lässt die Klasse User davon erben. Lässt sich das nur nicht mehr statisch machen, aber du kannst ja mit Singleton arbeiten: PHP: Patterns - Manual
Dadurch existiert immer nur ein Objekt der Klasse, dürfte ja das richtige für dich sein.

Gruß
christophk ist offline  
Alt 21.07.2010, 11:16  
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 813
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von luks2com Beitrag anzeigen
function wie z.B. isLoggedin, oder ganz viele funktionen, die zum Browsergame gheören.
Wie kann cihd as denn etzt umsetzen?
naja eigentlich finde ich das unnötig ein nicht eingeloggter Benutzer ist immer noch ein Benutzer (User). Daher sollte er auch die selbe Klasse haben. Die Funktion isLoggedIn sollte in diesem fall dann einfach false zurückliefern.
Die Unterscheidung zwischen eingeloggten und nicht eingeloggten Benutzern gehört nicht rein finde ich.
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Positive Bewertungen sind nicht unwillkommen...
Paul.Schramenko ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mehrere Klassen verknüpfen BlackJack01090 Software-Design 9 26.05.2009 20:43
Modulare Programmierung - Klassen nur in Klassen Gültig iXtends Software-Design 6 26.05.2009 15:37
URL Frage Eclipse16V PHP Tipps 2009 8 23.02.2009 17:02
Hallo eine Frage in sachen Forensysteme spikytux HTML, Usability und Barrierefreiheit 11 03.01.2009 15:06
Verwendung von $this und parent in abgeleiteten Klassen 72dpi PHP Tipps 2008 17 12.12.2008 17:14
Tool um (Spiel)Klassen zu erzeugen Martin13 PHP-Fortgeschrittene 6 05.09.2007 02:25
Klassen sinnvoll nutzen, Grundlegendes nikosch PHP-Fortgeschrittene 1 30.09.2006 22:08
Fragen zu Klassen Kein Genie PHP Tipps 2006 3 08.05.2006 11:25
Sessions an includete Klassen übergeben Dr_Enquinox PHP Tipps 2006 4 29.04.2006 10:25
mit html klassen definieren und in php ausgeben PHP-Fortgeschrittene 4 16.01.2006 10:31
[Erledigt] PHP 4 - Klassen? patr1k PHP Tipps 2005 10 18.11.2005 10:48
Klassen PHP Tipps 2005 5 09.04.2005 18:51
Klassen Frage!!! PHP-Fortgeschrittene 20 04.03.2005 22:24
klassen: ganz dumme frage PHP Tipps 2005 8 23.01.2005 13:32
Projekte nachträglich auf Klassen und Objekte umstellen??? PHP-Fortgeschrittene 7 10.12.2004 15:33


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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum