Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:129050 X-Original-To: internals@lists.php.net Delivered-To: internals@lists.php.net Received: from php-smtp4.php.net (php-smtp4.php.net [45.112.84.5]) by lists.php.net (Postfix) with ESMTPS id EE4E11A00BC for ; Sat, 1 Nov 2025 23:35:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1762040134; bh=+ttISrgKtKNTPwkEc0T2oKG/PWtZt0D3ETumuxkOivM=; h=From:Subject:Date:References:In-Reply-To:To:From; b=HjDlQh3/3a6kJZIgLBzPSP8e7qR4ikzdaltjb5jbXJx6xGKx1axqY/IFcDTZUZ5HV 2ntgvHMSN9Z9BVeEL1qBHdq73LV5wHXPxj0V5OApOpZL16+quRdafhGpYpL7u9pnRn vNEF2bpIVTCYS0hpIY9379Jv/4lnMCIFWt6DEcmstXbtMIFHFt8E10DqCDT9zZLKJc 6pDWG7wKpiGhUdmgr0N3m3/cz59PddgiH4jhziwVP0g1tlRIXAR8F9pl6G1N07dI0C LGWQA/dEL2EZNnNraVqoLIqTDzUJgLaNWeiX1XZbRjHLLx8LixWe40hZstCIAGnofe addbud6uQv9cA== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 701D5180041 for ; Sat, 1 Nov 2025 23:35:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS,HTML_MESSAGE, MIME_QP_LONG_LINE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: No X-Envelope-From: Received: from mail-yx1-f54.google.com (mail-yx1-f54.google.com [74.125.224.54]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Sat, 1 Nov 2025 23:35:33 +0000 (UTC) Received: by mail-yx1-f54.google.com with SMTP id 956f58d0204a3-63f9beb2730so1298626d50.0 for ; Sat, 01 Nov 2025 16:35:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=benramsey.com; s=google; t=1762040127; x=1762644927; darn=lists.php.net; h=to:in-reply-to:references:message-id:date:subject:mime-version:from :content-transfer-encoding:from:to:cc:subject:date:message-id :reply-to; bh=zbnnbj1fbaIhClagD4QzrKlhnjK6fLwm8bz8FTtmaXg=; b=OJmSGeDmOzgsyMkAjYHXLtw4lgLSZKySTcwNYKWiSorBOV6vDYxVIMkBg4PGCErDuh StARRCQMQtOCSJunn3gYXQG2K8czGd1/6ks/VeYf5WsEyNZjNlOKfylOhb/NUjGXXuzP ta8/L7v/uR9kKrbLBnBMGfJQAbQPhqkvICcg+XIbkrFN/D8AY/0TlswpiZXy/oFpK1QW QgXaoVVAaBHdZyLvdspi7xlwrTZjWSCTZQbacZe4HkXJ+ralj3fcGqLKoS6zo50ZxPXZ zlnzVZzW0UmWfimFif0Y8uQLu6g0Dv2ePXbD0S0FGDdP0iuTRyPwWreG+JooL8JfM2MH 8ykQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762040127; x=1762644927; h=to:in-reply-to:references:message-id:date:subject:mime-version:from :content-transfer-encoding:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=zbnnbj1fbaIhClagD4QzrKlhnjK6fLwm8bz8FTtmaXg=; b=ohQYWHeem0k0Ii94wWvolZ7hgMpx+3RJ15AOO2WXgig2fVhQrmFrOawjJjqbWN1kTu HIYbf8JYiijKo8m6GSC92gLLpnEIp1n9iLNGJXv0IVaosQI5AShxAjqZ+Elgf4nRRFV5 brqIsu1CwCzygnLvq//wSU+JxSAJWtc/fjIf9POL4TMsVoInnUMeobhM8w42iwWS87NW Dk5Wdq9NYZoWUxKiD8t8svTgATXQFvF6cFwTH6FOMMQTGzbLek0G8O+7KDGS/ZEcOTF/ 9iSctEQD/2XpKkttCCGi+jVFWStt1Hcv7Ez5qaRSuYMnjSX4ywXU6LJpQAllHTUjreOa X2dw== X-Gm-Message-State: AOJu0YyGbx/d3QCZBkpNHSm6pxJg4eJvUojC7LFxUJcoINz+4s1pURp5 oNEn+NeOnIzu6cmoJdxOcAcpvtytvenR5Nn+BJqCKD7uNaGpPidgsygDEvoC0pgUMctUocpO9cX pdIeFFJfp X-Gm-Gg: ASbGncsSEYqQ2r3cMcvZqrSNzacSwBKSDlD3FYznT7JpG3GVi7R8iacl/D0o7rjuqTX 5GJdypkcYHtzDlljMk68RbaBRR720RRNXxvy7uiNqN52AU3WIxKSv6Y2WgN7xufFjFpx7+MEBZc yCBVZB4P/skuPx2x0KhH3DrpBIyWq/hHAKebBkSerDntmocsSYuCi+8G/70CWtKPLGoePXDvqnA 5ESk+oNIRCP/aXh/0L8vtasHB1MNjwX6F/rPVU0lcmRiywIKOk1nlxZMDMGPZfMDuFhmHUeV01D mDVivBmNhYZbB8ngw910EouaMzFyyQwsY8PCFkrIw5Bt8BZs9rTlF4TN3VYa0NYPqsFKpSLhZVR G2EkhH4kyKDCnb3oz5oXiY9neVK69YIG9COkJ7HBHH1XMPgKFK25eU4wIrwMcW0PwFLrX3K/6Zc +eDqsv8RXLHXRjcp2Wa5kg1ca8+xwNtrDHNYi6vvxicr58OSeQ+c0DIaznuOGNpgJr7DnAf6Jn0 yGCLQ== X-Google-Smtp-Source: AGHT+IGcqKPaCeuocvtqEAHjmXLVWSaq8j3sCziRJF/Y4Aow34wnQ0RzF3NlzjtLI+I/+GAy1DAQHg== X-Received: by 2002:a05:690e:2501:10b0:63e:30d0:2500 with SMTP id 956f58d0204a3-63f9224ed06mr5880063d50.9.1762040127135; Sat, 01 Nov 2025 16:35:27 -0700 (PDT) Received: from smtpclient.apple (h96-61-170-179.lvrgtn.broadband.dynamic.tds.net. [96.61.170.179]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7864bdaeb13sm17517027b3.23.2025.11.01.16.35.26 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 01 Nov 2025 16:35:26 -0700 (PDT) Content-Type: multipart/alternative; boundary=Apple-Mail-30AE6F66-0BA6-493B-8C7D-5BCA4A3EDC22 Content-Transfer-Encoding: 7bit Precedence: list list-help: list-unsubscribe: list-post: List-Id: x-ms-reactions: disallow Mime-Version: 1.0 (1.0) Subject: Re: [PHP-DEV] Fwd: [DISCUSSION] Proposal: Official PHP Language Server (LSP Implementation) Date: Sat, 1 Nov 2025 18:35:16 -0500 Message-ID: <717A650A-EA7C-4733-A301-31E2E5402D66@benramsey.com> References: In-Reply-To: To: PHP internals X-Mailer: iPhone Mail (22G100) From: ben@benramsey.com (Ben Ramsey) --Apple-Mail-30AE6F66-0BA6-493B-8C7D-5BCA4A3EDC22 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable > On Nov 1, 2025, at 14:38, Dan Jessen wrote: >=20 > =EF=BB=BF > Thanks Marco =E2=80=94 I agree that any official LSP should follow the PHP= spec closely and avoid adding new type semantics. >=20 > The issue isn=E2=80=99t the lack of servers, but fragmentation. Psalm and P= hpactor differ in scope and design, while Phan=E2=80=99s LSP docs haven=E2=80= =99t been updated in years and its Vim plugin is around seven years old. Non= e are standardized or maintained alongside PHP itself. >=20 > PhpStorm is an excellent IDE, but it=E2=80=99s premium =E2=80=94 and the f= act it=E2=80=99s the only consistently recommended option highlights a tooli= ng gap. Developers using VS Code, Neovim, Emacs, or Sublime Text often get a= very different experience. >=20 > The Language Server Protocol exists to solve exactly this: as Tom Djenius d= e Vries put it, it turns the M=C3=97N problem (M editors =C3=97 N languages)= into M+N =E2=80=94 each only needs one integration point. >=20 > A spec-aligned, officially maintained PHP LSP could unify that baseline an= d make PHP development more consistent and accessible across editors. IMO, this is something that would work best as a working group involving the= maintainers of PHPStan, Psalm, PHP CodeSniffer, PhpStorm, and the related V= S Code extensions, since all of these projects have an interest in a spec-al= igned PHP LSP. Perhaps PHP-FIG could be a good host for this working group? Cheers, Ben --Apple-Mail-30AE6F66-0BA6-493B-8C7D-5BCA4A3EDC22 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
= On Nov 1, 2025, at 14:38, Dan Jessen <danjessen@gmail.com> wrote:
<= br>
=EF=BB=BF
Thanks Marco =E2=80=94 I agree that any of= ficial LSP should follow the PHP spec closely and avoid adding new type sema= ntics.

The issue isn=E2=80= =99t the lack of servers, but fragmentation. Psalm and Phpactor differ in sc= ope and design, while Phan=E2=80=99s LSP docs haven=E2=80=99t been updated i= n years and its Vim plugin is around seven years old. None are standardized o= r maintained alongside PHP itself.

PhpStorm is an excellent IDE, but it=E2=80=99s premium =E2=80=94 a= nd the fact it=E2=80=99s the only consistently recommended option highlights= a tooling gap. Developers using VS Code, Neovim, Emacs, or Sublime Text oft= en get a very different experience.

The Language Server Protocol exists to solve exactly this: as Tom= Djenius de Vries put it, it turns the M=C3=97N problem (M editors =C3=97 N l= anguages) into M+N =E2=80=94 each only needs one integration point.

A spec-aligned, officially mainta= ined PHP LSP could unify that baseline and make PHP development more consist= ent and accessible across editors.

IMO, this is something that would work best as a= working group involving the maintainers of PHPStan, Psalm, PHP CodeSniffer,= PhpStorm, and the related VS Code extensions, since all of these projects h= ave an interest in a spec-aligned PHP LSP. Perhaps PHP-FIG could be a good h= ost for this working group?

Cheers,
Ben

= --Apple-Mail-30AE6F66-0BA6-493B-8C7D-5BCA4A3EDC22--