Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:123960 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 6017D1A009C for ; Thu, 27 Jun 2024 20:16:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1719519451; bh=cMhpWBz1sAR4PTR6Xz53jPc+Chp2CDxo4gag8YR+7AY=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=bIzisnExS4xO8h+UkjVzWZwQyVfsNfKuFISnU9brFBfgbZgr2j6pvagtfnZhII+if 8BpmLxisXagHMmtw1vBPLE3w/Ui3J89M3nABlAfuNxbHTDoGruSBn2cLqLXRD0d7/E /d9lINAG1E9QFFpFpjQGRgni4kko0O5pwRiR7UTovDZUCwD24MbjbSLCwBc/sxBsT7 2CesSmCloRI98XxOTcpwD13D8W7hoZIA6sE0qwCfyOfRLwhGsu4253Tudb6/quloOQ qMasx8VkHvijiPG12wF7q1Tadoxyf6dHf91/EEBVlKBIp6kiUcKbbuvhIw5NZpwsrO uxUUa6nK5/gmA== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 62DBD181054 for ; Thu, 27 Jun 2024 20:17:27 +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,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: Error (Cannot connect to unix socket '/var/run/clamav/clamd.ctl': connect: Connection refused) X-Envelope-From: Received: from mail-io1-f45.google.com (mail-io1-f45.google.com [209.85.166.45]) (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, 27 Jun 2024 20:17:26 +0000 (UTC) Received: by mail-io1-f45.google.com with SMTP id ca18e2360f4ac-7f5f7ecacc0so43272839f.0 for ; Thu, 27 Jun 2024 13:16:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datadoghq.com; s=google; t=1719519368; x=1720124168; 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=TvXLbzbNpaqaph4qgULS+hlGM9qVTgn1+fqTa3aOhJY=; b=RMYf2NpW4vOLao9qtsGWnsX6dyYwPEOy2dQqD4++KxMYHiYe1D9o0ReX4JSAVwkzcG 7rC3EI6QO+6Qz75Sg+t4ApiyCYafT2P5gnoDZQcT0KJzH8ARyvwXMvnirOBoki+DBDJs 9BDSU/6OMUoo4iG1HnaUxWJOfD5HJDs8fbUec= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719519368; x=1720124168; 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=TvXLbzbNpaqaph4qgULS+hlGM9qVTgn1+fqTa3aOhJY=; b=jwrRVi+itZt0OVFhO6NAkHFePhmKp1bq0fOoZmL2c5zOuj/Y6jGEqDna5Abi5pkOpx 0b8R/n+Cu8PAt6wtTzEvwpifZvCrdy4pNpixRKg08r4tx0JcyH8hyLik8nHoI8z397/i mHf/6P3MaG6tj7VQl8T6dNSjGLlhvDea46Vl7+wX+u3oVkCLdtemDrOkGHwzwgw+IXyI dfMER0ih4JUusucMWvCk5JsdI+TkHEsgT25jJkJAyBj290GWDL6fQMFim5gOg/XDm4k2 bCkfgt6cmQjM8YbYO1H2e8DfIA8dF33CG9upy+HoSJzNb82KM+dmXt+GwyYKrMwUZ9li BRVA== X-Gm-Message-State: AOJu0YyH6vroMXQ3hR8ls8uFxnDBmRDFFc9BEl1R3vaOLmhSc3v7+6j4 hEd+Dof87CBafM0qUk1Qlx3Dvkl5lbuyxK6hu51b2pA2poLyvW/GubaNrxQu8i0f2o6AnsPXJUr Nw4TefqqMtLiEuLjC7Qs5eXKkM8lgBujKKIoQHw== X-Google-Smtp-Source: AGHT+IHe2B8qC0jo6Tgrj0LSEkf3ouwroH/Qe5ZhZRLN5EP8G+fdITdD6pTPn0L5I/eWsXyvOJNgY2wjJzzC0kc0TNA= X-Received: by 2002:a5e:cb46:0:b0:7f3:d82b:2913 with SMTP id ca18e2360f4ac-7f3d82b2ad9mr334336939f.18.1719519367760; Thu, 27 Jun 2024 13:16:07 -0700 (PDT) Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net MIME-Version: 1.0 References: In-Reply-To: Date: Thu, 27 Jun 2024 14:15:56 -0600 Message-ID: Subject: Re: [PHP-DEV] [Initial Feedback] Typed Arrays To: radar3301 Cc: internals@lists.php.net Content-Type: text/plain; charset="UTF-8" From: levi.morrison@datadoghq.com (Levi Morrison) > Is there a reason why traits can't be used to introduce generics? > i.e. extending the code that composes the trait into the class to > replace the generic type? eg. in `zend_add_trait_method`? > (I couldn't quickly find where trait properties get added, even > though my example is for properties.) > > trait GenericTrait > { > private ?T $object = null; > } > > class ComposableClass > { > use GenericTrait; > } > > // Result: > class ComposedClass > { > private ?Foo $object = null; > } > > Just a random thought... > > Regards, > radar3301 I worked with Joe Watkins to do a proof-of-concept for generic traits. It's a bit old since it's from 2017, but could be a useful starting point if you are serious about pursuing this idea: https://github.com/php/php-src/compare/master...morrisonlevi:php-src:parameterized_traits