Skip to content

Conversation

@haidubogdan
Copy link
Contributor

Part of issue #9034

  • include Php 8.5 version option

Pipe Operator

For the pipe operator I've used a similar approach to the infix expression and based on this rfc : https://wiki.php.net/rfc/function-composition I've created a new AstNode CompositionExpression (Maybe it should be FunctionCompostionExpression ?).
Trying to identify what is a variable or what is not a callable seemed to be very hard as you can assign a callable to a variable. Also, it's a chain type expression, so no clear syntax delimiters to included it as a stand alone ast rule.
For the error syntax I've used a hint verification approach of identifying what type of expression is the right handle of a Composition Expression. The basic types of numeric tokens or boolean values can be marked directly as errors.
In some future implementation we can add checks on callable types, as they require to take only one parameter (first-class-callables) .
https://wiki.php.net/rfc/pipe-operator-v3#callable_styles

  • syntax support for pipe operator
  • hint for basic non-callable pipe operator right handle : integer, float, bool, infix expression
  • formatting adaptation
  • unit tests for lexer, parser, hint verification

Todo | work in progress (while review is in progress :) )

  • unit test for formatting

^Add meaningful description above

Click to collapse/expand PR instructions

By opening a pull request you confirm that, unless explicitly stated otherwise, the changes -

  • are all your own work, and you have the right to contribute them.
  • are contributed solely under the terms and conditions of the Apache License 2.0 (see section 5 of the license for more information).

Please make sure (eg. git log) that all commits have a valid name and email address for you in the Author field.

If you're a first time contributor, see the Contributing guidelines for more information.

If you're a committer, please label the PR before pressing "Create pull request" so that the right test jobs can run.

PR approval and merge checklist:

  1. Was this PR correctly labeled, did the right tests run? When did they run?
  2. Is this PR squashed?
  3. Are author name / email address correct? Are co-authors correctly listed? Do the commit messages need updates?
  4. Does the PR title and description still fit after the Nth iteration? Is the description sufficient to appear in the release notes?

If this PR targets the delivery branch: don't merge. (full wiki article)

Issue  apache#9034

- include Php 8.5 version option
- syntax support for pipe opperator
- hint for basic non-callable pipe operator right handle : integer, float, bool, infix expression
@mbien mbien added PHP [ci] enable extra PHP tests (php/php.editor) ci:dev-build [ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page) labels Dec 31, 2025
@apache apache locked and limited conversation to collaborators Dec 31, 2025
@apache apache unlocked this conversation Dec 31, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:dev-build [ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page) PHP [ci] enable extra PHP tests (php/php.editor)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants