Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:106777 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 7333 invoked from network); 29 Aug 2019 00:34:08 -0000 Received: from unknown (HELO mail-pg1-f181.google.com) (209.85.215.181) by pb1.pair.com with SMTP; 29 Aug 2019 00:34:08 -0000 Received: by mail-pg1-f181.google.com with SMTP id p3so423755pgb.9 for ; Wed, 28 Aug 2019 15:06:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:openpgp:autocrypt:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=yGYRxQYPOXZxlBBZxmKEoMkuqevcIRV5SUGuKfGBe9I=; b=Kj8fR3l9l8eg4Q4sNF1tihUtRVEE7t0RxtGc8i9wnQpnevvNZI671TY437jBqtIi// FUhWiPd2oYQ3gEfPh69y/nEwyctjcQ/MI3FwOIyHKRrbGAiGYkXFhFuq8PcJ2x7GUVPJ D3kTCY7MxwkbPeJW3M6+6rBxecSYu9WRmpd1ccRRE0sCYcG8AAy0dZaGJrKPTvH5FnMM KzhTgRjH7ynuKOCw0NrxLHI616PniZDQ3hHcms0GskIqTj7Z2HaEOOi43zCSLJdj6J1K ZtY/3graj/xBuzpEL2TC9F1N7VYjYPHZ+MnOECs/zYHTzq5ngzlqlF7oD/QCwQ0iWXlY jAWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:openpgp:autocrypt :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=yGYRxQYPOXZxlBBZxmKEoMkuqevcIRV5SUGuKfGBe9I=; b=sbDIvi1u11RneDKTboE80wExBq1J8Z/pQZwOYH8kD4waWg5b5D6Mm8Yoy8qnxw6CQ2 Qzb440gcTpyVKZ/0uIpNMWRbUmo0T8Qi6nVTfCI7I4EvIBk/tTsYx5tKAPtUPSKUlPGz hxmrVIvteSSA9eaK+Z94N3y4milYAUMiQquw8pAToMt9nhyvu0iSjDrZ+elUS3XuRFcX S0Q6zXkkNye7zEWQN1VjoAH0txjMyIRMJ1OeFm3LoIfN9YLE5d/VHqf6m6InjV99Vxk4 KLqTYqysgd17FJcHFr4Ww1yEm2WFIL+HdFXgmg6g5BU+5vrVeLzi6QuPDwMN4k0nuOd2 +VMg== X-Gm-Message-State: APjAAAXik4cGAS3d+QKst7z5ucwNGrC3t4K4lxl/pgdbkordFt2SZ59a zLoOcXebgtxeFN21p7h3/4myMtc77mrU X-Google-Smtp-Source: APXvYqxmmH2KUoBoI2MsUZTjZdkTPBT7T6Sao5ht0/PdQAwgEPOHPT/od4OiOGk0mMdEtJ/5qsexyg== X-Received: by 2002:a17:90a:22f0:: with SMTP id s103mr6767415pjc.56.1567029980997; Wed, 28 Aug 2019 15:06:20 -0700 (PDT) Received: from Stas-Pro-2070.lan (c-76-126-84-88.hsd1.ca.comcast.net. [76.126.84.88]) by smtp.gmail.com with ESMTPSA id j11sm133075pjb.11.2019.08.28.15.06.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 28 Aug 2019 15:06:20 -0700 (PDT) To: Matthew Brown Cc: Zeev Suraski , PHP internals References: <6ed74ae0-5feb-39de-a39a-f9a8f80401b2@gmail.com> <342BB5DE-80D0-405E-8C71-D959F38D17E8@gmail.com> Openpgp: preference=signencrypt Autocrypt: addr=smalyshev@gmail.com; prefer-encrypt=mutual; keydata= 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 Message-ID: Date: Wed, 28 Aug 2019 15:06:19 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <342BB5DE-80D0-405E-8C71-D959F38D17E8@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [PHP-DEV] [RFC] Reclassifying engine warnings From: smalyshev@gmail.com (Stanislav Malyshev) Hi! > If we want PHP to be as easy as possible then $nullref->bar(), > $foo->someUndefined(), new UndefinedClass etc shouldn’t be exceptions > either - they can just be notices. I don't see how it follows. Calling unknown method does not have natural default - if I tell you "would you please do abracadabra" you can't just do something random and consider it done - you should tell me "what do you mean by that? Please explain what you want me to do". However, if I tell you "here's an apple, add it to your pocket", then there's a natural way of knowing how many apples is in your pocket for every state of your pocket before - if your pocket was empty, it now has one apple, if it had apples before, now it has one more. I don't need to explain you what to do when your pocket is empty and when it's not separately - you can guess intuitively what should happen in each case and you'd be 100% right always. That's the natural difference between $foo++ and foo() - in the former case, you know what should happen in any case (including when $foo is initialized to a non-numeric value - *then* you error out), in the latter, if foo() is not defined, there's no natural way to go but to error out. There's a crucial difference here because variables are containers, not actors. Dealing with an empty container has natural semantics (in some cases at least), dealing with non-existing actor does not. -- Stas Malyshev smalyshev@gmail.com