/**
  * Setter function for string type.
  */
 protected function setString($property, $value, $nullable = false)
 {
     if ($value === null) {
         if ($nullable) {
             $this->{$property} = null;
         } else {
             $this->warn("Null value given for '{$property}' property. Expected a string. Property not changed.");
         }
     } else {
         try {
             $value = LoggerOptionConverter::toStringEx($value);
             $this->{$property} = LoggerOptionConverter::substConstants($value);
         } catch (Exception $ex) {
             $value = var_export($value, true);
             $this->warn("Invalid value given for '{$property}' property: [{$value}]. Expected a string. Property not changed.");
         }
     }
 }
 public function testSubstituteConstants()
 {
     define('OTHER_CONSTANT', 'OTHER');
     define('MY_CONSTANT', 'TEST');
     define('NEXT_CONSTANT', 'NEXT');
     $result = LoggerOptionConverter::substConstants('Value of key is ${MY_CONSTANT}.');
     self::assertEquals('Value of key is TEST.', $result);
     $result = LoggerOptionConverter::substConstants('Value of key is ${MY_CONSTANT} or ${OTHER_CONSTANT}.');
     self::assertEquals('Value of key is TEST or OTHER.', $result);
     $result = LoggerOptionConverter::substConstants('Value of key is ${MY_CONSTANT_CONSTANT}.');
     self::assertEquals('Value of key is DEFINE.', $result);
     $result = LoggerOptionConverter::substConstants('Value of key is ${MY_CONSTANT_CONSTANT} or ${MY_CONSTANT_CONSTANT_OTHER}.');
     self::assertEquals('Value of key is DEFINE or DEFINE_OTHER.', $result);
 }