php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.02.2010, 16:34  
Neuer Benutzer
 
Benutzerbild von Turamisi
 
Registriert seit: 11.09.2009
Beiträge: 16
PHP-Kenntnisse:
Anfänger
Turamisi befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Nur einer bestimmten Klasse Zugriff andere Klasse erlauben

Hallo,

stoße immer wieder auf das gleiche Problem:
(habe mein bestes gegeben um auf den Punkt zu kommen )

Ich habe zwei Klassen A und B.
Nur der Klasse B soll erlaubt werden, die Varriablen und Funktionen von Klasse A zu nutzen, keiner anderen Klasse sonst.


Wie mache ich das am besten?

---------

Hier ein Beispiel:

Habe die Klasse IMAP_Account, welche ein IMAP-Konto repräsentiert:
PHP-Code:
class IMAP_Account {
    private 
$server;
    private 
$port;
    private 
$folder;   //Array mit IMAP_Folder-Objekten

    //irgendeine Funktion:
    
private function getFullName() {
        return 
"{" $this->server ":" $this->port "}";
    }


Dann habe ich die zweite Klasse IMAP_Folder, welche einem IMAP-Ordner (z.B. INBOX) entspricht.
PHP-Code:
class IMAP_Folder{

   private 
getAttributes() {
      
//hier benötige ich Zugriff auf IMAP_Account
      //sowohl auf $server und $port als auch auf gettFullName()
   
}


Will ich die Eigenschaften des Ordners abrufen (getProperties in IMAP_Folder) brauche ich aber die Werte ($server und $port) aus IMAP_Account.

Das Problem:
1) Ändere ich die Sichtbarkeit der Variablen oder Funktionen aus IMAP_Account auf public, geht meine Kapselung verloren!
2) Füge ich der Klasse IMAP_Folder ebenfalls die Funktionen aus IMAP_Account hinzu, habe ich doppelten Code.

(Bin erst mal off, werde also erst später antworten können)

Geändert von Turamisi (20.02.2010 um 16:37 Uhr).
Turamisi ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 20.02.2010, 16:38  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

Übergib sie IMAP_Folder im Konstruktor ?
Idealerweise nimmst du dazu allerdings einen Objekt-Container als Properties-Objekt, sonst hast du in den Foldern nur Kopien und eventuelle änderungen sind nicht möglich.

Oder macht getter die Publik sind, irgendwie kommt mir das zugriffsmodel da etwas zu strikt vor, warum sollte es keine öffentlichen getter für host und co geben ?
robo47 ist offline   Mit Zitat antworten
Alt 20.02.2010, 20:31  
Neuer Benutzer
 
Benutzerbild von Turamisi
 
Registriert seit: 11.09.2009
Beiträge: 16
PHP-Kenntnisse:
Anfänger
Turamisi befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von robo47 Beitrag anzeigen
Idealerweise nimmst du dazu allerdings einen Objekt-Container als Properties-Objekt, sonst hast du in den Foldern nur Kopien und eventuelle änderungen sind nicht möglich.
Danke, die Idee mit dem Objekt-Container passt sehr gut. Dann kann ich das Objekt auch an verschiedene Klassen weiterreichen und habe nur ein Argument im Konstruktor.

Also soetwas in der Art:
PHP-Code:
            class IMAP_Account_Properties {
                public 
$server$port;
            }
            
            class 
IMAP_Account {
                private 
$properties;
                private 
$folder;
                
                public function 
__construct() {
                    
$this->properties = new IMAP_Account_Properties();
                    
$this->folder = new IMAP_Folder($properties);
                }
            } 
Zitat:
Zitat von robo47 Beitrag anzeigen
Oder macht getter die Publik sind, irgendwie kommt mir das zugriffsmodel da etwas zu strikt vor, warum sollte es keine öffentlichen getter für host und co geben?
Hatte noch das Problem mit meinen Funktionen in der IMAP_Account-Klasse. Als ich immer mehr Funktionen auch in IMAP_Folder gebraucht habe, wurde immer mehr Funktionen public. Und am Ende war das geühltes schlechtes Design, weil (fast) alles nur noch public war...

Geändert von Turamisi (20.02.2010 um 20:37 Uhr).
Turamisi 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
zugriff auf protected array in klasse djrace PHP Tipps 2009 9 27.07.2009 17:11
Bestimmten Seiten keinen Zugriff auf Homepage geben singu PHP Tipps 2009 13 20.01.2009 21:47
Zugriff auf aufrufende Klasse BlackWolf PHP Tipps 2008 17 04.12.2008 18:12
Methode einer anderen Klasse aufrufen Luka PHP-Fortgeschrittene 15 09.11.2008 14:19
[Erledigt] Bestimmten IP's Zugriff verweigern PTC Server, Hosting und Workstations 23 15.06.2008 10:43
Zugriff auf eine Klasse innerhalb einer Funktion -> Fehle PHP-Fortgeschrittene 23 05.02.2006 13:02
Zugriff nur wenn man von einer bestimmten Seite kommt sunset PHP Tipps 2005 5 23.04.2005 20:08
Zugriff auf einen bestimmten wert in einem Array PHP Tipps 2005 1 08.02.2005 18:09
Zugriff nur von bestimmten Ref´s erlauben... PHP Tipps 2004-2 1 22.11.2004 13:12
error: Zugriff auf protected variable aus extendet klasse PHP Tipps 2004 3 26.09.2004 23:39
Zugriff vom Popup auf andere Seite Neo2k3 PHP Tipps 2004 2 05.08.2004 20:51
wie ändere ich bei bestimmten Ereignissen meine Schriftfarbe HTML, Usability und Barrierefreiheit 7 04.08.2004 11:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
anderer zugreifen, http://www.php.de/software-design/64891-erledigt-nur-einer-bestimmten-klasse-zugriff-andere-klasse-erlauben.html, klassenzugriff, wie auf attribute der anderen klasse zugreifen, kapselung class php, klasse in klasse aufrufen, php funktion nur von bestimmter klasse, php nur bestimmte funktionen zulassen, klassenzugriff in php, imap php codeschnipsel, class zugriff auf private php, klasse nur in einer bestimmten klasse verwenden, php public nur für bestimmte klassen, zugriff auf eine andere klasse, php methode nur bestimmte klassen zulassen, php klasse anderer ordner, php nur mit klassen, php zugriff auf klasse anderer ordner, php klassenzugriff, bestimmten klassen zugriff erlauben

Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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