comparison Lib/IMPL/Web/Application/Resource.pm @ 375:441e84031c7b

docs
author cin
date Fri, 10 Jan 2014 16:33:00 +0400
parents 6608db5dcb81
children 2287c72f303a
comparison
equal deleted inserted replaced
374:6608db5dcb81 375:441e84031c7b
82 82
83 my $children = $this->children 83 my $children = $this->children
84 or die NotFoundException->new( $this->location->url, $childId ); 84 or die NotFoundException->new( $this->location->url, $childId );
85 85
86 if (ref($children) eq 'HASH') { 86 if (ref($children) eq 'HASH') {
87 return $children->{$childId}; 87 if(my $child = $children->{$childId}) {
88 return $this->_isInvokable($child) ? $this->_invoke($child, $childId) : $child;
89 } else {
90 die NotFoundException->new( $this->location->url, $childId );
91 }
88 } elsif($this->_isInvokable($children)) { 92 } elsif($this->_isInvokable($children)) {
89 return $this->_invoke($children,$childId); 93 return $this->_invoke($children,$childId);
90 } else { 94 } else {
91 die OpException->new("Invalid resource description", $childId, $children); 95 die OpException->new("Invalid resource description", $childId, $children);
92 } 96 }
300 304
301 =end code 305 =end code
302 306
303 =head1 MEMBERS 307 =head1 MEMBERS
304 308
309 =head2 C<[get,set]verbs>
310
311 Хеш с C<HTTP> методами. При попытке вызова C<HTTP> метода, которого нет в этом
312 хеше приводит к исключению C<IMPL::Web::NotAllowedException>.
313
314 =head2 C<[get,set]access>
315
316 Метод для проверки прав доступа. Если не задан, то доспуп возможен для всех.
317
318 =head2 C<[get,set]children>
319
320 Дочерние ресурсы. Дочерние ресурсы могут быть описаны либо в виде хеша, либо
321 в виде метода.
322
323 =head3 C<HASH>
324
325 Данный хещ содержит в себе таблицу идентификаторов дочерних ресурсов и их
326 описаний.
327
328 Описание каждого ресурса представляет собой либо функцию, либо параметры для
329 создания ресурса C<CraeteChildResource>. Если описание в виде функции, то она
330 должна возвращать либо объект типа ресурс либо параметры для его создания.
331
332 =head3 C<CODE>
333
334 Если дочерние ресурсы описаны в виде функции (возможно использовать имя метода
335 класса текущего ресурса), то для получения дочернего ресурса будет вызвана
336 функция с параметрами C<($this,$childId)>, где C<$this> - текущий ресурс,
337 C<$childId> - идентификатор дочернего ресурса, который нужно вернуть.
338
339 Данная функция должна возвратить либо объект типа ресурс, либо ссылку на хеш с
340 параметрами для создания оного при помощи метода
341 C<CreateChildResource($params,$childId)>.
342
305 =head2 C<[virtual]Fetch($childId)> 343 =head2 C<[virtual]Fetch($childId)>
306 344
307 Метод для получения дочернего ресурса. 345 Метод для получения дочернего ресурса.
308 346
309 Возвращает параметры для создания дочернего ресурса, либо уже созданный ресурс. 347 Возвращает параметры для создания дочернего ресурса, либо уже созданный ресурс.
310 Создание дочернего ресурса происходит при помощи метода C<CreateChildResource()> 348 Создание дочернего ресурса происходит при помощи метода C<CreateChildResource()>
311 который добавляет недостающие параметры к возвращенным в данным методом и 349 который добавляет недостающие параметры к возвращенным в данным методом и
312 создает новый ресурс 350 создает новый ресурс
313 351
314 =head2 C<> 352 =head2 C<CreateChildResource($params,$id)>
353
354 Создает новый дочерний ресурс с указанным идентификатором и параметрами.
355 Автоматически заполняет параметры
356
357 =over
358
359 =item * C<parent>
360
361 =item * C<id>
362
363 =item * C<request>
364
365 =back
366
367 Тип создаваемого ресурса C<IMPL::Web::Application::Resource>, либо указывается
368 в параметре C<class>.
369
370 =head2 C<[virtual]HttpGet()>
371
372 Реализует C<HTTP> метод C<GET>. По-умолчанию возвращает модель.
373
374 Данный метод нужен для того, чтобы ресурс по-умолчанию поддерживал метод C<GET>,
375 что является самым частым случаем, если нужно изменить данное поведение, нужно:
376
377 =over
378
379 =item * Передать в параметр конструктора C<get> значение undef
380
381 =item * Переопределить метод C<HttpGet>
382
383 =item * При проверке прав доступа выдать исключение
384
385 =back
315 386
316 =cut 387 =cut
317 388