<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->

<phpdoc:classref xml:id="class.ds-hashable" xmlns:phpdoc="http://php.net/ns/phpdoc" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">

 <title>The Hashable interface</title>
 <titleabbrev>Ds\Hashable</titleabbrev>

 <partintro>

<!-- {{{ Ds\Hashable intro -->
  <section xml:id="ds-hashable.intro">
   &reftitle.intro;
   <para>
        Hashable is an interface which allows objects to be used as keys.
        It’s an alternative to <function>spl_object_hash</function>,
        which determines an object’s hash based on its handle:
        this means that two objects that are considered equal by an implicit
        definition would not treated as equal because they are not the same instance.
   </para>
   <para>
        <function>hash</function> is used to return a scalar value to be used as
        the object's hash value, which determines where it goes in the hash table.
        While this value does not have to be unique, objects which are equal must
        have the same hash value.
    </para>
    <para>
        <function>equals</function> is used to determine if two objects are equal.
        It's guaranteed that the comparing object will be an instance of the same class
        as the subject.
    </para>

  </section>
<!-- }}} -->

  <section xml:id="ds-hashable.synopsis">
   &reftitle.interfacesynopsis;

<!-- {{{ Synopsis -->
   <classsynopsis class="interface">
    <oointerface><interfacename>Ds\Hashable</interfacename></oointerface>

    <classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
    <xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.ds-hashable')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[not(@role='procedural')])" />
   </classsynopsis>
<!-- }}} -->

  </section>

 </partintro>

 &reference.ds.ds.entities.hashable;

</phpdoc:classref>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
