Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:23392 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 68932 invoked by uid 1010); 15 May 2006 18:16:05 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 68917 invoked from network); 15 May 2006 18:16:05 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 15 May 2006 18:16:05 -0000 X-PHP-List-Original-Sender: zeev@zend.com X-Host-Fingerprint: 80.74.107.235 mail.zend.com Linux 2.5 (sometimes 2.4) (4) Received: from ([80.74.107.235:45955] helo=mail.zend.com) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id 08/49-19568-465C8644 for ; Mon, 15 May 2006 14:16:05 -0400 Received: (qmail 9784 invoked from network); 15 May 2006 18:15:51 -0000 Received: from localhost (HELO zeev-notebook.zend.com) (127.0.0.1) by localhost with SMTP; 15 May 2006 18:15:51 -0000 Message-ID: <7.0.1.0.2.20060515210559.06acd350@zend.com> X-Mailer: QUALCOMM Windows Eudora Version 7.0.1.0 Date: Mon, 15 May 2006 21:15:50 +0300 To: Jason Garber Cc: internals@lists.php.net In-Reply-To: <785810036.20060511193536@ionzoft.com> References: <785810036.20060511193536@ionzoft.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Subject: Re: [PHP-DEV] private, protected, readonly, public From: zeev@zend.com (Zeev Suraski) I have to say that in second thought (after realizing what you really meant) it sounds like a very useful feature. The main thing that worries me is the complexity to the end user, which is already in a pretty bad shape as it is today, and many people here care very little about it, because they can't relate to beginners and average developers. Private/protected/public is a challenge to many of them (not the theory, real world situations), doubling complexity with a modifier is not a good idea. In order to push complexity down I'd avoid making this yet another modifier, and in fact make this an access level, on par with private/protected/public, that would behave like public, except for when outside the object scope (i.e., have it between protected and public). One of the trickey things would be finding an acceptable name, since 'readonly' implies something which this variable isn't (it's very much writable, from the right places). Maybe something like 'visible' (of course preferably we need to find something that begins with 'p'...) Zeev At 02:35 12/05/2006, Jason Garber wrote: >Hello internals, > > __get() and __set() are great, but 90% of the time, I find myself > using them to create public readonly properties. > > The only problem with this is it is horridly inefficient, consuming > at least 1 function call and one switch statement (or equiv) per > property read. > > Would it be possible to create a new object property attribute: > readonly > > class xx > { > readonly $bar; > } > > $o = new xx(); > > $o->bar = 10; > >>> FATAL ERROR > > > This way, PHP would allow reading (as if it were public), but only > allow writing from within the class. > > I think it could really boost performance of complicated application > logic that wishes to enforce good visibility. > > Comments? > > PS. What brought this up was some serious performance issues in a > piece of code that I am working with - most of which can be tied > back to __get() performance. > >-- >Best regards, > Jason Garber mailto:jason@ionzoft.com > IonZoft, Inc. > >-- >PHP Internals - PHP Runtime Development Mailing List >To unsubscribe, visit: http://www.php.net/unsub.php