original_string: final public function get($property) {
          if (!static::has_property($property)) {
              throw new coding_exception('Unexpected property \'' . s($property) .'\' requested.');
          }
          $methodname = 'get_' . $property;
          if (method_exists($this, $methodname)) {
              return $this->$methodname();
          }
          return $this->raw_get($property);
      }
code: final public function get($property) {
          if (!static::has_property($property)) {
              throw new coding_exception('Unexpected property \'' . s($property) .'\' requested.');
          }
          $methodname = 'get_' . $property;
          if (method_exists($this, $methodname)) {
              return $this->$methodname();
          }
          return $this->raw_get($property);
      }
code_tokens: final public function get ( $ property ) { if ( ! static :: has_property ( $ property ) ) { throw new coding_exception ( 'Unexpected property \'' . s ( $ property ) . '\' requested.' ) ; } $ methodname = 'get_' . $ property ; if ( method_exists ( $ this , $ methodname ) ) { return $ this -> $ methodname ( ) ; } return $ this -> raw_get ( $ property ) ; }
docstring: Data getter.
  
  This is the main getter for all the properties. Developers can implement their own getters (get_propertyname)
  and they will be called by this function. Custom getters can use raw_get to get the raw value.
  Internally this is not used by {@link self::to_record()} or
  {@link self::from_record()} because the data is not expected to be validated or changed when reading/writing
  raw records from the DB.
  
  @param  string $property The property name.
  @return mixed
docstring_tokens: Data getter .