ClassLoader
view release on metacpan or search on metacpan
slides/classloader_wiki.txt view on Meta::CPAN
==== Zweck ====
<[center]
Lade Klassen automatisch, wenn sie benötigt werden
[center]>
==== Klassisches Laden ====
<[code][basicstyle=\tiny]
#!/usr/local/bin/perl
use strict;
use warnings;
use Sbit;
use Sbit::I18n;
use Sbit::Function;
use Sbit::Web::Cgi;
use Sbit::Web::Browser;
use Sbit::Web::Session;
use Sbit::Web::Html::Form;
use Sbit::Web::Html::Popup;
use Sbit::Web::Html::Progress;
use Sbit::Web::Html::Subpage;
use Sbit::Web::Html::Table;
use Sbit::Web::Html::Widget;
use Sbit::Dbms::Database;
use Sbit::Dbms::Table;
use Sbit::Image::Gd;
use Sbit::Image::Magick;
use Sbit::Plot::Diagram;
use Sbit::Plot::Diagram::Colorbar;
use Sbit::Io::Import;
use Sbit::Io::Export;
use Sbit::Exception;
# ...noch mehr Module
# das Programm
...
[code]>
==== Automatisches Laden ====
<[code][basicstyle=\tiny]
#!/usr/local/bin/perl
use strict;
use warnings;
use ClassLoader;
# das Programm
...
[code]>
==== Vorteile ====
* keine use-Aufrufe mehr schreiben
* Klassen werden erst geladen, wenn sie benötigt werden
* die Startzeit des Programms verkürzt sich
* ggf. weniger Speicherbedarf
==== Zeitpunkt des Ladens ====
Wann wird eine Klasse "benötigt"? \pause
Antwort: Beim ersten Methodenaufruf.
==== Klassenmethode ====
<[block]{Aufruf einer Klassenmethode}
<[code]
my $obj = My::Class->new; # loads My/Class.pm
[code]>
[block]>
==== Objektmethode ====
<[block]{Aufruf einer Objektmethode}
<[code][numbers=left]
my $obj = bless {a=>1, b=>2},'My::Class';
my $val = $obj->get('a'); # loads My/Class.pm
[code]>
[block]>
==== Voraussetzungen für Autoladbarkeit ====
Klasse ist nach Perl-Konventionen implementiert, d.h.
# jede Klasse in einem eigenen Modul (.pm-Datei)
( run in 1.278 second using v1.01-cache-2.11-cpan-39bf76dae61 )