getDebugInstance()->output(sprintf("[%s:%d] Konstruktor erreicht.
\n", __CLASS__, __LINE__ )); // Bezeichnung setzen $this->setPartDescr("Schiff"); // Array-Objekt generieren $this->createStructuresArray(); // Instanz entfernen $this->removePartInstance(); $this->removeNumberFormaters(); } // Konstruktor aufrufen public function constructor ($class) { $this->__construct($class); } // Array-Objekt anlegen private function createStructuresArray () { $this->structures = new FrameworkArrayObject(); } // Schiffsteil generieren (kann alles sein) // buildInstance = Das was in das Schiffsteil evtl. eingebaut werden soll (null = kein besonderes Teil einbauen!) // partClass = Das zu konstruierende Schiffsteil public function createShipPart (ConstructableShipPart $buildInstance, $partClass) { if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s erhält ein neues Schiffsteil (%s).
\n", __CLASS__, __LINE__, $this->getShipName(), $partClass )); // Ist die gewuenschte Klasse vorhanden? if (class_exists($partClass)) { // Befehl zusammenbauen $eval = sprintf("\$partInstance = %s::create%s();", $partClass, $partClass ); // Debug-Meldung ausgeben if ((defined('DEBUG_EVAL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Konstruierte PHP-Anweisung:
%s

\n", __CLASS__, __LINE__, htmlentities($eval) )); // ... und ausfuehren eval($eval); } else { // Nicht vorhanden, dann Ausnahme werfen! throw new ClassNotFoundException($partClass, 0); } // Das Einbauen versuchen... try { $partInstance->addShipPartToShip($this, $buildInstance); } catch (MotorShipMismatchException $e) { if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s hat keinen Motor erhalten! Grund: %s
\n", __CLASS__, __LINE__, $this->getShipName(), $e->getMessage() )); return false; } catch (RoomShipMismatchException $e) { if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s hat keinen Maschinenraum erhalten! Grund: %s
\n", __CLASS__, __LINE__, $this->getShipName(), $e->getMessage() )); return false; } catch (StructureShipMismatchException $e) { if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s hat keine Aufbauten erhalten! Grund: %s
\n", __CLASS__, __LINE__, $this->getShipName(), $e->getMessage() )); return false; } catch (CabinShipMismatchException $e) { if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s hat keine Kabine erhalten! Grund: %s
\n", __CLASS__, __LINE__, $this->getShipName(), $e->getMessage() )); return false; } catch (DeckShipMismatchException $e) { if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s hat kein Deck erhalten! Grund: %s
\n", __CLASS__, __LINE__, $this->getShipName(), $e->getMessage() )); return false; } catch (ExceptionNotChangedException $e) { if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Eine Exception wurde nicht geändert. Details: %s
\n", __CLASS__, __LINE__, $e->getMessage() )); return false; } catch (ExceptionNotFoundException $e) { if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Eine Exception wurde nicht gefunden. Details: %s
\n", __CLASS__, __LINE__, $e->getMessage() )); return false; } // Instanz im Aufbauten-Array vermerken $this->structures->append($partInstance); // Debug-Meldung ausgeben if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das Schiff %s hat das Schiffsteil %s eingebaut bekommen.
\n", __CLASS__, __LINE__, $this->getShipName(), $partInstance->getPartDescr() )); // Alles klar! return true; } // Getter-Methode fuer Strukturen-Array public function getStructuresArray () { return $this->structures; } // STUB: Getter-Methode Anzahl Betten public function calcTotalBeds () { $this->getDebugInstance()->output("[%s:%d] Stub! Anzahl Betten erreicht.
\n"); return 0; } // Setter-Methode fuer Schiffsnamen public function setShipName ($shipName) { // Cast the string $shipName = (string) $shipName; // Debug message if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das neue Schiff vom Typ %s wird auf den Namen %s getauft.
\n", __CLASS__, __LINE__, $this->__toString(), $shipName )); // Set ship name $this->shipName = $shipName; } // Getter-Methode fuer Schiffsnamen public function getShipName () { if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das %s ist auf den Namen %s getauft worden.
\n", __CLASS__, __LINE__, $this->__toString(), $this->shipName )); return $this->shipName; } // Setter-Methode fuer Tiefgang public function setDraught ($draught) { if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das %s mit dem Namen %s hat einen Tiefgang von %sm.
\n", __CLASS__, __LINE__, $this->__toString(), $this->shipName, $draught )); $this->draught = (int) $draught; } // Getter-Methode fuer Tiefgang public function getDraught() { if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Der Tiefgang des Schiffes %s wurde angefordert.
\n", __CLASS__, __LINE__, $this->shipName )); return $this->draught; } // Setter-Methode fuer Anzahl Anker public function setNumAnchor ($numAnchor) { if ((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Das %s mit dem Namen %s hat %s Anker.
\n", __CLASS__, __LINE__, $this->__toString(), $this->shipName, $numAnchor )); $this->numAnchor = (int) $numAnchor; } } // [EOF] ?>