# Net::LDAP::Schema - phpMan

## NAME
    [Net::LDAP::Schema] - Load and manipulate an LDAP v3 Schema

## SYNOPSIS
     use [Net::LDAP];
     use [Net::LDAP::Schema];

     #
     # Read schema from server
     #
     $ldap = [Net::LDAP]->new ( $server );
     $ldap->bind ( );
     $schema = $ldap->schema ( );

     #
     # Load from LDIF
     #
     $schema = [Net::LDAP::Schema]->new;
     $schema->parse ( "schema.ldif" ) or die $schema->error;

## DESCRIPTION
    "[Net::LDAP::Schema]" provides a means to load an LDAP schema and query it
    for information regarding supported objectclasses, attributes and
    syntaxes.

## METHODS
    Where a method is stated as taking the 'name or OID' of a schema item
    (which may be an object class, attribute or syntax) then a
    case-insensitive name or raw OID (object identifier, in dotted numeric
    string form, e.g. 2.5.4.0) may be supplied.

    Each returned item of schema (e.g. an attribute definition) is returned
    in a HASH. The keys in the returned HASH are lowercase versions of the
    keys read from the server. Here's a partial list (not all HASHes define
    all keys) although note that RFC 4512 permits other keys as well:

     name
     desc
     obsolete
     sup
     equality
     ordering
     substr
     syntax
     single-value
     collective
     no-user-modification
     usage
     abstract
     structural
     auxiliary
     must
     may
     applies
     aux
     not
     oc
     form

    all_attributes ( )
    all_ditcontentrules ( )
    all_ditstructurerules ( )
    all_matchingrules ( )
    all_matchingruleuses ( )
    all_nameforms ( )
    all_objectclasses ( )
    all_syntaxes ( )
        Returns a list of all the requested types in the schema.

    attribute ( NAME )
    ditcontentrule ( NAME )
    ditstructurerule ( NAME )
    matchingrule ( NAME )
    matchingruleuse ( NAME )
    nameform ( NAME )
    objectclass ( NAME )
    syntax ( NAME )
        Returns a reference to a hash, or "undef" if the schema item does
        not exist. "NAME" can be a name or an OID.

         $attr_href = $schema->attribute( "attrname" );

    dump ( )
        Dump the raw schema information to standard out.

    dump ( FILENAME )
        Dump the raw schema information to a file.

         $result = $schema->dump ( "./schema.dump" );

        If no schema data is returned from directory server, the method will
        return undefined. Otherwise a value of 1 is always returned.

    error ( )
        Returns the last error encountered when parsing the schema.

    may ( OBJECTCLASS )
        Given an argument which is the name or OID of a known object class,
        returns a list of HASHes describing the attributes which are
        optional in the class.

          @may = $schema->may ( $oc );
          # First optional attr has the name '$may[0]->{name}'

    must ( OBJECTCLASS )
        Given an argument which is the name or OID of a known object class,
        returns a list of HASHes describing the attributes which are
        mandatory in the class.

          @must = $schema->must ( $oc );

    parse ( MESG )
    parse ( ENTRY )
    parse ( FILENAME )
        Takes a single argument which can be any of, a message object
        returned from an LDAP search, a "[Net::LDAP::Entry]" object or the
        name of a file containing an LDIF form of the schema.

        If the argument is a message result from a search,
        "[Net::LDAP::Schema]" will parse the schema from the first entry
        returned.

        Returns true on success and "undef" on error.

    superclass ( NAME )
        Given an argument which is the name or OID of a known objectclass,
        returns the list of names of the immediate superclasses.

    attribute_syntax ( NAME )
        Given an attribute name, return the actual syntax taking into
        account attribute supertypes.

    matchingrule_for_attribute ( NAME, RULE )
        Given an attribute name and a matching rule ("equality", "substr",
        etc), return the actual rule taking into account attribute
        supertypes.

## SEE ALSO
    [Net::LDAP], [Net::LDAP::RFC]

## AUTHORS
    Graham Barr <<gbarr@pobox.com>> John Berthels <<jjb@nexor.co.uk>>

    Please report any bugs, or post any suggestions, to the perl-ldap
    mailing list <<perl-ldap@perl.org>>.

## COPYRIGHT
    Copyright (c) 1998-2004 Graham Barr. All rights reserved. This program
    is free software; you can redistribute it and/or modify it under the
    same terms as Perl itself.

