php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.07.2011, 13:31  
Benutzer
 
Registriert seit: 24.12.2010
Beiträge: 68
PHP-Kenntnisse:
Anfänger
kaptainIglo befindet sich auf einem aufstrebenden Ast
Standard OOP-Design

Hi,

ich möchte gerne eine Application im MVC Modell machen.
Jetzt habe ich eine Klasse Check.
In dieser Klasse überprüfe ich bestimmte Sachen. Zum Beispiel ob der User überhaupt vorhanden ist. Dazu muss ich eine Datenbankabfrage machen.
Ich wollte dafür eine Methode checkUser() anlegen.
Wie gehe ich nun mit der Datenbankabfrage um?
Lege ich eine extra Klasse für die Datenbank an oder erledige ich die Abfrage direkt in der Methode checkUser()?
kaptainIglo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 18.07.2011, 13:39  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Ziemlich nichtssagende Klassen- und Methodennamen, den Sinn dahinter würde ich an deiner Stelle noch einmal überdenken. Vor allem, wenn "Check" für alles mögliche zuständig sein soll und nicht nur für den User, denn so klingt es gerade.

Aber abgesehen davon, bevor du dir eine Datenbank-Klasse bastelst: PHP bringt mit PDO bereits eine mit, entweder benutze diese oder wenn es etwas komplexer wird, lieber einen fertigen ORM (Object Relational Mapper) wie Doctrine oder Propel.
fab ist offline   Mit Zitat antworten
Alt 18.07.2011, 13:46  
Benutzer
 
Registriert seit: 24.12.2010
Beiträge: 68
PHP-Kenntnisse:
Anfänger
kaptainIglo befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Anwort.
Bei der PDO muss ich ja trotzdem ein Objekt erzeugen und hier den Zugriff mittels User,Passwort irgendwo erstellen.
Wie greife ich dann von einer Methode einer anderen Klasse auf den PDO-Zugriff zu?
kaptainIglo ist offline   Mit Zitat antworten
Alt 18.07.2011, 13:54  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Ein kurzes Beispiel:
PHP-Code:
class UserManager
{
  private 
$pdo;
  public function 
__construct(PDO $pdo)
  {
    
$this->pdo $pdo;
  }
  public function 
loadUserById($id)
  {
    
// ...
    
$this->pdo->query(...);
    
// ...
  
}
}

// DB wird an zentraler stelle initialisiert:
$pdo = new PDO(...);
// $pdo wird an die Objekte, die Datenbankzugriff brauchen "durchgereicht":
$um = new UserManager($pdo);
$user $um->loadUserById(1); 
Zwei Stichworte für weitere Lektüre zu dem Konzept:
- Dependency Injection ("Injizieren" von Services von außen in abhängige Objekte)
- Registry (Zentrale Verwaltung von Objekten, ggf. zusätzlich interessant für dich)
fab ist offline   Mit Zitat antworten
Alt 18.07.2011, 16:06  
Benutzer
 
Registriert seit: 24.12.2010
Beiträge: 68
PHP-Kenntnisse:
Anfänger
kaptainIglo befindet sich auf einem aufstrebenden Ast
Standard

Ok.
Wie mache ich das wenn ich folgendes Szenario habe:

PHP-Code:
index.php
($pdo = new PDO);

Controller.php

$beispiel 
= new UserManager();

UserManager.php

