GNU.WIKI: The GNU/Linux Knowledge Base

  [HOME] [PHP Manual] [HowTo] [ABS] [MAN1] [MAN2] [MAN3] [MAN4] [MAN5] [MAN6] [MAN7] [MAN8] [MAN9]

  [0-9] [Aa] [Bb] [Cc] [Dd] [Ee] [Ff] [Gg] [Hh] [Ii] [Jj] [Kk] [Ll] [Mm] [Nn] [Oo] [Pp] [Qq] [Rr] [Ss] [Tt] [Uu] [Vv] [Ww] [Xx] [Yy] [Zz]


NAME

       Mason::Interp - Mason Interpreter

SYNOPSIS

           my $interp = Mason->new(
               comp_root => '/path/to/comps',
               data_dir  => '/path/to/data',
               ...
           );
           my $output = $interp->run( '/request/path', foo => 5 )->output();

DESCRIPTION

       Interp is the central Mason object, returned from "Mason->new". It is
       responsible for creating new requests, compiling components, and
       maintaining the cache of loaded components.

PARAMETERS TO THE new() CONSTRUCTOR

       allow_globals (varnames)
           List of one or more global variable names that will be available in
           all components, like $m is by default.

               allow_globals => [qw($dbh)]

           As in any programming environment, globals should be created
           sparingly (if at all) and only when other mechanisms (parameter
           passing, attributes, singletons) will not suffice.
           Catalyst::View::Mason2, for example, creates a $c global set to the
           context object in each request.

           Set the values of globals with set_global.

       autobase_names
           Array reference of autobase filenames to check in order when
           determining a component's superclass. Default is "["Base.mp",
           "Base.mc"]".

       autoextend_request_path
           Whether to automatically add the top level extensions (by default
           ".mp" and ".mc") to the request path when searching for a matching
           page component. Defaults to true.

       class_header
           Perl code to be added at the top of the compiled class for every
           component, e.g. to bring in common features or import common
           methods. Default is the empty string.

               # Add to the top of every component class:
               #   use Modern::Perl;
               #   use JSON::XS qw(encode_json decode_json);
               #
               my $mason = Mason->new(
                   ...
                   class_header => qq(
                       use Modern::Perl;
                       use JSON::XS qw(encode_json decode_json);
                   ),
               );

           This is used by Mason::Compilation::output_class_header.  For more
           advanced usage you can override that method in a subclass or
           plugin.

       comp_root
           Required. The component root marks the top of your component
           hierarchy and defines how component paths are translated into real
           file paths. For example, if your component root is
           /usr/local/httpd/docs, a component path of /products/sales.mc
           translates to the file /usr/local/httpd/docs/products/sales.mc.

           This parameter may be either a single path or an array reference of
           paths. If it is an array reference, the paths will be searched in
           the provided order whenever a component path is resolved, much like
           Perl's @INC.

       component_class_prefix
           Prefix to use in generated component classnames. Defaults to 'MC'
           plus the interpreter's count, e.g. MC0. So a component '/foo/bar'
           would get a classname like 'MC0::foo::bar'.

       data_dir
           The data directory is a writable directory that Mason uses for
           various features and optimizations: for example, component object
           files and data cache files.  Mason will create the directory on
           startup if necessary.

           Defaults to a temporary directory that will be cleaned up at
           process end. This will hurt performance as Mason will have to
           recompile components on each run.

       dhandler_names
           Array reference of dhandler file names to check in order when
           resolving a top-level path. Default is "["dhandler.mp",
           "dhandler.mc"]". An empty list disables this feature.

       index_names
           Array reference of index file names to check in order when
           resolving a top-level path. Default is "["index.mp", "index.mc"]".
           An empty list disables this feature.

       no_source_line_numbers
           Do not put in source line number comments when generating code.
           Setting this to true will cause error line numbers to reflect the
           real object file, rather than the source component.

       object_file_extension
           Extension to add to the end of object files. Default is ".mobj".

       plugins
           A list of plugins and/or plugin bundles:

               plugins => [
                 'OnePlugin',
                 'AnotherPlugin',
                 '+My::Mason::Plugin::AThirdPlugin',
                 '@APluginBundle',
                 '-DontLikeThisPlugin',
               ]);

           See Mason::Manual::Plugins.

       out_method
           Default out_method passed to each new request.

       pure_perl_extensions
           A listref of file extensions of components to be considered as pure
           perl (see Pure Perl Components). Default is "['.mp']". If an empty
           list is specified, then no components will be considered pure perl.

       static_source
           True or false, default is false. When false, Mason checks the
           timestamp of the component source file each time the component is
           used to see if it has changed.  This provides the instant feedback
           for source changes that is expected for development.  However it
           does entail a file stat for each component executed.

           When true, Mason assumes that the component source tree is
           unchanging: it will not check component source files to determine
           if the memory cache or object file has expired.  This can save many
           file stats per request. However, in order to get Mason to recognize
           a component source change, you must touch the
           static_source_touch_file.

           We recommend turning this mode on in your production sites if
           possible, if performance is of any concern.

       static_source_touch_file
           Specifies a filename that Mason will check once at the beginning of
           every request when in static_source mode. When the file timestamp
           changes (indicating that a component has changed), Mason will clear
           its in-memory component cache and recheck existing object files.

       top_level_extensions
           A listref of file extensions of components to be considered "top
           level", accessible directly from "$interp->run" or a web request.
           Default is "['.mp', '.mc']". If an empty list is specified, then
           there will be no restriction; that is, all components will be
           considered top level.

