public static function EasyRdf_Literal::create in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/easyrdf/easyrdf/lib/EasyRdf/Literal.php \EasyRdf_Literal::create()
Create a new literal object
PHP values of type bool, int or float, will automatically be converted to the corresponding datatype and PHP sub-class.
If a registered datatype is given, then the registered subclass of EasyRdf_Literal will instantiated.
Note that literals are not required to have a language or datatype. Literals cannot have both a language and a datatype.
Parameters
mixed $value The value of the literal or an associative array:
string $lang The natural language of the literal or null (e.g. 'en'):
string $datatype The datatype of the literal or null (e.g. 'xsd:integer'):
Return value
object EasyRdf_Literal (or subclass of EasyRdf_Literal)
4 calls to EasyRdf_Literal::create()
- EasyRdf_Graph::addLiteral in vendor/easyrdf/ easyrdf/ lib/ EasyRdf/ Graph.php 
- Add a literal value as a property of a resource
- EasyRdf_Graph::arrayToObject in vendor/easyrdf/ easyrdf/ lib/ EasyRdf/ Graph.php 
- Get an EasyRdf_Resource or EasyRdf_Literal object from an associative array. @ignore
- EasyRdf_Graph::checkValueParam in vendor/easyrdf/ easyrdf/ lib/ EasyRdf/ Graph.php 
- Check that a value parameter is valid, and convert it to an associative array if needed @ignore
- EasyRdf_Sparql_Result::newTerm in vendor/easyrdf/ easyrdf/ lib/ EasyRdf/ Sparql/ Result.php 
- Create a new EasyRdf_Resource or EasyRdf_Literal depending on the type of data passed in.
File
- vendor/easyrdf/ easyrdf/ lib/ EasyRdf/ Literal.php, line 79 
Class
- EasyRdf_Literal
- Class that represents an RDF Literal
Code
public static function create($value, $lang = null, $datatype = null) {
  if (EasyRdf_Utils::isAssociativeArray($value)) {
    if (isset($value['xml:lang'])) {
      $lang = $value['xml:lang'];
    }
    elseif (isset($value['lang'])) {
      $lang = $value['lang'];
    }
    if (isset($value['datatype'])) {
      $datatype = $value['datatype'];
    }
    $value = isset($value['value']) ? $value['value'] : null;
  }
  if (is_null($datatype) or $datatype === '') {
    if (is_null($lang) or $lang === '') {
      // Automatic datatype selection
      $datatype = self::getDatatypeForValue($value);
    }
  }
  elseif (is_object($datatype)) {
    $datatype = strval($datatype);
  }
  else {
    // Expand shortened URIs (qnames)
    $datatype = EasyRdf_Namespace::expand($datatype);
  }
  // Work out what class to use for this datatype
  if (isset(self::$datatypeMap[$datatype])) {
    $class = self::$datatypeMap[$datatype];
  }
  else {
    $class = 'EasyRdf_Literal';
  }
  return new $class($value, $lang, $datatype);
}