php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 27-06-2008, 02:02
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard Klassen, die sich gegenseitig brauchen?!

Hey,
hab' mal ne Frage: Ist es möglich 2 oder mehr Klassen iwie so zu definieren, das sie sich gegnseitig benutzen können?

PHP-Code:
class demo1 {
function 
doThis () {
$demo = new demo2;
$demo->doThat();
}
}

class 
demo2 {
function 
doThat () {
$demo = new demo1;
$demo->doThis();
}

Ist das irgendwie möglich?

lg
__________________
--> Micronax <--
Mit Zitat antworten
  #2 (permalink)  
Alt 27-06-2008, 02:10
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard


Kannst du die Fragestellung mal etwas konkretisieren und am besten auch an einem Beispiel erläutern? Es mag ja an der Uhrzeit liegen, aber mit deiner Frage kann ich absolut nichts anfangen Mal davon abgesehen, dass du doch ein funktionierendes Beispiel geliefert hast.

Grüße
Mit Zitat antworten
  #3 (permalink)  
Alt 27-06-2008, 04:31
BugBite
 Member
Links : Onlinestatus : BugBite ist offline
Registriert seit: May 2006
Beiträge: 299
BugBite ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
class Eins{
   private 
$_objZwo;
   
   public function 
Eins(){
       
$_objZwo = new Zwo($this);
   }

   public function 
doAnything(){
       return 
$_objZwo->toString();
   }
}

class 
Zwo{
   
   private 
$_objEins;
   
   public function 
Zwo($obj_eins){
      
$this->_objEins $obj_eins;
   }

   public function 
doAnythingToo(){
      return 
$_objEins->doAnything();
   }


aber generell würd ich mal oop grundlagen lernen
Mit Zitat antworten
  #4 (permalink)  
Alt 27-06-2008, 08:52
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ähm ... das ist doch zirkelbezug und nicht erlaubt.
Mit Zitat antworten
  #5 (permalink)  
Alt 27-06-2008, 10:17
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Das Beispiel von micronax macht vielleicht noch Sinn, BugBites Beispiel ist aber, wie asp2php schon sagt, Käse. Aber was genau willst du jetzt eigentlich wissen @TO?
Mit Zitat antworten
  #6 (permalink)  
Alt 27-06-2008, 12:57
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard

Ich schreibe meine neuen Webapplications jetzt objektorientiert. Ich habe dann zum Beispiel eine Klasse, mit der man auf die Nutzerdaten zugreifen kann, eine für das WhoIsOnlineSystem und eine zum auswerten von was weiß ich.. Bewegungsprofilen in der Website..

Die Klassen stehen in verschiedenen Dateien. Jede in ihrer eigenen. Die Klassen werden alle von einer bestimmten Datei geladen (Das ganz ist eine Art "Framework") Diese Datei wird dann von den einzelnen Projekten included.

so werden die Dateien mit den klassen etwa geladen:

PHP-Code:
require("accounting.php");
$accounting = new accounting();

require(
"whoisonline.php");
$whoisonline= new whoisonline();

require(
"misc.php");
$misc= new misc();

require(
"analysis.php");
$analysis= new analysis(); 
Das Problem ist jetzt, das die Klasse whoisonline auch Account und Analysedaten erfassen soll, also die jeweiligen Klassen braucht. Aber andere Klassen wie z.B. Accounting brauchen auch Daten bzw Funktionen aus der whoisonline.

Das Problem ist ja, die Klasse Accounting wird ja vor der Klasse whoisonline geladen und initialisiert, daher sind die funktionen der whoisonline zu dem zeitpunkt noch nicht verfügbar.

Ich will jetzt auch nicht alles immer so schreiben müssen, das alles in der perfekten Reihenfolge ist.. das geht nämlich nicht.

Gibt es also irgendeine Möglichkeit, das Klassen praktisch alle gleichzeitig geladen werden oder sie sich (vllt durch caching) auch auf erst später initialisierte klassen beziehen können?

lg

fabi
__________________
--> Micronax <--
Mit Zitat antworten
  #7 (permalink)  
Alt 27-06-2008, 13:54
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Wieso nicht so:

PHP-Code:
require("accounting.php");
require(
"whoisonline.php");

$accounting = new accounting();

$whoisonline= new whoisonline();
$whoisonline->accounting $accounting;
$accounting->whoisonline $whoisonline
Oder direkt über ein Registry-Pattern:
PHP-Code:
class whoisonline {
    public function 
tuIrgendwasMitAccounting() {
        
$accounting Application::getRegisteredObject'accounting' );
    }
}

// Initialisierung:
$accounting = new accounting();
Application::registerObject$accounting'accounting' ); 
Mit Zitat antworten
  #8 (permalink)  
Alt 27-06-2008, 14:14
BugBite
 Member
Links : Onlinestatus : BugBite ist offline
Registriert seit: May 2006
Beiträge: 299
BugBite ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
<?php
    error_reporting
(E_ALL);
    
    class 
Eins{
   private 
$_objZwo;
   
   public function 
Eins(){
       
$this->_objZwo = new Zwo($this);
   }

   public function 
doAnything(){
       return 
$this->_objZwo;
   }
   
   public function 
__toString(){
       
   return 
"geht auch";
   }
}

class 
Zwo{
   
   private 
$_objEins;
   
   public function 
Zwo($obj_eins){
      
$this->_objEins $obj_eins;
   }

   public function 
doAnythingToo(){
      return (string)
$_objEins->doAnything();
   }
   
   public function 
__toString(){
       
   return 
"geht doch".$this->_objEins;
   }

}

$eins = new Eins();
      
echo 
$eins->doAnything();

?>
getestet und funktioniert einwandfrei

andere technologien können und machen das auch O.o

edit:
und warum sollte er eine "whoisonline" klasse erstellen??
$accounting->getUsers(); bzw $accounting->getOnlineUsers();


Geändert von BugBite (27-06-2008 um 14:41 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 27-06-2008, 21:50
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Hatte gar nicht gesehen, dass du dem Zwo-Konstruktor eine Eins-Instanz übergibst. So geht's natürlich auch

Habe so das leichte Gefühl, der TO ist noch nicht so geübt in der OOP und hat einfach ein etwas unstrukturiertes Klassenkonzept.
Mit Zitat antworten
  #10 (permalink)  
Alt 27-06-2008, 21:57
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

OffTopic:
hat sich halt bisher mehr auf hochsicherheits-konzepte spezialisiert.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #11 (permalink)  
Alt 28-06-2008, 00:05
martin2
 Registrierter Benutzer
Links : Onlinestatus : martin2 ist offline
Registriert seit: May 2005
Ort: Duisburg
Beiträge: 79
martin2 ist zur Zeit noch ein unbeschriebenes Blatt
martin2 eine Nachricht über Skype™ schicken
Standard

PHP-Code:
require("accounting.php");
$accounting = new accounting();

require(
"whoisonline.php");
$whoisonline= new whoisonline();

require(
"misc.php");
$misc= new misc();

require(
"analysis.php");
$analysis= new analysis(); 

vieleicht solltst du dich mal mit autoload beschäftigen
__________________
<?php echo "ad astra"; ?>
www.utopiafuture.de
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:41 Uhr.