area17/phptorch

Torchlight helpers for php files

Package info

github.com/area17/phptorch

pkg:composer/area17/phptorch

Statistics

Installs: 18 724

Dependents: 1

Suggesters: 0

Stars: 2

Open Issues: 0

dev-main 2025-04-29 22:19 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

Apache-2.0 870122664ccf2ebbf37e3524384706a98851d80d

  • Harings Rob <haringsrob.woop@gmail.com>

This package is auto-updated.

Last update: 2026-05-29 01:42:09 UTC


README

PhpTorch is a package for documentation purposes. It uses nikic/php-parser to parse a php class, which can then be modified using highlighting actions.

The end result will be printed as code with torchlight annotations.

Example:

$highlighter = \A17\PhpTorch\Highlight::new('PageController.php')
 ->focusMethods('getForm')
 ->diffImports(\A17\Twill\Services\Forms\Fields\Medias::class)
 ->focusImports(\A17\Twill\Services\Forms\Fields\Medias::class)
 ->diffInMethod('getForm', 7, 9);

Then you can provide the output to torchlight which will result in:

👁 screenshot

Available methods

For now check the highlighter class public methods or consult the tests.

Todo

  • Add support for non class files.

Examples

Direct usage

$highlighter = \A17\PhpTorch\Highlight::new('PageController.php')
 ->focusMethods('getForm')
 ->diffImports(\A17\Twill\Services\Forms\Fields\Medias::class)
 ->focusImports(\A17\Twill\Services\Forms\Fields\Medias::class)
 ->diffInMethod('getForm', 7, 9);

Jigsaw / markdown

If you want to use this in Jigsaw, you should require "torchlight/torchlight-jigsaw": "^0.3.4", in addition to this package.

Then you can start a code snippet with 3 backticks followed by phptorch like this:

\```phptorch
{ JSON }
##CODE##
<?php ...
\```

Linked file:

{
 "file": "../../examples/blog/app/Models/Blog.php",
 "collapseAll": "",
 "focusProperties": [
 "slugAttributes"
 ]
}

Inline code:

{
 "collapseAll": "",
 "focusProperties": [
 "slugAttributes"
 ],
 "diffMethods": [
 {
 "methods": "someMethod", 
 "addRemove": "remove"
 }
 ],
 "focusMethods": "someMethod"
}
##CODE##
<?php

class Example {
 public bool $slugAttributes = false;
 
 public function someMethod(): void {
 }
}

class Foo {

}