Schrift
[thread]7084[/thread]

richtig private Methoden: geht das?

Leser: 1


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
pktm
 2005-06-28 19:49
#55788 #55788
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich würde gerne private Methoden ähnlich wie in Java erstellen.

Die Namenskonvention mit dem Blank vorm Methodennamen habe ich schon umgesetzt, aber das schützt mich nicht vom Zugriff von außen.

Kann man es irgendwie einrichten private Methoden zu schreiben, die man nicht von außerhab aufrufen kann?

Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
package Test;
...
sub _privat {
# mach was
}
...
1;

package main;
...
my $t = Test->new();
$t->_privat(); # geht bislang, sollte aber nicht!


Könnte man eventuell erzwingen dass das Modul objektorientiert benutzt werden muss und die Methode nur innerhalb des Moduls nicht-objektorientiert aufrufen?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
GwenDragon
 2005-06-28 19:56
#55789 #55789
User since
2005-01-17
14510 Artikel
Admin1
[Homepage]
user image
Private Funktionen gibt es in Perl nicht. Jeder, der den Code ansehen kann, kann darin auch die Funktionen z. B. durch MyModule::___thisisprivate() aufrufen
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

Strat
 2005-06-28 19:59
#55790 #55790
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
man koennte hoechstens was mit coderefs drehen, aber nur haesslich...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
GwenDragon
 2005-06-28 20:03
#55791 #55791
User since
2005-01-17
14510 Artikel
Admin1
[Homepage]
user image
[quote=Strat,28.06.2005, 17:59]man koennte hoechstens was mit coderefs drehen, aber nur haesslich...[/quote]
Du meinst die closures?
Ja, aber da dann später zu pflegen.
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

Strat
 2005-06-28 20:10
#55792 #55792
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
das waere auch eine moeglichkeit; ich meinte eher ueber autoload+caller|isa+coderefs... aber sowas will man einfach nicht machen...\n\n

<!--EDIT|Strat|1119975089-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Gast Gast
 2005-06-28 20:16
#55793 #55793
Ich hab' das meist so gelöst, dass ich eine Funktion schrieb, die den vor-vorigen Caller holt und das Package mit dem des Vorigen vergleicht. Aufgerufen hab ich's dann meist einfach mittels
Code: (dl )
is_private ();
Heromaster
 2005-06-28 21:38
#55794 #55794
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Tie::SecureHash solltest Du Dir mal anschauen. Damit kannst Du einfach private Methoden erstellen, die dann nur innerhalb der eigenen Klasse aufgerufen werden können.\n\n

<!--EDIT|Heromaster|1119995572-->
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
pq
 2005-06-28 22:25
#55795 #55795
User since
2003-08-04
12207 Artikel
Admin1
[Homepage]
user image
[quote=phaylon,28.06.2005, 18:16]Ich hab' das meist so gelöst, dass ich eine Funktion schrieb, die den vor-vorigen Caller holt und das Package mit dem des Vorigen vergleicht. Aufgerufen hab ich's dann meist einfach mittels
Code: (dl )
is_private ();
[/quote]
aber vorsicht mit caller, den kann man auch überlisten, zumindest was das package angeht.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Gast Gast
 2005-06-29 00:12
#55796 #55796
Kann man ja. Wenn das aber ein Kunde macht, der einfach mehr Sicherheit in in der Hinsicht in der Entwicklung haben wollte, isser selbst schuld ;)

Es hindert ja auch keinen etwas daran, etwas rauszupatchen.
esskar
 2005-06-29 01:07
#55797 #55797
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=phaylon,28.06.2005, 22:12]Kann man ja. Wenn das aber ein Kunde macht, der einfach mehr Sicherheit in in der Hinsicht in der Entwicklung haben wollte, isser selbst schuld ;)[/quote]
naja, dann könnte man auch die _ variante nehmen, oder?
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2005-06-28 19:49.