Existe-t-il un moyen en PHP5 de n'autoriser qu'une certaine classe ou un ensemble de classes à appeler une fonction particulière? Par exemple, disons que j'ai trois classes ("Foo", "Bar" et "Baz"), toutes avec des méthodes nommées de la même manière, et je veux que Bar puisse appeler Foo::foo()
mais refuser à Baz la possibilité de faire cet appel :PHP5: restreindre l'accès à la fonction à certaines classes
class Foo {
static function foo() { print "foo"; }
}
class Bar {
static function bar() { Foo::foo(); print "bar"; } // Should work
}
class Baz {
static function baz() { Foo::foo; print "baz"; } // Should fail
}
Foo::foo(); // Should also fail
Il n'y a pas nécessairement l'héritage entre les Foo, Bar et Baz, donc l'utilisation de protected
ou modificateurs similaires ne seront pas aider; cependant, les méthodes ne sont pas forcément statiques (je les ai donc faites ici pour la simplicité de l'exemple).
Ce n'est pas un développeur C++, mais après avoir lu (brièvement) à propos des classes d'amis, cela ressemble exactement au comportement que je recherche. Dépression qu'il n'y a pas d'équivalent PHP. – Tim