klassenübergreifend

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    soll heißen: alles was alle klassen können kann eine klasse

    weil:
    die klasse einfach neue objekte erzeugt
    und mit diesen kann wie gewohnt programmiert werden
    (innerhalb der Core klasse kann mit $this auf die objekte zu gegriffen werden, ich bring noch ein kleines beispiel)


    btw: wenn man wie immer arbeiten möschte einfach eine referenz erzeugen
    PHP-Code:
    $oCore = new Core();
    $oCore->newObject('oFoo''FooClass');
    $oFoo = &$oCore->oFoo;
    $oFoo->FooHu(); 

    Kommentar


    • #17
      hmm, das gefällt mir eigentlich ziemlich gut.

      frage ist nur: brauche ich das?


      ich kann ja in meiner klasse einfach

      $DB = new &db();

      machen und hab dann ne referenz.

      (klappt das überhaupt, oder muss ich

      $DB = new db();

      außerhalb der hauptklasse machen und dann in der klasse irgendwie ne referenz des Objektes

      $DBinclass = &$DB;

      erstellen?)


      Jedenfalls kann ich mit der Referenz ja in der Hauptklasse und auch außerhalb der Hauptklasse auf ein und dieselbe DB-Klasse zugreifen.

      Kommentar


      • #18
        attechment der zweite versuch (danke opera...)

        enthalten die zwei klassen und eine dritten 'FooClass' die das ganze veranschaulicht
        Angehängte Dateien

        Kommentar


        • #19
          man sollte (so ists von mir gedacht) nur innerhalb der hauptklasse ein objekt erzeugen (dort solls ja 'verwaltet' werden)

          will man das objekt ausserhalb der hauptklasse nutzen gibt es zwei möglichleiten

          1. einfach das objekt in der hauptklasse ansprechen oder
          2. eine referenz erzeugen, und über diese das objekt in der hauptklasse ansprechen

          Kommentar


          • #20
            solangsam macht mir die sache spass. ich hab zwar noch kein stück text, sondern alles nur überlegungen. aber ich steig so langsam dahinter.

            zum Verständnis:

            newObjekt macht ein neues Objekt in den "Pool"
            loadnewObObjekt läd zusätzlich die datei, für den fall das die datei noch nicht vorhanden ist.
            clearbbyobjekt schleißt eine instanz wieder raus, wenn sie nicht mehr gebraucht wird.
            getobjekts liefert ein array mit allen objekten.

            Kommentar


            • #21
              (OOP ist in PHP 'case sensitive' also drauf achten)

              loadnewObObjekt läd zusätzlich die datei, für den fall das die datei noch nicht vorhanden ist.
              zur zeit muss man da noch selbst drauf achten, aber danke für den tipp, wird gleich eingebaut ^^

              getobjekts liefert ein array mit allen objekten.
              naja es liefert ein array mit allen objektnamen (werden zum löschen gebraucht)

              sonst ist alles wunderbar angekommen

              und freut mich das es dir spass macht!

              Kommentar


              • #22
                denke du bereitest mir echt freude. *achtungwortwitz*

                loadnewObObjekt
                -> das war auch eigentlich so gemeint, dass man selbst entscheiden om man loadnewobjekt oder nur newobjekt nimmt. hatte auch überlegt, dass man das als eine machen kann, dass er selbst entscheidet, obs noch includet werden muss. aber is_includet() gibts ja nicht. Da du aber require_once() nimmst, denke ich ist es schon die lösung, oder? ist also fraglich ob man noch beide fks braucht.

                getobjekts()
                war eigentlich auch klar. bisschen undeutlich ausgedrückt. alle Objekte hat man ja schließlich in $oCore gespeichert.

                Meinst du nicht, man kann das in eine klasse packen? du verwendest irgendwo parent::xxx() statt dessen könnte man doch direkt $this->xxx() verwenden und sich die extends sache sparen, oder?
                Zuletzt geändert von TobiaZ; 25.05.2003, 16:23.

                Kommentar


                • #23
                  ich nehm include_once() weil es macht keine probleme in if-klauseln, so wie require_once() oder require()
                  es gibt ja get_declared_classes() welche ein array mit allen deklarierten klassen zurück gibt

                  hmmm und ja es geht auch mit nur einer klasse (hab mich wohl etwas zu stark an die vorlage gehalten...) -> ist bereits geändert

                  Kommentar


                  • #24
                    Dank dir, so far!

                    Ich werd mal sehen, dass ich das jetzt auch in eine klasse reinpacke.

                    meinst du es lohnt sich, vorher zu prüfen, ob die klasse da ist? es gibt ja auch noch class_exists(). Weil include_once() arbeitet ja so oder so nur ein mal.

                    Kommentar


                    • #25
                      damit braucht man nur noch die Core klasse (also extends ... löschen)
                      und es wird geprüft ob included werden muss

                      PHP-Code:
                                  function newObject($sNameOfObject$sNameOfClass$mParams NULL)
                                  {
                                      if(!
                      is_null($mParams))
                                          
                      $this->$sNameOfObject = new $sNameOfClass($mParams);
                                      
                      $this->$sNameOfObject = new $sNameOfClass;
                                      if(!isset(
                      $this->$sNameOfObject) | !is_object($this->$sNameOfObject))
                                          return 
                      false;
                                      
                      $this->aObjects[] = $sNameOfObject;
                                      return 
                      false;
                                  } 
                      // end of newObject()

                                  
                      function loadNewObject($sNameOfClassFile$sNameOfObject$sNameOfClass$mParams NULL)
                                  {
                                      if(!
                      class_exists($sNameOfClass))
                                          if(!include_once(
                      $sNameOfClassFile))
                                              return 
                      false;
                                      return 
                      $this->newObject($sNameOfObject$sNameOfClass$mParams);
                                  } 
                      // end of loadNewObject() 
                      ob sich das überprüfen lohnt , werd mich mal schlau machen, wie include_once arbeitet

                      Kommentar


                      • #26
                        meines wissen sollte include_ sowie require_once die jeweilige datei nur laden, wenn sie noch nicht geladen wurde. demnach sollten die funktion bereits ne überprüfung haben.
                        das ganze ist ja extra für die sache mit klassen und funktionen, damit man sachen nicht doppelt deklarieren kann.

                        Kommentar


                        • #27
                          aus dem PHP-manual:

                          include_once("a.php"); // bindet a.php ein
                          include_once("A.php"); // bindet a.php auf Windows nochmal ein!

                          also lohnsts sich doch ein klein wenig

                          Kommentar


                          • #28
                            also zumindest wenn man win-server im einsatz hat. ich denke ne if() wird schon nicht zu sehr auf die performance einsteigen.

                            Kommentar


                            • #29
                              Hmm, verstehe jetzt nur eins nicht mehr. wie könnte ich jetzt mit deiner Klasse von der einen klasse auf die nächste zugreifen. Also ziel ist es z.B. von der Klasse "Klausurplan" auf die Funktionen der DB-Klasse zuzugreifen, damit ich mir halt die DBabfragen sparen kann.

                              Kommentar


                              • #30
                                Original geschrieben von TobiaZ
                                Hmm, verstehe jetzt nur eins nicht mehr. wie könnte ich jetzt mit deiner Klasse von der einen klasse auf die nächste zugreifen. Also ziel ist es z.B. von der Klasse "Klausurplan" auf die Funktionen der DB-Klasse zuzugreifen, damit ich mir halt die DBabfragen sparen kann.
                                Der Sinn der OOP liegt ja darin auf den Objekten auch zu arbeiten. ALso erzeugts du einfach ein neues DB - Objekt mit "new" und kannst dann auf diesem Objekt die Methoden aufrufen. So arbeiten jedenfalls die meisten DB-Klassen die ich kenne.
                                Und ansonsten halt den static aufruf ...

                                Kommentar

                                Lädt...
                                X