Самое близкое к тому, что вы просите - это закрытие (анонимная функция) в метод, которым вы хотите его ограничить. Замыкания недоступны за пределами того метода, в котором они определены. Они обычно используются для определения обратных вызовов и передаются другим методам, но вы можете вызвать их напрямую.
class Methods{
function b(){
$a = function() {
return 'a';
}; // don't forget the trailing ';'
$a();
}
function c(){
$this->a(); // fails
}
}
Создание метода private или protected предотвратит его вызов из-за пределов класса, но не ограничит, какие методы внутри класса имеют к нему доступ. На каком-то уровне вы должны доверять своему коду, чтобы следовать правилам использования вашего API.
Классы - это, как правило, единичная инкапсуляция для доверия, и если вы сделаете метод закрытым для использования извне и задокументируете его, вы должны быть уверены, что он используется должным образом из класса. Если нет, возможно, этот класс стал слишком большим, и пришло время провести рефакторинг.
Как упоминает @Sjoerd, вы также можете проверить стек вызовов, но согласитесь с @Mark Baker, что в этом нет особой ценности; это похоже на злоупотребление языком и делает ваш код беспорядочным.