diff --git a/lib/Less/Visitor.php b/lib/Less/Visitor.php index a7d75ef2..f066aa9e 100644 --- a/lib/Less/Visitor.php +++ b/lib/Less/Visitor.php @@ -13,6 +13,8 @@ public function __construct() { } public function visitObj( $node ) { + static $funcNames = []; + if ( !$node || !is_object( $node ) ) { return $node; } @@ -27,9 +29,10 @@ public function visitObj( $node ) { // // https://packagist.org/packages/brianhenryie/strauss // https://packagist.org/packages/coenjacobs/mozart - $nodeClassNameParts = explode( 'Less_Tree_', get_class( $node ), 2 ); - $nodeType = end( $nodeClassNameParts ); - $funcName = 'visit' . strtr( $nodeType, [ '_' => '', '\\' => '' ] ); + $class = get_class( $node ); + $funcName = $funcNames[$class] ??= 'visit' . str_replace( [ '_', '\\' ], '', + substr( $class, strpos( $class, 'Less_Tree_' ) + 10 ) + ); if ( isset( $this->_visitFnCache[$funcName] ) ) { $visitDeeper = true;