On Tue, Apr 09, 2002 at 11:11:58AM +0200, Marcus B?rger wrote:
> Keywords are better then implicit definitions.

Agreed.

> I would like to have private, protected and public which can
> be easily done by adding one single flag to the members of an
> object.

So how would you set or reset these flags at run-time?

> With friends implementation may be much harder because each
> class or even object has to have a friends list.

Why would friend be necessary in the first place, when you
simple could 

class A {
  private $slot;
}

class B {
  function do_with_an_A(&$someA) {
    @$someA->slot = 10; // I know it is private and I intend to break it.
  }
}

"friend" is just a compile-time declaration of a list of classes
for which you intend to break privacy, and if you can to it
anyway at run-time, you do not need such a declaration.

> >protected and friend are commonly compile-time mechanisms, so
> >they are not sufficient for us, unless you refer to an uncommon
> >case where protected() and friend() are being used as functions
> >on existing objects or classes in order to modifiy accessibility
> >attributes after object instantiation.
> 
> Why are they not sufficient?

Because, again, they require a complete and finished declaration
of privacy breakage at compile time. That is lacking dynamism,
and for some more advanced applications such breakage at
run-time would be extremely handy.

> There is nothing that forbids us to save information generated
> for the compiler tree into our classes/objects and using them
> at run time.

"using" would not be enough here, "modifying" or "ignoring"
would be called for.

Kristian

-- 
Kristian Köhntopp, NetUSE AG, Dr.-Hell-Straße, D-24107 Kiel
Tel: +49 431 386 435 00, Fax: +49 431 386 435 99

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to