Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:102837 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 70206 invoked from network); 16 Jul 2018 10:56:53 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 16 Jul 2018 10:56:53 -0000 Authentication-Results: pb1.pair.com header.from=mitke013@gmail.com; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=mitke013@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.218.48 as permitted sender) X-PHP-List-Original-Sender: mitke013@gmail.com X-Host-Fingerprint: 209.85.218.48 mail-oi0-f48.google.com Received: from [209.85.218.48] ([209.85.218.48:40187] helo=mail-oi0-f48.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 88/27-39793-2F97C4B5 for ; Mon, 16 Jul 2018 06:56:51 -0400 Received: by mail-oi0-f48.google.com with SMTP id w126-v6so73899305oie.7 for ; Mon, 16 Jul 2018 03:56:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=2NU7wAKVITKDGckMyXauKpmR20/DJM03Lg+mHHJzeDg=; b=MMRmR0A9XQLMQGSb1MkeWtlDWghFqMTyNkIyGNEbmtZkbfa2XIdbqP5WJ9gZnNCO+c /3h2js0CmKyFnUNpEJzk64T4QlSH3qNhdBAB6sGYvDBqdG5i5Lg5qDTwiGSkLn007pRd p2oWJhcJIHs82xK2dEQIBt/dJQHDxB0N7zwMVRER0kFTWUhBR6sZOBqUBJJM7ZowfuPC cTeSkncBFr4PnY+WPPi9Qk7hYJTKKWv99WkgoIDquBTcpPgYqbaA1LOIUrbiUmDPBTOJ O3mwjIvf8bpclZe+xh3OKYSiZBv9u88KroFtk4AZp3yvTPq4WUeZhqKZ7Zto6AFuOtRc 4CwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2NU7wAKVITKDGckMyXauKpmR20/DJM03Lg+mHHJzeDg=; b=J4E2gYxV/lY9PYMp6Qo7HFyYLdcTbH5gbNAyjxWEG+es/jJkSA6ozpzUos54UtcaMN b8SW+UOs1pEKTbdDG+2nBNq77Wt66wWNvJOHpm3V+FnwCsDbjFvXELv3tVSh59UWnc4I cEjetvM7ZBQYpgV373SCtOsEAVfDlPkH7f5NFeCZkwe5XwnRwywA4n0NKBYRS99v34Qf pEzJRvDexS7Ov04mBi1RI10J6DUKBaG5i/XZo+NtKIqiLyf8xfIgUlpBeRyiXi6RLmOS Jb2Cmk168VCoED6KaNwAHNyCvxrMy5v4k8VRyVLSAUZLTWSGDe/tssopERCpASQP5fz2 wK7Q== X-Gm-Message-State: AOUpUlERk/5TTLZ72gT7ZBRu/xK0a71z/CyUnboQSoQxVWyZncrCXHWl BAXRNlFIFqfp1b1HRaAIBBYOjEOQfwkFFQeHxb4= X-Google-Smtp-Source: AAOMgpfMjVqKldshcrsFB/NTDXeRe4xcBY1A173pDTUDA+xblWPK+HHFaNUDaCXlJ7UhlqWe0gSOeQCzJSAy2uXNuFQ= X-Received: by 2002:aca:6655:: with SMTP id a82-v6mr18531204oic.228.1531738607001; Mon, 16 Jul 2018 03:56:47 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: Date: Mon, 16 Jul 2018 12:56:35 +0200 Message-ID: To: arvids.godjuks@gmail.com Cc: internals@lists.php.net Content-Type: multipart/alternative; boundary="0000000000008f37f605711baf0b" Subject: Re: [PHP-DEV] [RFC] Optional typehint check for parameters From: mitke013@gmail.com (Zeljko Mitic) --0000000000008f37f605711baf0b Content-Type: text/plain; charset="UTF-8" I tried to, but I honestly can't see the problem. No decent programmer makes error by sending wrong type of parameter and this feature is 100% optional. I know for sure that even in my dev computer, I would use this feature, and probably most programmers aware of the issue. Maybe simpler example: if I send a string to above function, the only difference is that PHP would start executing inner code. But an inner line like $user->getEmail() would still throw fatal error, still very easy to spot. But again, I really don't see that happening and I am not an expert. And I still never make errors like that, not even when I was learning php. And if dev computer keeps checking type (default), it is very easy to spot a big mistake like that. Given this is open discussion, I would like to see where I was wrong. Btw, you were not harsh at all. On Mon, Jul 16, 2018 at 8:01 AM Arvids Godjuks wrote: > On Sun, Jul 15, 2018, 22:45 Zeljko Mitic wrote: > >> PHP is dynamic language and each typed typehinted parameter has to be >> checked every time. I am suggesting new php.ini value "typecheck.enable = >> 1" which can be turned off. >> >> Example: >> with default php config, a code like this would check each member of >> $users >> array: >> >> function demo(User ...$users) {} >> >> but with "typecheck.enable = 0", same code would be treated like it was >> written this way: >> >> function demo(...$users) {} >> >> Basically, php would simply *ignore* typehints and work like they are not >> there. >> >> It would be programmers responsibility to send correct values but people >> using typehints are not those still learning the basics. >> >> Just like it is programmers responsibility to restart php-fpm when using >> opcache.validate=0, it would be theirs responsibility to send correct >> values. Any decent IDE would mark errors for wrong parameter type and with >> tools like phpstan, it is almost impossible to make one. Only development >> computers would need to have this checks turned on. >> >> This creates no BC problems as it is a new feature. Given that typechecks >> can be turned off, all existing programs would benefit from extra speed. >> >> I am sending this mail by following rules from >> https://wiki.php.net/rfc/howto . I don't have any knowledge of php >> internals so unfortunatelly, I can't help with this. I at least hope >> someone will take this RFC into consideration. >> > > Hello, > > php.ini settings that modify language behaviour on such large scale are > not up for introduction or even discussion. > PHP has been getting rid of those past 10 years, so forgive me for > harshness, but as a user land developer I say "no chance In hell". > > Arvids, > >> --0000000000008f37f605711baf0b--