Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:104684 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 75814 invoked from network); 13 Mar 2019 00:50:26 -0000 Received: from unknown (HELO mail-pf1-f176.google.com) (209.85.210.176) by pb1.pair.com with SMTP; 13 Mar 2019 00:50:26 -0000 Received: by mail-pf1-f176.google.com with SMTP id i20so2772195pfo.6 for ; Tue, 12 Mar 2019 14:40:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:openpgp:autocrypt:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=064H96hSq+eLf5mQn3Ek2TnjgTJUZ9pghOyeP+29XAg=; b=PxrQxYRouaMfRFfZp/QMK+Yk3DQZe0TrFoRdrKIFvcqW2NR5pnL8RRsoaExGHDNh+E 9IGKtF8AB84jTQKcH2nrZiKBWUVbn07Lrhwiwd0u6v8xag/5Lg2Mr+VTdc3XXVzf3BEd hROQ7Z6ngP+uYpZ9mPMykexLo5vGmIwuXenyMd0rtQgCtbDHMoq9NzGLyTDBLvnkUaK4 kAPbeMt3+F/I8Qe7Hz7E+019Z4arqkUuRCZZ5yMuIdYyf1hvQBLAYLsAlrPH1MH4dWp5 qrti0UCjZs7B89Mm0Y3S1moNGmISuf5UbDNO+RzdoYaogU6Pc+fS2rCBtsa52Nk4ELpn VF7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:openpgp:autocrypt :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=064H96hSq+eLf5mQn3Ek2TnjgTJUZ9pghOyeP+29XAg=; b=cj4UTMzrLZGKksQBB0qquOqAhJTX5mX+vVAS/E4s7RCnfr6bcqITNrUoU9d07x3tu9 2QWD/jwiHMChxcy2DKe8dP5a45keFn2f3wbQdEB3QP4nW0G1Ibw9KJDR579oiN8pbMaa rUHAoXSH6oQxYIcf1UzJJ/KMLBlDzSXaVXx2kctYeT7G3qemovBIpIiEZ1KymvPBdiEN 963DMDNI6R/oqchu60QLWf3C92hzm+nmHQJUMsyBCb5TSo9GgguZ0UUz6zWqZfYnALTa Ra8Y6YAoWbhaKHV7sKxuW/PA5AEZgKDVhOKojM5Hx270/ryrZO91EuJO2weWx5nhVZQF FjpQ== X-Gm-Message-State: APjAAAUyVPtfOckKU8rqwF8AYrR27cHwf+erwD9mm3ZxzCVjPhCWnq3m +L4nye6BCtYt/aloTf1U2MqvN3s= X-Google-Smtp-Source: APXvYqxqo0SUjg1mrDfmJydFxY6u+3/XMQ3bYF/mX5SmFTVo+rWW5LOnAhD6uYVCYEmyNLuGLZT5wQ== X-Received: by 2002:a17:902:b08a:: with SMTP id p10mr13769007plr.307.1552426823778; Tue, 12 Mar 2019 14:40:23 -0700 (PDT) Received: from Stas-Pro-2016.local ([198.73.209.241]) by smtp.gmail.com with ESMTPSA id n24sm20854154pfi.123.2019.03.12.14.40.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 12 Mar 2019 14:40:23 -0700 (PDT) To: Rowan Collins , PHP Internals References: <2c497732-96f8-3ef0-bc18-912220fbff4d@gmail.com> Openpgp: preference=signencrypt Autocrypt: addr=smalyshev@gmail.com; prefer-encrypt=mutual; keydata= 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 Message-ID: Date: Tue, 12 Mar 2019 14:40:22 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Thunderbird/60.5.3 MIME-Version: 1.0 In-Reply-To: <2c497732-96f8-3ef0-bc18-912220fbff4d@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] RFC: Locked Classes From: smalyshev@gmail.com (Stanislav Malyshev) Hi! > While it can be useful, the ability to set an object property which is > not part of the class definition can also lead to subtle bugs. Banning > this for all objects would be a significant and painful breaking change, > so I propose instead the option to mark a particular class with a new > keyword, "locked". Isn't it just: trait Locked { public function __set($name, $value) { throw new RuntimeException("Property $name not declared!"); } public function __get($name) { throw new RuntimeException("Property $name not declared!"); } public function __unset($name) { throw new RuntimeException("Property $name not declared!"); } } The RFC says: While this can be achieved through strategic use of the __set, __get, and __unset magic methods, this is long-winded, hard to optimise, and interferes with other uses of those methods. I don't see how it's "long-winded" - it's just three one-liners, I don't see how "interferes with other uses" of these methods (if you want other uses, just add code to the method), and as for optimization, I think we already have optimization for pre-declared properties, and if you don't use any others, it would work just as well. -- Stas Malyshev smalyshev@gmail.com