function checkUser() {
DB Zugriff

In der index.php erzeuge ich die Datenverbindung. Der Controller ruft die Klasse UserManager auf und verwendet die Funktion checkUser() um zu prüfen ob der User in der Datenbank vorhanden ist.

Ich erzeuge ja in der Klasse Controller ein neues Objekt der Klasse UsermManager. Die $pdo ist hier ja nicht bekannt und kann dann dem Konstruktur nicht übermittelt werden.
Müsste ich nach Deinem Beispiel schon der Klasse Controller die $pdo vermitteln?
Hoffe Du verstehst was ich meine..
kaptainIglo ist offline   Mit Zitat antworten
Alt 18.07.2011, 16:16  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Das ist der Punkt an dem die o.g. Registry ins Spiel kommt. Das ist allerdings ausdrücklich nur ein Vorschlag und nicht die einzige Möglichkeit.

Pro: leicht zu verstehen und zu verwenden
Kontra: eigentlich nur eine schön verpackte Verson von Globals.

Links:
http://martinfowler.com/eaaCatalog/registry.html
http://www.phpbar.de/w/Registry

Alternative: DI-Container (dazu gibt es u.a. hier im Forum einiges zu lesen, erfordert aber auch mit fertigen Lösungen etwas Einarbeitung ins Thema)
fab ist offline   Mit Zitat antworten
Alt 18.07.2011, 16:19  
Benutzer
 
Registriert seit: 24.12.2010
Beiträge: 68
PHP-Kenntnisse:
Anfänger
kaptainIglo befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank.
Ich hab mich jetzt nur mit dem ersten Beispiel beschäftigt.
Jetzt schau ich mir mal die Links an.
kaptainIglo ist offline   Mit Zitat antworten
Alt 18.07.2011, 16:23  
Erfahrener Benutzer
 
Benutzerbild von splasch
 
Registriert seit: 05.01.2009
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
splasch kann nur auf Besserung hoffen
Standard

Zitat:
Zitat von kaptainIglo Beitrag anzeigen
Vielen Dank.
Ich hab mich jetzt nur mit dem ersten Beispiel beschäftigt.
Jetzt schau ich mir mal die Links an.

Soweit ich gesehen hab willst du ein Rechtesystem schreiben.
Hier hast du ein Beispiel so eines System unter:
http://www.php2all.de/thread-651-rechtesystem.html

Letzter Beitrag.

Mfg Splasch
splasch ist offline   Mit Zitat antworten
Alt 18.07.2011, 21:57  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 390
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Ich kaue gegenwärtig an ähnlichen Problemen, mir hat sehr geholfen: http://fabien.potencier.org/article/...ency-injection
achtelpetit ist offline   Mit Zitat antworten
Alt 19.07.2011, 10:31  
Benutzer
 
Registriert seit: 24.12.2010
Beiträge: 68
PHP-Kenntnisse:
Anfänger
kaptainIglo befindet sich auf einem aufstrebenden Ast
Standard

Danke. Den Link habe ich mir auch angeschaut.
Letztendlich hilft hier auch einfach global zu verwenden.
Ich habe gelesen das dies verpönt ist, nur überreiße ich es noch nicht warum.
kaptainIglo ist offline   Mit Zitat antworten
Antwort


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
Eure Meinung zum Design einer Seite :) Jonny2010 Off-Topic Diskussionen 16 14.04.2011 22:03
(Hosting-) Design zu verkaufen JLNNN Gewerblich 3 05.02.2011 18:10
Website in OOP: Wie am besten vorgehen? GreenDelta PHP Einsteiger 13 29.01.2011 12:25
[Erledigt] Design von Klassen für Datenbankabfragen Sirke Software-Design 10 17.06.2010 12:40
gleich oop lernen oder erst mal prozedural programmieren? Voltage PHP Tipps 2010 7 22.01.2010 16:46
Design Pattern BlackScorp PHP Tipps 2009 7 06.01.2010 19:04
100% OOP wirklich sinnvoll ? Pehapeh PHP-Fortgeschrittene 31 04.12.2009 11:19
Wer hilft mir bei OOP? echo Beitragsarchiv 27 23.02.2009 16:12
Design Pattern Harry B. Software-Design 7 02.09.2008 20:49
Design und Code Trennen TeazY PHP Tipps 2008 29 21.05.2008 12:08
Design Beitragsarchiv 26 04.06.2005 20:56
[PHP] Design Schutz für ein Gästebuch I-Spy PHP Tipps 2005 5 01.01.2005 11:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php user class oop, php5 datenbank klasse pdo struktur, php oop pdo klasse, php oop datenbank klasse als registry, oop datenbankzugriff php, oop datenbank, php datenbank klasse, php sql klasse oop 2011, php oop design, datenverbindung mit pdo, oop php design, oop design php, php orm pdo class, oop design und datenbanken, software design klassenbeschreibung in oo, php oop rechtesystem, oop php database class, oop designs, php db class alternative to pdo

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:52 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