Fahrtenbuch genial!
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 08.11.2006, 23:06   #1
TP-Insider
 
Registriert seit: Jul 2004
Ort: Stuttgart
joextra ist auf einem guten Weg

php: "fremde" methode in klasse aufrufen


ich habe folgendes problem:
ich habe klasse x. die rufe ich anfang des programms auf mit zb $obj1 = new x;

wenn ich folgendes mache funktioniert es nicht
PHP-Code:
class {
  function 
blah() {
      
$obj1->blub();
  }

wenn ich es hingegen so schreibe schon
PHP-Code:
class {
  function 
blah() {
      
$obj1 = new x;
      
$obj1->blub();
  }

gibt es eine andere variante? wenn ich die klasse jedes mal neu aufrufen müsste, bei jeder anderen klasse, ist es ziemlich umständlich
ich hoffe ihr versteht wie ich es meine. besser kann ich das leider nicht ausdrücken
joextra ist offline   Mit Zitat antworten


Alt 09.11.2006, 00:01   #2
TP-Senior
 
Registriert seit: Oct 2006
Ort: Augsburg
webdepp macht sich hier sehr viel Mühe
Wenn du nur einmalig die andere Methode brauchst. das ganze ist hier natürlich statisch!
PHP-Code:
class myClassA { function myFuncA() {...} }

class 
myClassB
{
   function 
myFuncB()
   {
     
myClassA::myFuncA();
   }


Alternativ kannst du entweder die Methode als Eigenschaft des Objekts ablegen
PHP-Code:
class myClassA { function myFuncA() {...} }

class 
myClassB
{
   var 
$myObjectA null;
   function 
__constructor()
   {
     
$this->myObjectA = new myClassA;
   }

   function 
myFuncB()
   {
     
$this->myObjectA->myFuncA();
   }

Oder du könntest dir überlegen eine Art Funktionsbibliothek anzulegen...
Eventuell mit mehreren Klassen, je nach Anwendungsgebiet.
Was davon die richtige Möglichkeit für dich ist, kommt auf den speziellen Fall an - Das weisst du besser als wir

Gruß, Tobi
webdepp ist offline   Mit Zitat antworten
Alt 09.11.2006, 15:14   #3
TP-Insider
 
Registriert seit: Jul 2004
Ort: Stuttgart
joextra ist auf einem guten Weg
die methode wird mehrmals auch in verschiedenen anderen klassen benötigt. sie wird mit daten gefüllt die nicht verloren gehen sollten.
ich mache gleich zu anfang eine instanz der ersten klasse. diese sollte ich weiteren klassen aufgerufen und befüllt werden und zum schluss die daten auswerten.
mehtode 2 ist mmn zu umständlich. gibt es keine elegantere lösung?
joextra ist offline   Mit Zitat antworten
Alt 09.11.2006, 18:49   #4
TP-Senior
 
Registriert seit: Oct 2006
Ort: Augsburg
webdepp macht sich hier sehr viel Mühe
du initialisierst die erste klasse oben, und willst in anderen klassen darauf zugreifen ??

PHP-Code:
class {
  function 
blah() {
      
$obj1 = new x;
      
$obj1->blub();
  }

Ich sehe bei deinem Code nicht das Problem, guck dich da lieber mal nach syntax- und Logikfehlern um.

Alternativ könnte für dich vielleicht folgende URL interessant sein.
webdepp ist offline   Mit Zitat antworten
Alt 09.11.2006, 19:31   #5
TP-Insider
 
Registriert seit: Jul 2004
Ort: Stuttgart
joextra ist auf einem guten Weg
@webdepp
ich hab doch geschrieben das es so funktioniert.

das ding ist, das die klasse global gehalten werden muss, da diese von verschiedenen anderen klassen benötigt wird und die angesamelten daten nicht verloren gehen dürfen
joextra ist offline   Mit Zitat antworten
Alt 09.11.2006, 22:08   #6
TP-Supporter
 
Registriert seit: Feb 2005
Driver ist auf einem guten Weg
Du hast es ja schon fast selber gesagt:
PHP-Code:
class foo {
    function 
foo() {
    }
    function 
do_sth($var) {
        echo 
$var;
    }
}
$foo = new foo();
class 
bar {
    function 
bar() {
    }
    function 
do_sth_else($var) {
        global 
$foo;
        
$echo $foo->do_sth($var);
    }
}
$bar = new bar();
$bar->do_sth_else('foobar'
Ode hab ich das ganze Topic falsch verstanden?
Driver ist offline   Mit Zitat antworten
Alt 09.11.2006, 22:18   #7
TP-Insider
 
Registriert seit: Jul 2004
Ort: Stuttgart
joextra ist auf einem guten Weg
ich habe es jetzt mit $GLOBALS gelöst. ist vielleicht nicht die tollste art, aber es tut
joextra ist offline   Mit Zitat antworten
Alt 09.11.2006, 22:45   #8
TP-Veteran
 
Benutzerbild von manuelito
 
Registriert seit: Sep 2002
Ort: Winterthur
manuelito hilft, wo's gehtmanuelito hilft, wo's gehtmanuelito hilft, wo's geht
Hör dich mal nach dem Singleton Design Pattern um Oder schreib gleich ne Singleton-Registry wo du Objekte ablegst, die global benötigt werden und die nicht statisch sind.
__________________
Wer sabotiert eigentlich ständig meine Signatur?
manuelito ist offline   Mit Zitat antworten
Alt 09.11.2006, 23:06   #9
TP-Insider
 
Registriert seit: Jul 2004
Ort: Stuttgart
joextra ist auf einem guten Weg
:: hab ich schon probiert. die daten sind am schluss des kompletten scripts (und dazu gehört mehr als nur ein paar klassen) nicht mehr vorhanden. das geht leider nur mit globals
joextra ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
php: "fremde" methode in klasse aufrufen php: "fremde" methode in klasse aufrufen
« GD -> Gif-Transparenz rausfinden | OO Klasse loopen... Syntax verkehrt »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:33 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67