On Tue, Apr 29, 2008 at 6:14 PM, Richard Quadling <[EMAIL PROTECTED]> wrote:
> 2008/4/30 Robert Cummings <[EMAIL PROTECTED]>: > > > > On Tue, 2008-04-29 at 20:04 +0200, John Carter -X (johncart - PolicyApp > > > > Ltd at Cisco) wrote: > > > I think there's been two responses to this query: > > > > > > 1. We can't have properties in interfaces because interfaces don't > have > > > properties. I would say this is tautological and doesn't add anything. > > > > > > 2. Why would you need to? Getters and setters work. > > > > > > So I suppose to answer my question for myself, there's no real > technical > > > reason for not having properties in interfaces, but getters and > setters > > > work just fine and no-one (including me) really misses them. > > > > I have to agree. Enforcing existence of a property is just as much part > > of an interface as enforcing the existence of a method. Why go down the > > clutzy getter and setter method route when properties were meant to be > > accessed. Why should code be made slower? Methods are at least an order > > of magnitude slower than direct property access. > > > > Cheers, > > Rob. > > -- > > http://www.interjinn.com > > Application and Templating Framework for PHP > > There are some advantages. > > 1 - Read only / write only properties can be created more obviously, > rather than having the logic spread thoughout the __magic_functions. > 2 - Automatic document tools get a real benefit from having a defined > mechanism to work from. > not only that, but the only recourse to add logic to access of previously declared public variables without changing the interface is to resort to magic methods. up front, using public member variables may be enticing, there are less instance methods and access is faster, sure. but when, down the road, some logic is required around access, and the only recourse is to employ a magic method, what would be slower then? the magic method doing runtime introspection on the class instance prior to invoking said logic, or having a purpose built method(s) there in the first place? obviously the later; and that is just one more reason why getters and setters, coupled with hidden member variables, make sense, even in php. -nathan