* @version 0.0.0
* @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software
* @license GNU GPL 3.0 or any newer version
- * @link http://www.ship-simu.org
+ * @link http://www.ship-simu.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
class BaseShip extends BaseSimulator {
// Name des Shipes
private $structures = null;
// Namenloses Ship generieren
- private function __construct($class) {
+ protected function __construct($class) {
// Call parent constructor
- parent::constructor($class);
+ parent::__construct($class);
- // Beim Schiff angelangt
- if (((defined('DEBUG_SHIP')) || (defined('DEBUG_ALL'))) && (defined('DEBUG_CONSTRUCT')))
- $this->getDebugInstance()->output(sprintf("[%s:%d] Konstruktor erreicht.<br />\n",
- __CLASS__,
- __LINE__
- ));
+ // Set object description
+ $this->setObjectDescription("Allgemeines Schiff");
- // Bezeichnung setzen
- $this->setPartDescr("Schiff");
-
- // Array-Objekt generieren
+ // Prepare array object for all structures
$this->createStructuresArray();
- // Instanz entfernen
+ // Clean-up a little
$this->removePartInstance();
$this->removeNumberFormaters();
}
- /**
- * Calls the private constructor
- *
- * @param $class The class' name
- * @return void
- */
- public function constructor ($class) {
- $this->__construct($class);
- }
-
// Array-Objekt anlegen
private function createStructuresArray () {
- $this->structures = new FrameworkArrayObject();
+ $this->structures = new FrameworkArrayObject("FakedShipStructures");
}
// Schiffsteil generieren (kann alles sein)
// 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: <pre><em>%s</em></pre><br />\n",
- __CLASS__,
- __LINE__,
- htmlentities($eval)
- ));
-
- // ... und ausfuehren
- eval($eval);
+ // Get an instance back from our object factory
+ $partInstance = ObjectFactory::createObjectByName($partClass);
} else {
// Nicht vorhanden, dann Ausnahme werfen!
- throw new ClassNotFoundException($partClass, 0);
+ throw new ClassNotFoundException($partClass, self::EXCEPTION_CLASS_NOT_FOUND);
}
// Das Einbauen versuchen...
$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: <strong>%s</strong><br />\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: <strong>%s</strong><br />\n",
__CLASS__,
__CLASS__,
__LINE__,
$this->getShipName(),
- $partInstance->getPartDescr()
+ $partInstance->getObjectDescription()
));
// Alles klar!