Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:101304 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 18652 invoked from network); 11 Dec 2017 07:25:49 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 11 Dec 2017 07:25:49 -0000 Authentication-Results: pb1.pair.com smtp.mail=andreas@dqxtech.net; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=andreas@dqxtech.net; sender-id=unknown Received-SPF: error (pb1.pair.com: domain dqxtech.net from 209.85.215.49 cause and error) X-PHP-List-Original-Sender: andreas@dqxtech.net X-Host-Fingerprint: 209.85.215.49 mail-lf0-f49.google.com Received: from [209.85.215.49] ([209.85.215.49:41574] helo=mail-lf0-f49.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id A2/86-53433-AF23E2A5 for ; Mon, 11 Dec 2017 02:25:48 -0500 Received: by mail-lf0-f49.google.com with SMTP id f18so18001760lfg.8 for ; Sun, 10 Dec 2017 23:25:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dqxtech-net.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=1L8S5HgL1s1BOMH8obVyz91+EX5byuIsvpQVxbbqVdY=; b=hZqltTGmtE+6J4S14DaqEpkMcUSHU5OsC/Y/ggpZNhNoDj5V7hDx7qH1km+9oGONN6 rH7s525Ms6LGztIeHgtTYp1HIxrc31uMduWcWHAP4JgUUP1plcDk2vUSCNosdk5ppuW2 dm78JxlET3bpAeQ1c3vb48fnFPl9gsS5a3kIbkAxe2Yqnm9FMMeKgqAcZYszUpdr0GQ7 6DlgBVsBykTMcLoP3HLa4KuI+roditjUzUJcO7btGdHBwBKg6BMRR9UK5mw5ML2o88rJ jZwnHVOgO9aNsnXCyEL048u3Wl5yGIyAe8pF7/JR5gXtlD+g+D9wZ4hm2rIETzatwHUp BVbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=1L8S5HgL1s1BOMH8obVyz91+EX5byuIsvpQVxbbqVdY=; b=bibY+ihQrQCtc21nFB6uOqFGWGOOBFXFnBonYi3wZURz3MSJPPqemTNggx8RLcxeF9 bisdJEmq4S/330/IlnYWRfhsX4KVmPbKbqjwZXs/LyJ630KIwGybpJkTNWO5XLyD+Qq5 ktmkt90kLC15uh9MF4xkqosNxBDsvRb6bq1HZPrh+uHT4jHWXa5YyAveKHyl03VNTvn2 zp3dM7q0Q47GQUuh5ATy92mcqTq8LEv33utRo4sq6t+pa3yLSkUq2C5RfnHLmQkn+rdH 1lqIvfGxI6Xi2LTJpOll/tECYzSsCz+yQVqEwgkXN4IfYcmi4f8WjwZKud8jXstkyEFt 1Chg== X-Gm-Message-State: AKGB3mL38dR1JrEmNPM1v7AA/CNZt52oD6leJniy0YAwwLURemp0bm/F LyuI0/P4g+bZsgDXTcV04yBzD+UB X-Google-Smtp-Source: AGs4zMYMVEAipMtqVQBsrJbkfjVUBpOJSJTtP23bTkZRC4A548KzaIZM7qohZPS5mu2+4LZxmcJNiQ== X-Received: by 10.46.83.29 with SMTP id h29mr16124368ljb.144.1512977142900; Sun, 10 Dec 2017 23:25:42 -0800 (PST) Received: from mail-lf0-f45.google.com (mail-lf0-f45.google.com. [209.85.215.45]) by smtp.googlemail.com with ESMTPSA id r74sm2690470ljb.28.2017.12.10.23.25.40 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 10 Dec 2017 23:25:42 -0800 (PST) Received: by mail-lf0-f45.google.com with SMTP id x204so17972359lfa.11 for ; Sun, 10 Dec 2017 23:25:40 -0800 (PST) X-Received: by 10.25.39.75 with SMTP id n72mr15995828lfn.131.1512977140311; Sun, 10 Dec 2017 23:25:40 -0800 (PST) MIME-Version: 1.0 Received: by 10.25.170.16 with HTTP; Sun, 10 Dec 2017 23:25:19 -0800 (PST) Date: Mon, 11 Dec 2017 08:25:19 +0100 X-Gmail-Original-Message-ID: Message-ID: To: PHP internals Content-Type: text/plain; charset="UTF-8" Subject: Reflection API: Add static factories on ReflectionType From: andreas@dqxtech.net (Andreas Hennings) Currently there is no (documented) way to directly create a \ReflectionType object. The class has no documented constructor. I propose that static factory methods shall be added for this purpose. This will be useful for code that wants to dynamically create and pass around reflection type objects. /** @var bool $allowsNull */ $t1 = \ReflectionType::fromBuiltinType('string', $allowsNull); $t2 = \ReflectionType::fromClassName(\stdClass::class, $allowsNull); assert(true === $t1->isBuiltin()); assert(false === $t2->isBuiltin()); assert('string' === $t1->getName()); assert(\stdClass::class === $t2->getName()); To be discussed: - method names - Whether to return ReflectionNamedType or ReflectionType or something else. (I don't find ReflectionNamedType documented in http://php.net/manual-lookup.php?pattern=ReflectionNamedType)