# SOAP::Schema - phpMan

## NAME
    [SOAP::Schema] - provides an umbrella for the way in which [SOAP::Lite]
    manages service description schemas

## DESCRIPTION
    This class provides an umbrella for the way in which [SOAP::Lite] manages
    service description schemas. Currently, the only support present is for
    the Web Services Description Language (WSDL). This is another of the
    classes not generally designed to be directly instantiated by an
    application, though it can be if so desired.

## METHODS
    new(optional key/value pairs)
            $schema = [SOAP::Schema]->new(parse => $schema_uri);

        This is the class constructor. With no arguments, it creates a blank
        object of the class. Any arguments that are passed are treated as
        key/value pairs in which the key represents one of the methods
        described here, and the value is what gets passed when the method
        itself gets invoked.

    parse(service description URI)
            $schema->parse('<http://schemas.w3.org/soap.wsdl>');

        Parses the internal representation of the service description prior
        to the generation of stub routines to provide method-like access to
        the remote services.

    access(service description URI)
            $schema->access('<http://soap.org/service.wsdl>');

        Loads the specified service description from the given URL, using
        the current value of the schema accessor if none is provided. The
        full content of the URL is returned on success, or an exception is
        thrown (via "die") on error.

    load
            $schema->load;

        Takes the internal representation of the service and generates code
        stubs for the remote methods, allowing them to be called as local
        object methods. Stubs are generated for all the functions declared
        in the WSDL description with this call because it's enough of a
        class framework to allow for basic object creation for use as
        handles.

    schema
            $current_schema = $schema->schema;

        Gets (or sets) the current schema representation to be used by this
        object. The value to be passed when setting this is just the URI of
        the schema. This gets passed to other methods such as access for
        loading the actual content.

    services
            $hashref = $schema->services;

        Gets or sets the services currently stored on the object. The
        services are kept as a hash reference, whose keys and values are the
        list of returned values from the WSDL parser. Keys represent the
        names of the services themselves (names have been normalized into
        Perl-compatible identifiers), with values that are also hash
        references to the internal representation of the service itself.

    stub
        Returns the autogenerated Perl code as a string. This code is
        generated from the WSDL provided by the "service" method call. The
        code contains a package definition for the service being called.

            my $client = [SOAP::Lite]->new;
            my $code = $client->service($WSDL_URL)->stub;
            open FILE,">ServicePackage.pm";
            print FILE $code;
            close FILE;

    cache_dir
        Sets/retrieves the value of the directory where generated stubs will
        be cached. If "cache_dir" is null, then no caching will be
        performed.

            my $client = [SOAP::Lite]->new;
            my $code = $client->cache_dir("/tmp")->service($WSDL_URL)->stub;

        If "cache_dir" is undefined, no caching will take place.

    cache_ttl
        Sets/retrieves the value of the time to live (in seconds) for cached
        files. This is only relevant when used in conjunction with
        "cache_dir".

        If "cache_ttl" is set to 0, the cache will never expire. Files will
        have to be removed manually in order for the cache to be refreshed.

            my $client = [SOAP::Lite]->new;
            my $code = $client->[cache_ttl(3600)]->cache_dir("/tmp")->service($WSDL_URL)->stub;

        The default time to live is 0.

    useragent([LWP::UserAgent])
            my $client = [SOAP::Lite]->new;
            $ua = $client->schema->useragent;
            $ua->agent("Fubar! 0.1");
            my $response = $client->service("<http://localhost/some.wsdl>")
                                  ->someMethod("Foo");

        Gets or sets the classes UserAgent used for retrieving schemas over
        the web. This allows users to have direct access to the UserAgent so
        that they may control the credentials passed to a remote server, or
        the specific configuration of their HTTP agent.

[SOAP::Schema::WSDL]
    At present, the [SOAP::Lite] toolkit supports only loading of service
    descriptions in the WSDL syntax. This class manages the parsing and
    storing of these service specifications. As a general rule, this class
    should be even less likely to be used directly by an application because
    its presence should be completely abstracted by the previous class
    ([SOAP::Schema]). None of the methods are defined here; the class is only
    mentioned for sake of reference.

## ACKNOWLEDGEMENTS
    Special thanks to O'Reilly publishing which has graciously allowed
    [SOAP::Lite] to republish and redistribute large excerpts from
    *Programming Web Services with Perl*, mainly the [SOAP::Lite] reference
    found in Appendix B.

## COPYRIGHT
    Copyright (C) 2000-2004 Paul Kulchenko. All rights reserved.

    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

## AUTHORS
    Paul Kulchenko (<paulclinger@yahoo.com>)

    Randy J. Ray (<rjray@blackperl.com>)

    Byrne Reese (<byrne@majordojo.com>)

