Using the API

Besides the usage via the modified debug exception handler and the console commands, there is also a public PHP API. It can be used to solve problems directly in PHP code.

class EliasHaeussler\Typo3Solver\ProblemSolving\Solver

Core component to solve problems by a given exception.

solve($exception)

Provide solution for given exception and format it according to the configured formatter. If a cached solution exists, the provider does not request a new solution.

Note

This method is basically described at Default solution.

Parameters
  • $exception (Throwable) -- Exception for which a solution is to provide.

Return type

string|null

solveStreamed($exception)

Provide formatted solution for given exception, but use a solution stream for each solution delta. This basically mimics the behavior of ChatGPT, where the solution is provided asynchronous.

Note

This method is basically described at Streamed solution.

Parameters
  • $exception (Throwable) -- Exception for which a solution is to provide.

Return type

Traversable<string>

Example

Create a new EliasHaeussler\Typo3Solver\ProblemSolving\Solver:

use EliasHaeussler\Typo3Solver;
use TYPO3\CMS\Core;

$configuration = Core\Utility\GeneralUtility::makeInstance(
    Typo3Solver\Configuration\Configuration::class,
);

// Use any supported formatter and provider
$formatter = Core\Utility\GeneralUtility::makeInstance(
    Typo3Solver\Formatter\WebFormatter::class,
);
$solutionProvider = Core\Utility\GeneralUtility::makeInstance(
    Typo3Solver\ProblemSolving\Solution\Provider\OpenAISolutionProvider::class,
);

$solver = new Typo3Solver\ProblemSolving\Solver(
    $configuration,
    $formatter,
    $solutionProvider,
);

Solve synchronously:

$formattedSolution = $solver->solve($exception);

Solve asynchronously:

foreach ($solver->solveStreamed($exception) as $solutionDelta) {
    echo $solutionDelta;
}