abstract class AbstractProcessor implements ProcessorInterface { protected mixed $data; // or properties.. protected mixed $processedData; public function getData(): void { $this->data = $this->_getData(/* db.. */); } public function processData(): void { $this->processedData = $this->_processData($this->data); } // similar methods abstract protected function _getData(/* args */): mixed; abstract protected function _processData(mixed $data): mixed; // etc }