CUSTOM MASON CLASSES

       These parameters specify alternate classes to use instead of the
       default Mason:: classes.

       For example, to use your own Compilation base class:

           my $interp = Mason->new(base_compilation_class => 'MyApp::Mason::Compilation', ...);

       Relevant plugins, if any, will applied to this class to create a final
       class, which you can get with

           $interp->compilation_class

       base_code_cache_class
           Specify alternate to Mason::CodeCache

       base_compilation_class
           Specify alternate to Mason::Compilation

       base_component_class
           Specify alternate to Mason::Component

       base_component_moose_class
           Specify alternate to Mason::Component::Moose

       base_component_class_meta_class
           Specify alternate to Mason::Component::ClassMeta

       base_component_import_class
           Specify alternate to Mason::Component::Import

       base_request_class
           Specify alternate to Mason::Request

       base_result_class
           Specify alternate to Mason::Result

PUBLIC METHODS

       all_paths ([dir_path])
           Returns a list of distinct component paths under dir_path, which
           defaults to '/' if not provided.  For example,

              $interp->all_paths('/foo/bar')
                 => ('/foo/bar/baz.mc', '/foo/bar/blargh.mc')

           Note that these are all component paths, not filenames, and all
           component roots are searched if there are multiple ones.

       comp_exists (path)
           Returns a boolean indicating whether a component exists for the
           absolute component path.

       count
           Returns the number of this interpreter, a monotonically increasing
           integer for the process starting at 0.

       flush_code_cache
           Empties the component cache and removes all component classes.

       glob_paths (pattern)
           Returns a list of all component paths matching the glob pattern.
           e.g.

              $interp->glob_paths('/foo/b*.mc')
                 => ('/foo/bar.mc', '/foo/baz.mc')

           Note that these are all component paths, not filenames, and all
           component roots are searched if there are multiple ones.

       load (path)
           Returns the component object corresponding to an absolute component
           path, or undef if none exists. Dies with an error if the component
           fails to load because of a syntax error.

       object_dir
           Returns the directory containing component object files.

       run ([request params], path, args...)
           Creates a new Mason::Request object for the given path and args,
           and executes it. Returns a Mason::Result object, which is generally
           accessed to get the output. e.g.

               my $output = $interp->run('/foo/bar', baz => 5)->output;

           The first argument may optionally be a hashref of request
           parameters, which are passed to the Mason::Request constructor.
           e.g. this tells the request to output to standard output:

               $interp->run({out_method => sub { print $_[0] }}, '/foo/bar', baz => 5);

       set_global (varname, value)
           Set the global varname to value. This will be visible in all
           components loaded by this interpreter. The variables must be on the
           allow_globals list.

               $interp->set_global('$scalar', 5);
               $interp->set_global('$scalar2', $some_object);

           See also set_global.

MODIFIABLE METHODS

       These methods are not intended to be called externally, but may be
       useful to modify with method modifiers in plugins and subclasses. Their
       APIs will be kept as stable as possible.

       is_pure_perl_comp_path ($path)
           Determines whether $path is a pure Perl component - by default,
           uses pure_perl_extensions.

       is_top_level_comp_path ($path)
           Determines whether $path is a valid top-level component - by
           default, uses top_level_extensions.

       modify_loaded_class ( $compc )
           An opportunity to modify loaded component class $compc (e.g. add
           additional methods or apply roles) before it is made immutable.

       write_object_file ($object_file, $object_contents)
           Write compiled component $object_contents to $object_file. This is
           an opportunity to modify $object_contents before it is written, or
           $object_file after it is written.

SEE ALSO

       Mason

AUTHOR

       Jonathan Swartz <swartz@pobox.com>

COPYRIGHT AND LICENSE

       This software is copyright (c) 2012 by Jonathan Swartz.

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



  All copyrights belong to their respective owners. Other content (c) 2014-2018, GNU.WIKI. Please report site errors to webmaster@gnu.wiki.
Page load time: 0.085 seconds. Last modified: November 04 2018 12:49:43.