La méthode la plus proche de ce que vous demandez est closure (aka anonymous function)au sein de la méthode que vous souhaitez restreindre. Les fermetures ne sont pas accessibles en dehors de la méthode dans laquelle elles sont définies. Elles sont généralement utilisées pour définir des rappels et transmises à d'autres méthodes, mais vous pouvez les appeler directement.
class Methods{
function b(){
$a = function() {
return 'a';
}; // don't forget the trailing ';'
$a();
}
function c(){
$this->a(); // fails
}
}
Faire une méthode privée ou protégés va l'empêcher d'être appelé à l'extérieur de la classe, mais ne limiteront pas les méthodes à l'intérieur de la classe ont accès. À un certain niveau, vous devez faire confiance à votre code pour suivre les règles d'utilisation de votre API.
Les classes sont généralement l'encapsulation d'unités pour l'approbation et si vous rendez la méthode privée d'utilisation extérieure, et que vous la documentez, vous devriez être en mesure de croire qu'elle est utilisée correctement à l'intérieur de la classe. Sinon, peut-être que cette classe est devenue trop grande et il est temps de refactoriser.Comme l'indique @Sjoerd, vous pouvez également inspecter la pile des appels, mais être d'accord avec @ Baker pour dire qu'il n'y a pas ou peu de valeur à cela; Cela s'apparente à un abus de langage et fait de votre code un gâchis.
Non (vilains hacks exclus). Et pourquoi voudriez-vous ça de toute façon? Qu'est-ce que vous essayez d'accomplir? – Artefacto
OK Je vais prendre une autre route, étant donné que le consensus général est que cette idée suce ... – Ash
Si 'c()' ne devrait pas appeler 'a()' ne pas invoquer dans 'c()' – Gordon