Tom: Array zufällig ausgeben und ausgegeben Werte merken - so?

Beitrag lesen

Hello,

<?php
class Colors
{
    private $_serFileName = "myColorsShuffled.ser";

***** Warum die Farben hart codieren in der Klasse?
***** besser wäre es, sie ebenfalls im Datenfile zu halten.
***** sie sind ja nicht "gottgegeben", wie "Ja/Nein", Monatsliste (in einer Sprache), usw.

private $_colors = array("blau", "rot", "grün", "schwarz");

private $_colorsShuffled = array();
    private $_nextColor = "";

public function __construct() {
        if(!file_exists($this->_serFileName)) {

***** Tocttou-Fehler! *****

$this->_createNewShuffledFile();

***** Verstümmelungsgefahr *****

}
        $this->_read();
    }
    private function _createNewShuffledFile() {
        $this->_colorsShuffled = $this->_colors;
        shuffle($this->_colorsShuffled);
        $this->_write();
    }

***** Tocttou-Fehler! ******

private function _write() {
        file_put_contents($this->_serFileName, serialize($this->_colorsShuffled));
    }
    private function _read() {
        $this->_colorsShuffled = unserialize(file_get_contents($this->_serFileName));

***** fehlende Fehlerbehandlung. unserialize() könnte false liefern.
***** file_get_contents() könnte auch schon einen Fehler werfen und false liefern

}

***** file_put_contents() und file_get_contents() lassen sich nicht atomar binden
***** sind daher ungeeignet für datenverändernde Operationen im Konkurrenz-Umfeld

public function getNext() {
        //~ var_dump($this->_colorsShuffled);
        if (count($this->_colorsShuffled) === 0) {
            $this->_createNewShuffledFile();
        }
        $actualColor = array_shift($this->_colorsShuffled);
        $this->_write();
        return $actualColor;
    }
};

$myColors = new Colors();
echo $myColors->getNext();

  
  
Geschachtelte Funktionen sind "i-bäh", wenn man eigentlich diskrete Fehlerbehandlung betreiben muss, also die Fehler von Funktionen einzeln auswerten muss, weil sie ggf. reparierbar sind.  
  
  
  
  
  
Liebe Grüße aus dem schönen Oberharz  
  
  
Tom vom Berg  
![](http://selfhtml.bitworks.de/Virencheck.gif)  
  

-- 
 ☻\_  
/▌  
/ \ Nur selber lernen macht schlau  
<http://bikers-lodge.com>
0 59

Array zufällig ausgeben und ausgegeben Werte merken

Sinje
  • php
  1. 0
    Siri
    • programmiertechnik
  2. 0
    Melvin Cowznofski
    1. 0
      Tom
      1. 0
        Tom
      2. 0
        Melvin Cowznofski
        1. 0
          Tom
    2. 0

      Glossar: "auskommentieren"

      Der Martin
      • programmiertechnik
      1. 0
        Matthias Apsel
    3. 0
      Matthias Apsel
      1. 0
        Melvin Cowznofski
  3. 0
    Tom
    1. 0
      Sinje
      1. 0
        Tom
  4. 0

    Ticken PHP-Programmierer anders?

    Siri
    1. 0
      Matthias Apsel
      1. 0
        Siri
        1. 0

          PHP tickt anders - wie eigentlich jede Programmiersprache

          dedlfix
          1. 0
            Siri
            1. 0
              dedlfix
    2. 0
      Tom
      1. 0
        Siri
        1. 0
          tami
          1. 0
            Tom
        2. 0
          Tom
          1. 0
            Sinje
            1. 0
              Tom
  5. 0
    Claudius L.
    1. 0
      tami
      1. 0
        Claudius L.
    2. 0
      Tom
      1. 0
        Tom
      2. 0
        Claudius L.
        1. 0
          Tom
          1. 0
            Claudius L.
            1. 0
              Tom
            2. 0
              tami
              1. 0
                tami
                1. 0

                  Wirksames File-Locking geht anders!

                  Tom
                  1. 0
                    tami
                    1. 0
                      Tom
                      1. 0
                        tami
                        1. 0

                          gehst Du eine Test-Wette mit mir ein?

                          Tom
                          • menschelei
                          1. 0
                            tami
                            1. 0

                              Und wer testet jetzt?

                              Tom
                              1. 0
                                tami
                                1. 0
                                  Tom
                                  1. 0
                                    Matthias Apsel
                                    1. 0

                                      neue Artikel anlegen, Namen finden

                                      Tom
                                      • selfhtml-wiki
                                      1. 0
                                        Matthias Apsel
                                        1. 0
                                          Tom
                                          1. 0
                                            Matthias Apsel
                                            1. 0
                                              tami
                                  2. 0

                                    Und wer testet jetzt? -> mit SQL?

                                    Gaby
                                    • datenbank
                                    1. 0
                                      Tom
              2. 0
                Tom
  6. 0

    Array zufällig ausgeben und ausgegeben Werte merken - so?

    tami
    1. 0
      Tom
  7. 1
    Tom