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 )