Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:122927 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 qa.php.net (Postfix) with ESMTPS id 936AB1A009C for ; Thu, 4 Apr 2024 11:49:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1712231408; bh=sCo0iao78ig3d71FGGceyYPKp3UutO1zWQBxD1wbZc4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=OMLSfIsbSn5u8cYaq3FiNv1o7N7Jiv5l52OOkr2x7U07voUHEJ8UBE7LEoSyZPIuP aKEJ5g5JzdQMkbMA8fKQfU9J6XXSpXaFCx278grkDGbpVHk05EoNjT2ziPMeDz6oZk sJZ9kfuzdtfdrQHDNpHVd44v4uk0jFt8r8SnzAXpYQlJGjVvwjKLzMhdCMFywanPCy NGzyB/OsZwghJh/UcKSalv+Xa0oxfLPImPxa9/xg8rXL41DhcaZI78CD3rwolbxsu3 ujuXYQIcpoceA6xUAsG3YhChbZ3eYqMDuCR1IG0kjksygY1KhoPuu91N8LFNzp4n+K Enxh0zj2TruaQ== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id CE94618007B for ; Thu, 4 Apr 2024 11:50:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) 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, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=4.0.0 X-Spam-Virus: No X-Envelope-From: Received: from mail-qv1-f52.google.com (mail-qv1-f52.google.com [209.85.219.52]) (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 ; Thu, 4 Apr 2024 11:50:07 +0000 (UTC) Received: by mail-qv1-f52.google.com with SMTP id 6a1803df08f44-6962950c6bfso5385016d6.2 for ; Thu, 04 Apr 2024 04:49:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunglas.fr; s=google; t=1712231377; x=1712836177; darn=lists.php.net; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=sCo0iao78ig3d71FGGceyYPKp3UutO1zWQBxD1wbZc4=; b=nTxgi+pCqHQ9DTyhAYFjqXC+CiIf1GPxi7XfEFpz5UcX3ZHpdPOTSaXmRnH56DSUJA 0Dnoq1G8FB+UzOKkqPc/u8w+son/jsqVxfiK9L2x0eGGtWvL71BT2ZX5viemSs8rclbS HQf8TrkPuefnRo5FiEMZcZoK+D/TPCMMrKK3WzyQ85YVnTIh4CRLme+PyIIIfnNnwihu rKvARtWVPVjD205OrvteuzYqVVx8JDDqKmzJ6XiKcCSJIdtg60Z5BxTPIOXbfNV+7/KW wM3otkRqiYUHy8yATRt/r0vxxaRMRFn9dsgynDwN8a4Whch3oEJQl+s/97bWOJcgdrDJ jPlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712231377; x=1712836177; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=sCo0iao78ig3d71FGGceyYPKp3UutO1zWQBxD1wbZc4=; b=Qv1XbiYQF6TXrfzGpVRKl9BWYJETYsezryoGKbyhjCxr2Fn//24MWx9nPua1ABcgz0 Q87zBfT6is9FoAhH1OEbq6CP/6DDUNGp20dqoxcDWiNFo2y0His/PyQwypKkD9IFhm/2 Z+SFKinaVBjPjkkp3HA5J4mE+oSqOnd7zyeDZzv4lm1v1UDR3TdO2Ni5t34gUGCPhgMN ssfgZT3oelSBE+vINs7I0ZTJqdOmjyd6+vv7Gx/ZTBVvgyzf541VPsTlWGe5vZUjdS5v QRnxYIJzEKLTLKvPgk4+fvgOmsyqumvg3xyTEbbq27FUvf/tQC50WTREOJO+nQrYUDVQ ReEw== X-Gm-Message-State: AOJu0YxEEiMj0epAtyMCscW6nzdwgRStQ2IVgER99KiYzdtDY98lMosg vV9LGVEpB9LDo0m7kU9WsB3sxXanDn1+VIPqSy6XPv4ax6GS0uR7dsTKnyEPzArqkIc71va7K2R cy0DgX6+VdvjJiMK1+Yqpnvk8jXSzGLxILyZlEA== X-Google-Smtp-Source: AGHT+IFdP/P6sEe2WJGN0GckLanuEQE3zgsBgJbJbB+5Gqzm23sJXTwqNC5U9vbylo1XwyrmwUPqOGLlbAbX5zlQCZc= X-Received: by 2002:a05:6214:1c87:b0:699:2c7d:407b with SMTP id ib7-20020a0562141c8700b006992c7d407bmr2164424qvb.23.1712231377388; Thu, 04 Apr 2024 04:49:37 -0700 (PDT) Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net MIME-Version: 1.0 References: <1a4a44c5-d4f5-40ca-b3dc-13d64c2b4425@app.fastmail.com> In-Reply-To: Date: Thu, 4 Apr 2024 13:49:26 +0200 Message-ID: Subject: Re: [PHP-DEV] [RFC][Concept] Data classes (a.k.a. structs) To: Ilija Tovilo Cc: php internals Content-Type: multipart/alternative; boundary="00000000000005e6c0061543efa7" From: kevin@dunglas.fr (=?UTF-8?Q?K=C3=A9vin_Dunglas?=) --00000000000005e6c0061543efa7 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Data classes will be a very useful addition to "API Platform". API Platform is a "resource-oriented" framework that strongly encourages the use of "data-only" classes: we use PHP classes both as a specification language to document the public shape of web APIs (like an OpenAPI specification, but written in PHP instead of JSON or YAML), and as Data Transfer Objects containing the data to be serialized into JSON (read), or the JSON payload deserialized into PHP objects (write). Being able to encourage users to use structs (that's what we already call this type of behavior-less class in our workshops) for these objects will help us a lot. K=C3=A9vin --00000000000005e6c0061543efa7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Data classes will be a very useful addition to "= API Platform".

API Platform is a "resour= ce-oriented" framework that strongly encourages the use of "data-= only" classes:
we use PHP classes both as a specification la= nguage to document the public shape of web APIs (like an OpenAPI specificat= ion, but written in PHP instead of JSON or YAML),
and as Data Transfer= Objects containing the data to be serialized into JSON (read), or the JSON= payload deserialized into PHP objects (write).

Being able to e= ncourage users to use structs (that's what we already call this type of= behavior-less class in our workshops) for these objects will help us a lot= .

K=C3=A9vin
--00000000000005e6c0061543efa7--