php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.06.2009, 08:37  
Neuer Benutzer
 
Registriert seit: 06.06.2009
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Cube befindet sich auf einem aufstrebenden Ast
Standard Objekte in Objekten verwenden

Hallo,

wie geht Ihr vor wenn Ihr Funktionen von Objekten in anderen Objekten verwenden wollt?

Beispiel:

Ich habe eine Klasse mit Datenbankfunktionen und eine Klasse mit Templatefunktionen, Arrayfunktionen ect. plus eine Klasse Assets in der ich die Funktionen der anderen Klassen verwenden möchte.

Alle diese Objekte instanziere ich als Singleton und übergebe diese als Objekt in eine anderes Objekt um diese dort zu verwenden:

PHP-Code:

$db 
MySQL::getInstance();
$db->setDBConnect('localhost''user''password''database');
$db->connectDB();
$db->selectDB();
$tpl Template::getInstance();

$asset = new Asset($db$tpl); 
Jetzt kann ich die Funktionen über "self::$db->setSelect()" im Objekt assets verwenden.

Wie seht Ihr das oder wie würdet Ihr sowas lösen?

Danke Vorab und nice Day
Cyyya
Cube ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 30.06.2009, 09:08  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Was meinst du?
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline  
Alt 30.06.2009, 09:22  
Erfahrener Benutzer
 
Benutzerbild von Squall
 
Registriert seit: 19.03.2009
Beiträge: 539
PHP-Kenntnisse:
Fortgeschritten
Squall befindet sich auf einem aufstrebenden Ast
Standard

Wenn ich dich richtig verstanden habe, sollte dir extends bessere Dienste erweisen.
Squall ist offline  
Alt 30.06.2009, 09:31  
Neuer Benutzer
 
Registriert seit: 06.06.2009
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Cube befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Squall Beitrag anzeigen
Wenn ich dich richtig verstanden habe, sollte dir extends bessere Dienste erweisen.
An "extends" hatte ich auch gedacht, nur habe ich die Vererbung so verstanden im OOP, dass schon eine Vater - Kind Beziehung vorherschen sollte. D.h. eine abgewandelte Form der Klasse Assets mit anderen/weiteren Attributten und Methoden --> ein Objekt Tier kann ja auch nicht von einem Objekt Fahrzeug erben !?

Cya
Cube ist offline  
Alt 30.06.2009, 09:36  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Cube Beitrag anzeigen
An "extends" hatte ich auch gedacht, nur habe ich die Vererbung so verstanden im OOP, dass schon eine Vater - Kind Beziehung vorherschen sollte. D.h. eine abgewandelte Form der Klasse Assets mit anderen/weiteren Attributten und Methoden --> ein Objekt Tier kann ja auch nicht von einem Objekt Fahrzeug erben !?

Cya
Würde sich eine "abgewandelte" Form einer Klasse dann nicht eher in die abstracte Richtung gehen? Obwohl abstracte Klassen ja auch via extends eingebunden werden. Aber da würde es jedenfalls Sinn machen denke ich.

Natürlich müssen Erbende Klassen einen Sinnvollen bezug zueinander haben, aber das plant doch meiner Meinung nach schon im Vorraus.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 30.06.2009, 10:03  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Schau dir mal die gängige design pattern an, ich weiß ebensowenig wie die anderen, was du genau willst. Geraten würde ich tippen, dass dir das registry pattern weiterhelfen könnte.

Ansonsten empfehle ich dir, bevor du dein eigenes MVC programmierst, gleich auf ein komplettes framework zu setzen:

apf, zend,cake, symfony, etc... Da ist mit Sicherheit etwas für dich dabei. Evtl auch contenido (kleiner gehalten).


grüße
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist gerade online  
Alt 30.06.2009, 16:18  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Um deine PM zu beantworten und damit meine Gegenfrage: Ich verstehe nicht was hier deine Frage ist. Natürlich musst du die Objekte an das Zielobjekt übergeben, wenn du darin die anderen Objekte nutzen willst. In den Konstruktor gehören Sie, wenn sie zur Start-Initialisierung des Objektes benötigt werden oder so so oft verwendet werden (könnten), dass eine andauernde Überprüfung auf das Vorhandensein lästig wird. Wenn Assets also komplett auf der Datenbank basiert, macht die Übergabe des $db dort Sinn. Wenn das Template nur an einer Stelle befüllt werden soll (was ist Asset?), dann solltest du das Objekt lieber an eine Methode, die eben als einzigstes auf Template zugreifen muss, als Parameter übergeben.

PHP-Code:
<?php
$asset 
= new Asset($db);
$asset->loadVariables();
$asset->renderInto($template);
?>
Der Zugriff per self:: ist allerdings statisch, ein Objekt ist aber nicht statisch. Die Klasse ist es. Somit solltest du $this verwenden. Andernfalls ist es nicht mehr möglich dass zwei Asset-Objekte nebeneinander verschiedene $db-Objekte verwenden (mal abgesehen davon, dass du dies per Singleton sowieso ausschließt).

static/self solltest du aber nur benutzen, wenn du weißt was du tust, du also die Klasse konfigurieren willst, nicht die Objekte.
__________________
"Nuschel ich?" - "Was?"
Chriz 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
[Erledigt] Referenzen auf Objekte innerhalb eines Arrays PHP-Fortgeschrittene 6 31.08.2009 17:06
[Erledigt] objekte mit bilddaten serialisieren lumo PHP Tipps 2008 1 17.07.2008 12:25
[Erledigt] Objekte übergeben Felix PHP Tipps 2008 23 18.06.2008 12:21
Objekte zur Laufzeit Vererbung anhängen Zergling-new PHP-Fortgeschrittene 8 17.11.2007 17:31
PHP 5 Objekte in Session philomat PHP-Fortgeschrittene 1 17.02.2007 17:47
Objekte in Arrays suchen PHP-Fortgeschrittene 5 20.01.2006 20:58
[Erledigt] Objekte vergleichen PHP-Fortgeschrittene 4 08.12.2005 16:20
objekte und klassen notyyy PHP Tipps 2005-2 2 24.10.2005 17:44
Session abschaltbar?? Probleme mit Objekten in Session! becks123 PHP-Fortgeschrittene 3 19.09.2005 15:47
[Erledigt] $$var / ${$var} in preg_replace_callback() verwenden PHP Tipps 2005 8 20.04.2005 18:02
[Erledigt] Kommunikation zwischen Objekten - Wie geht es richtig? PHP Tipps 2005 9 11.04.2005 00:57
Ganze Objekte an Script weitergeben dreamingof8a PHP Tipps 2004-2 6 23.11.2004 12:17
ich raffe opp nicht :( ! eQuin PHP-Fortgeschrittene 16 04.11.2004 11:28
[Erledigt] Referenzen auf Objekte PHP-Fortgeschrittene 2 17.08.2004 11:08
Anonyme Objekte? PHP-Fortgeschrittene 18 25.07.2004 22:19

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
objekte in objekten verwenden

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