Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Rose::DB::Object::MakeUseroContributed PeRose::DB::Object::MakeMethods::Std(3)

NAME
       Rose::DB::Object::MakeMethods::Std - Create object methods related to
       Rose::DB::Object::Std-derived objects.

SYNOPSIS
	 package Category;
	 our @ISA = qw(Rose::DB::Object::Std);
	 ...

	 package Color;
	 our @ISA = qw(Rose::DB::Object::Std);
	 ...

	 package Product;
	 our @ISA = qw(Rose::DB::Object);
	 ...

	 use Rose::DB::Object::MakeMethods::Std
	 (
	   object_by_id	=>
	   [
	     color => {	class => 'Color' },

	     category =>
	     {
	       class	 => 'Category',
	       id_method => 'cat_id',
	       share_db	 => 0,
	     },
	   ],
	 );

	 ...

	 $prod = Product->new(...);

	 $color	= $prod->color;

	 # $prod->color	call is	roughly	equivalent to:
	 #
	 # $color = Color->new(id => $prod->color_id,
	 #		       db => $prod->db);
	 # $ret	= $color->load;
	 # return $ret	unless($ret);
	 # return $color;

	 $cat =	$prod->category;

	 # $prod->category call	is roughly equivalent to:
	 #
	 # $cat	= Category->new(id => $prod->cat_id);
	 # $ret	= $cat->load;
	 # return $ret	unless($ret);
	 # return $cat;

DESCRIPTION
       "Rose::DB::Object::MakeMethods::Std" creates methods related to
       Rose::DB::Object::Std-derived objects.  It inherits from
       Rose::Object::MakeMethods.  See the Rose::Object::MakeMethods
       documentation to	learn about the	interface.  The	method types provided
       by this module are described below.

       All method types	defined	by this	module are designed to work with
       objects that are	subclasses of (or otherwise conform to the interface
       of) Rose::DB::Object.  In particular, the object	is expected to have a
       "db" method that	returns	a Rose::DB-derived object.  See	the
       Rose::DB::Object::Std documentation for more details.

METHODS	TYPES
       object_by_id
	   Create a get/set methods for	a single Rose::DB::Object::Std-derived
	   object loaded based on a primary key	stored in an attribute of the
	   current object.

	   Options
	       "class"
		   The name of the Rose::DB::Object::Std-derived class of the
		   object to be	loaded.	 This option is	required.

	       "hash_key"
		   The key inside the hash-based object	to use for the storage
		   of the object.  Defaults to the name	of the method.

	       "id_method"
		   The name of the method that contains	the primary key	of the
		   object to be	loaded.	 Defaults to the method	name
		   concatenated	with "_id".

	       "interface"
		   Choose the interface.  The only current interface is
		   "get_set", which is the default.

	       "share_db"
		   If true, the	"db" attribute of the current object is	shared
		   with	the object loaded.  Defaults to	true.

	   Interfaces
	       "get_set"
		   Creates a method that will attempt to create	and load a
		   Rose::DB::Object::Std-derived object	based on a primary key
		   stored in an	attribute of the current object.

		   If passed a single argument of undef, the "hash_key"	used
		   to store the	object is set to undef.	 Otherwise, the
		   argument is assumed to be an	object of type "class" and is
		   assigned to "hash_key" after	having its primary key set to
		   the corresponding value in the current object.

		   If called with no arguments and the "hash_key" used to
		   store the object is defined,	the object is returned.
		   Otherwise, the object is created and	loaded.

		   The load may	fail for several reasons.  The load will not
		   even	be attempted if	the primary key	attribute in the
		   current object is undefined.	 Instead, undef	will be
		   returned.  If the call to the newly created object's	"load"
		   method returns false, that false value is returned.

		   If the load succeeds, the object is returned.

	   Example:

	       package Category;
	       our @ISA	= qw(Rose::DB::Object::Std);
	       ...

	       package Color;
	       our @ISA	= qw(Rose::DB::Object::Std);
	       ...

	       package Product;
	       our @ISA	= qw(Rose::DB::Object);
	       ...

	       use Rose::DB::Object::MakeMethods::Std
	       (
		 object_by_id =>
		 [
		   color => { class => 'Color' },

		   category =>
		   {
		     class     => 'Category',
		     id_method => 'cat_id',
		     share_db  => 0,
		   },
		 ],
	       );

	       ...

	       $prod = Product->new(...);

	       $color =	$prod->color;

	       # $prod->color call is roughly equivalent to:
	       #
	       # $color	= Color->new(id	=> $prod->color_id,
	       #		     db	=> $prod->db);
	       # $ret =	$color->load;
	       # return	$ret  unless($ret);
	       # return	$color;

	       $cat = $prod->category;

	       # $prod->category call is roughly equivalent to:
	       #
	       # $cat =	Category->new(id => $prod->cat_id);
	       # $ret =	$cat->load;
	       # return	$ret  unless($ret);
	       # return	$cat;

AUTHOR
       John C. Siracusa	(siracusa@gmail.com)

LICENSE
       Copyright (c) 2010 by John C. Siracusa.	All rights reserved.  This
       program is free software; you can redistribute it and/or	modify it
       under the same terms as Perl itself.

perl v5.24.1			  2015-03Rose::DB::Object::MakeMethods::Std(3)

NAME | SYNOPSIS | DESCRIPTION | METHODS TYPES | AUTHOR | LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Rose::DB::Object::MakeMethods::Std&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help