code: def prepare(self):
      if self.model_ast.output_size > 1:
          print_code = PRINT_VECTOR
      else:
          print_code = PRINT_SCALAR
      executor_code = EXECUTOR_CODE_TPL.format(
          model_file=self.model_name, print_code=print_code
      )
  
      self.script_path = (
          self._resource_tmp_dir / f"{self.executor_name}.php"
      )
      utils.write_content_to_file(executor_code, self.script_path)
  
      model_code = self.interpreter.interpret(self.model_ast)
      model_file_name = (
          self._resource_tmp_dir / f"{self.model_name}.php"
      )
      utils.write_content_to_file(model_code, model_file_name)
  
file_path: m2cgen/tests/e2e/executors/php.py
imports: from m2cgen.assemblers import get_assembler_cls
  from m2cgen.interpreters import PhpInterpreter
  from tests import utils
  from tests.e2e.executors.base import BaseExecutor
label_desc: Use image node_id 3 for calling the PhpExecutor obj's underlying member method code with example usage: obj.prepare() without return types