3v4l.org

run code in 300+ PHP versions simultaneously
<?php abstract class Expression { protected function escapeStringLiteral(string $value): string { return 'never called'; } } trait ExpressionTrait { protected function escapeStringLiteral(string $value): string { return '\'' . str_replace('\'', '\'\'', $value) . '\''; } } class MyExpression extends Expression { use ExpressionTrait; } class TestExpression extends Expression { private Expression $dummyExpression; public function __construct(Expression $dummyExpression) { $this->dummyExpression = $dummyExpression; } #[\Override] protected function escapeStringLiteral(string $value): string { return $this->dummyExpression->escapeStringLiteral($value); } public function test(): void { var_dump($this->escapeStringLiteral('foo \' bar')); } }; class TestCl { public function test(): void { $exprNoRender = new TestExpression(new MyExpression()); $exprNoRender->test(); } } (new TestCl())->test();

preferences:
31.02 ms | 405 KiB | 5 Q