13 810
правок
Изменения
Новая: == Название == Filter::AutoImport — фильтр для автообъявления часто используемых переменных в методах. == Как н...
== Название ==
Filter::AutoImport — фильтр для автообъявления часто используемых переменных в методах.
== Как надо использовать Filter::AutoImport ==
<source lang="perl">
use Filter::AutoImport qw($www $self->www $cfg $self->www->config);
</source>
или
<source lang="perl">
use Filter::AutoImport -file_size_limit => 0x1000000, qw($www $self->www $cfg $self->www->config);
</source>
Определяются только те переменные, которые нужны, и только в методах — то есть, функциях, использующих символ $self (обычно my $self = shift).
Также можно помнить о том, что последний переданный набор описаний переменных запоминается фильтром, что удобно использовать в подклассах базового класса. То есть, в базовом классе передаём qw($www $self->www $cfg $self->www->config), и все дочерние при сначала use base 'Parent', а потом use Filter::AutoImport получат все те же описания.
== Как НЕ надо использовать Filter::AutoImport ==
Вот так делать не надо (FIXME):
<source lang="perl">
use Filter::AutoImport qw($www $self->www $config $www->config);
</source>
Потому что на данный момент межимпортные зависимости не отслеживаются.
Ещё нужно понимать, что если символ, используемый в подстановке, в функции будет определён с более ограниченной областью видимости, чем вся функция, то и импорт попадёт в ту же область видимости.
Также, очевидно, неразумно делать подстановочные выражения дающими побочные эффекты, потому что, строго говоря, порядок их подстановки не определён, хотя и гарантируется, что выражение будет подставлено после определения всех символов, в нём использумых.
== Зависимости ==
Фильтр основан на использовании библиотеки {{CPAN|PPI}}. Также требуются модули {{CPAN|Filter::Util::Call}}, {{CPAN|Carp}} и {{CPAN|Scalar::Util}}.
[[Категория:Perl]]
[[Категория:Разработка]]
Filter::AutoImport — фильтр для автообъявления часто используемых переменных в методах.
== Как надо использовать Filter::AutoImport ==
<source lang="perl">
use Filter::AutoImport qw($www $self->www $cfg $self->www->config);
</source>
или
<source lang="perl">
use Filter::AutoImport -file_size_limit => 0x1000000, qw($www $self->www $cfg $self->www->config);
</source>
Определяются только те переменные, которые нужны, и только в методах — то есть, функциях, использующих символ $self (обычно my $self = shift).
Также можно помнить о том, что последний переданный набор описаний переменных запоминается фильтром, что удобно использовать в подклассах базового класса. То есть, в базовом классе передаём qw($www $self->www $cfg $self->www->config), и все дочерние при сначала use base 'Parent', а потом use Filter::AutoImport получат все те же описания.
== Как НЕ надо использовать Filter::AutoImport ==
Вот так делать не надо (FIXME):
<source lang="perl">
use Filter::AutoImport qw($www $self->www $config $www->config);
</source>
Потому что на данный момент межимпортные зависимости не отслеживаются.
Ещё нужно понимать, что если символ, используемый в подстановке, в функции будет определён с более ограниченной областью видимости, чем вся функция, то и импорт попадёт в ту же область видимости.
Также, очевидно, неразумно делать подстановочные выражения дающими побочные эффекты, потому что, строго говоря, порядок их подстановки не определён, хотя и гарантируется, что выражение будет подставлено после определения всех символов, в нём использумых.
== Зависимости ==
Фильтр основан на использовании библиотеки {{CPAN|PPI}}. Также требуются модули {{CPAN|Filter::Util::Call}}, {{CPAN|Carp}} и {{CPAN|Scalar::Util}}.
[[Категория:Perl]]
[[Категория:Разработка]]