Что ж, самое простое решение - просто вызвать этот метод, прежде чем запускать метод, который нуждается в нем. Если вы не хотите запускать метод каждый раз, но только когда применяется какое-то внутреннее состояние вашего объекта, вы должны сделать
class Foo
{
protected $_someState = 'originalState';
public function runMeFirst()
{
// code ...
$this->_someState = 'changedState';
}
public function someMethod()
{
if(!$this->_someState === 'changedState') {
$this->runMeFirst();
}
// other code ...
}
}
Пока метод и состояние, которые необходимо проверить и вызвать, находятся внутри того же класса, что и метод, который вы хотите вызвать, описанное выше, вероятно, является лучшим решением. Как и в других местах, вы можете сделать проверку для someState отдельной функцией в классе, но это не является абсолютно необходимым. Я бы сделал это, только если бы мне пришлось проверять состояние из нескольких мест, чтобы предотвратить дублирование кода, например, необходимость писать одно и то же выражение if снова и снова.
Если вызов метода зависит от состояния внешнего объекта, у вас есть несколько вариантов. Пожалуйста, расскажите нам больше о сценарии в этом случае, так как он в некоторой степени зависит от варианта использования.