/** * Generic method wrapping datatype's fromString() method if implemented * Checks if fromString() is implemented in the field's datatype * If not, data_text will be used by default * @see http://projects.ez.no/sqliimport/forum/issues/two_little_thing * @param string $data String representation of data to inject * @return void */ public function fromString($data) { $datatype = $this->attribute->attribute('data_type_string'); $fromStringImplemented = null; // First check if datatype is already known as implementing fromString() or not // (Better performance as the check is made through Reflection API) if (in_array($datatype, self::$datatypesFromStringImpl)) { $fromStringImplemented = true; } else { if (in_array($datatype, self::$datatypesFromStringNotImpl)) { $fromStringImplemented = false; } else { $reflector = new ReflectionObject($this->attribute->dataType()); $callerClass = $reflector->getMethod('fromString')->class; if ($callerClass == 'eZDataType') { self::$datatypesFromStringNotImpl[] = $datatype; $fromStringImplemented = false; } else { self::$datatypesFromStringImpl[] = $datatype; $fromStringImplemented = true; } } } // Now insert data through the appropriate way if ($fromStringImplemented) { $this->attribute->fromString($data); } else { $this->attribute->setAttribute('data_text', $data); } }
public function createObject(ezpDatatypeTestDataSet $dataSet) { static $counter = 0; $this->object = new ezpObject($this->class->identifier, 2); $this->object->title = "{$this->datatype} test #" . ++$counter; $dataMap = $this->object->dataMap(); $this->attribute = $dataMap[$this->attributeIdentifier]; try { $attribute = $this->attribute->fromString($dataSet->fromString); } catch (PHPUnit_Framework_Error_Notice $e) { self::fail("A notice has been thrown when calling fromString: " . $e->getMessage()); } $this->object->publish(); }