| 226 | 1 package IMPL::Web::Application::ResourceContract; | 
|  | 2 use strict; | 
|  | 3 use IMPL::lang qw(:declare); | 
|  | 4 use IMPL::declare { | 
|  | 5 	base => [ | 
|  | 6 	   'IMPL::Object' => undef | 
|  | 7 	] | 
|  | 8 }; | 
|  | 9 | 
|  | 10 BEGIN { | 
|  | 11 	public property operations => PROP_ALL; | 
|  | 12 	private property _namedResources => PROP_ALL; | 
|  | 13 	private property _regexpResources => PROP_ALL; | 
|  | 14 } | 
|  | 15 | 
|  | 16 1; | 
|  | 17 | 
|  | 18 __END__ | 
|  | 19 | 
|  | 20 =pod | 
|  | 21 | 
|  | 22 =head1 NAME | 
|  | 23 | 
|  | 24 C<IMPL::Web::Application::ResourceContract> - описание ресурса | 
|  | 25 | 
|  | 26 =head1 SYNIOSIS | 
|  | 27 | 
|  | 28 =begin code | 
|  | 29 | 
|  | 30 use IMPL::require { | 
|  | 31 	ResourceContract => 'IMPL::Web::Application::ResourceContract', | 
|  | 32 	OperationContract => 'IMPL::Web::Application::OperationContract' | 
|  | 33 }; | 
|  | 34 | 
|  | 35 my $contract = ResourceContract->new( | 
|  | 36     operations => { | 
|  | 37     	get => OperationContract->new( | 
|  | 38             bind => sub { | 
|  | 39                 return "Hello!"; | 
|  | 40             } | 
|  | 41         ) | 
|  | 42     }, | 
|  | 43     resources => [ | 
|  | 44         { | 
|  | 45         	name => 'info', | 
|  | 46         	bind => sub { | 
|  | 47         		return $_[0]->model->info; | 
|  | 48         	}, | 
|  | 49         	contract => ResourceContract->new( | 
|  | 50         	   get => OperationContract->new( | 
|  | 51         	       bind => sub { | 
|  | 52         	       	   my ($resource,$model) = @_; | 
|  | 53         	       	   return $model; # or the same: $resource->model; | 
|  | 54         	       } | 
|  | 55         	   ) | 
|  | 56         	) | 
|  | 57         } | 
|  | 58     ] | 
|  | 59 ) | 
|  | 60 | 
|  | 61 =end code | 
|  | 62 | 
|  | 63 =head1 DESCRIPTION | 
|  | 64 | 
|  | 65 =cut |