Variable in Klasse

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

  • Variable in Klasse

    Hi,

    doofes Thema, aber ich frag einfach mal:
    Kann ich mir eine externe Variable in eine Klasse reinholen?

    Die Klasse beginnt so:
    PHP-Code:
    class Thumbnailer {
        
    ######### Eigenschaften der Klasse/des Objekts
        
    var $ersetzen true
        var 
    $image_ext = array("gif","jpg","jpeg","png","wbmp"); 
        var 
    $image_dir "/srv/www/.../html/.../"
        var 
    $thumb_dir "/srv/www/.../html/.../"
    Ich hole mir den Pfad ab sofort dynamisch aus einer Datenbank, wo er gespeichert wird. Habe also eine Variable $xy = "/srv/www.../" die ich hier integrieren möchte, statt der bisherigen Insellösung. Da man das auch eigentlich nicht macht hab ich mir sowas nie angeschaut und nun steh ich da und stinke... finde aber keinen anderen Weg...

    Danke für die Hilfe,
    Achim Appel

  • #2
    Übergib die Variable dem Konstruktor, der ihren Wert dann einer Klassenvariable zuweist.
    Oder schreibe einen Setter für die Klassenvariable.

    Kommentar


    • #3
      Unter setter versteht man eine Funktion die einfach nur eine Klassenvariable setzt und sonst nix tut (auch nix returned)....

      Natürlich gäbe es noch die Möglichkeit mit global oder $GLOBALS zu arbeiten, aber das wäre absolut unsauber und auch nicht zu empfehlen. Am besten über den Konstruktor setzen
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        Ok, über den Konstruktor übergeben hieße dann...?

        Aufruf:

        PHP-Code:
        // $ROOTPATH aus der Datenbank geholt = "/srv/www/../"

        include 'class.thumbn.php';

        $objekt = New Thumbnailer($ROOTPATH); 
        Klasse:
        PHP-Code:
        class Thumbnailer {
            
            var 
        $ersetzen true
            var 
        $image_ext = array("gif","jpg","jpeg","png","wbmp"); 
            var 
        $image_dir $path.'/html/.../images/'
            var 
        $thumb_dir $path.'/html/.../thumbs/'

        // Übergabe der Variable an den Konstruktor
        function Thumbnailer($ROOTPATH)
        {
          var 
        $path $ROOTPATH;
          return 
        $path;

        Ist es so richtig?

        Kommentar


        • #5
          fast ... aus
          PHP-Code:
            var $path $ROOTPATH
          machst du
          PHP-Code:
          var $this->path $ROOTPATH;
          // oder auch
          var $this->path = & $ROOTPATH
          und returnen musst du im constructor auch nichts.



          im classen-header scheibst du noch
          PHP-Code:
           var $path '';
          // oder auch
          var $path null
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Parse error: parse error, unexpected T_VARIABLE

            PHP-Code:
            var $image_dir $path.'files/images/'
            var 
            $thumb_dir $path.'files/images/thumb/'
            Kann ich in einer Klasse nicht mit solchen variablen arbeiten?

            Danke
            Achim Appel

            Kommentar


            • #7
              doch. aber nicht in der definition der globalen class variablen. die anderen pathangaben musst du auch im constructor zuweisen.
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Kann ich es über den selben Weg machen? Sprich:

                PHP-Code:
                var $this->image_dir $path.'files/images/cache/'

                Kommentar


                • #9
                  wieder nur fast ....
                  PHP-Code:
                  var $this->image_dir $this->path.'files/images/cache/'
                  leider musst du halt alle anderen class variablen, welche von $path abhängen neu definieren. anders geht es nicht.

                  was dich aber nicht daran hindert, mir zwei werten in den anderen methoden zu arbeiten. oder ein eigene methode zu erstellen, die beide werte verbunden liefert

                  PHP-Code:
                  function getImagePath() {
                    return 
                  $this->path.$this->image_dir;

                  in den anderen methode erhälst du den path dann über
                  PHP-Code:
                  $this->getImagePath() 
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Mist, soweit komme ich gar nicht zum testen, denn wenn die Zeilenagabe stimmt, bei parse error, unexpected T_VAR , dann wäre das

                    PHP-Code:
                    var $this->path $ROOTPATH
                    in dem Konstruktor:
                    PHP-Code:
                        function Thumbnailer($ROOTPATH) {
                            var 
                    $this->path = & $ROOTPATH;

                    Bitte nicht "wieder nur fast..."


                    Ich dank dir für deine Hilfe,
                    der verzweifelte...
                    Achim Appel
                    Zuletzt geändert von AchimAppel; 09.08.2006, 22:03.

                    Kommentar


                    • #11
                      Original geschrieben von AchimAppel
                      Bitte nicht "wieder nur fast..."
                      ne ... schrott

                      machen wir mal ein komplettes beispiel:
                      PHP-Code:
                      class Thumbnailer {
                          
                          var 
                      $ersetzen true
                          var 
                      $image_ext = array("gif","jpg","jpeg","png","wbmp"); 
                          var 
                      $path=NULL;
                          var 
                      $image_dir NULL
                          var 
                      $thumb_dir NULL

                      // Übergabe der Variable an den Konstruktor
                      function Thumbnailer($ROOTPATH)
                      {
                        
                      $this->path $ROOTPATH;
                        
                      $this->image_dir$this->path.'/html/.../images/';
                         
                      // oder
                        
                      $this->image_dir$ROOTPATH.'/html/.../images/';
                        ... 
                      etc pp

                      jetzt klarer?
                      Kissolino.com

                      Kommentar


                      • #12
                        Ey so schrott wars gar nicht, nur die "var.." war falsch

                        Tausend dank euch allen!!

                        Heut nacht mal keine php albträume

                        Kommentar

                        Lädt...
                        X