Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:107276 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 75384 invoked from network); 21 Sep 2019 13:14:05 -0000 Received: from unknown (HELO php-smtp3.php.net) (208.43.231.12) by pb1.pair.com with SMTP; 21 Sep 2019 13:14:05 -0000 Received: from php-smtp3.php.net (localhost [127.0.0.1]) by php-smtp3.php.net (Postfix) with ESMTP id 646F52D2026 for ; Sat, 21 Sep 2019 03:52:13 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp3.php.net X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: X-Spam-Virus: No Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com [IPv6:2a00:1450:4864:20::22f]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by php-smtp3.php.net (Postfix) with ESMTPS for ; Sat, 21 Sep 2019 03:52:12 -0700 (PDT) Received: by mail-lj1-x22f.google.com with SMTP id f5so9414624ljg.8 for ; Sat, 21 Sep 2019 03:52:12 -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=AQ3UsZpv8dDu7bNYqDtISFjxY/b/9EB7UOcT+Pe3/4A=; b=YUQWe1qVbNjc3e5vcDtcq+gV/h6FVotHsGefGZzYo5JOLyA5j1Kpz5cMQsERN/Njba KCGV96XVNUFmqTiN/sg9PxA+bg4zZPZiTIxqxwRXcvRMS31WGcA2vAxJeLs9HNp6mJ3g 3ck7JYaYYhwfgRExaKtULBuN0yLaNXYS19CNikrqptUJ70lEZi3iI0Ur4Xdif2om2ejp gURAaDPSRCQDtXRAfRUtv0YxWosuIaXraPjp5Ar3fSMkOJagXGBNDeOypBg/V7yZLKBy CM2GeCQA5JNJp1lUYBzqdjy7yV9IW30FeCZcrOfHEyz8wjoeoXRKNRV1Okzjdp+DvmOw qtWA== 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=AQ3UsZpv8dDu7bNYqDtISFjxY/b/9EB7UOcT+Pe3/4A=; b=bYqv7YfMfmgWHHwve9rTuOI5/QbHh7b0N+I530wezO9zLwvgENHsnZSsW47Yuaf2LE wz++OKD1TFZsJ1Uvmg6E6q7h17xmWuGQRQEXTchBoIgKUNt+V+gx5FbGnA38d5e/pdv9 duCItCpD+Kg3IdPCuJaCjMYypT4sgcyEc4nast2dBnBxFY7ORYwx/V+huUsr+M79GuzL +bPrfn2xDQs1k7QtRw98EhICtSu3XuQF2L8GScWjMIRo5yo/cBfJJ/Xmw/YgS4EP+wbM rycUaHSvu2yRcwYhEyDs7aXH64Q9F5/Vn6ewRtJRHZqzJm+zpfNUCzunbIw8ClvMNvDO E7+w== X-Gm-Message-State: APjAAAVcoJK109uQWijEc+Ytw8+H8nGQxnDD2Z9AXMNteGQ7scOO7826 z84YM2tpKL/XLjFrA47nwaMfkwLkDAgIbFxYPP4= X-Google-Smtp-Source: APXvYqxjxGVumDBRxRRtafLkdBMiv3oUFA26SQj4lsyB6YcOjAUe4hLOlWzcpe39nAl7C9zWUaxAiuKyyiBnoXXuEn4= X-Received: by 2002:a05:651c:1b2:: with SMTP id c18mr11942118ljn.55.1569063130976; Sat, 21 Sep 2019 03:52:10 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: Date: Sat, 21 Sep 2019 12:51:54 +0200 Message-ID: To: Kosit Supanyo Cc: PHP internals Content-Type: multipart/alternative; boundary="0000000000008d558c05930dfaa3" X-Envelope-From: Subject: Re: [PHP-DEV] Question about `global` variable declaration From: nikita.ppv@gmail.com (Nikita Popov) --0000000000008d558c05930dfaa3 Content-Type: text/plain; charset="UTF-8" On Sat, Sep 21, 2019 at 11:56 AM Kosit Supanyo wrote: > Hi Internals > > I'm working on my new proposals and I've found weirdness of global variable > declaration in zend_language_parser.y. > > global_var: > simple_variable > { $$ = zend_ast_create(ZEND_AST_GLOBAL, > zend_ast_create(ZEND_AST_VAR, $1)); } > ; > > Above grammer allows something like this... > > global $$x; > global $$$y; > global $$$$z; > global ${'abc'}; > global $$$$$$$$$${random_int(0, PHP_INT_MAX)}; > > What's the propose of allowing this? And is there anyone out there knowing > and using it? If not, should this be changed to allow only T_VARIABLE to > make it consistent with `static` variable declaration? > > Regards > Some grep results: sources/adodb/adodb-php/session/adodb-session.php 676: global $$var; 697: global $$var; sources/adodb/adodb-php/session/adodb-session2.php 719: global $$var; 740: global $$var; sources/adodb/adodb-php/session/old/adodb-cryptsession.php 189: global $$var; sources/adodb/adodb-php/session/old/adodb-session.php 300: global $$var; sources/adodb/adodb-php/session/old/adodb-session-clob.php 269: global $$var; sources/wp-cli/wp-cli/php/WP_CLI/Runner.php 1177: global ${$key}; sources/apache/log4php/src/main/php/pattern/LoggerPatternConverterSuperglobal.php 71: global ${$this->name}; We could deprecate this in favor of $GLOBALS, though as Dan said, the motivation is not quite clear right now. Nikita --0000000000008d558c05930dfaa3--