What would everyone think about multiple levels of visibility for getters/setters?
class Sample {
public $Variable {
public get { return "Public"; }
protected get { return "Protected"; }
private get { return "Private"; }
public set { ... }
private set { ... }
}
}
Whichever getter/setter would be called with the most restricted access, so externally public, internally protected (if inherited) or private from within.
Any value to this? I can see some use cases and wouldn't be any more difficult to implement into what I'm already doing.
-Clint
What would everyone think about multiple levels of visibility for getters/setters?
class Sample {
public $Variable {
public get { return "Public"; }
protected get { return "Protected"; }
private get { return "Private"; }public set { ... }
private set { ... }
}
}
No please.
That will create a major WTF factor.
-Hannes
That would be a resounding no from everyone. :)
-----Original Message-----
From: Hannes Magnusson [mailto:hannes.magnusson@gmail.com]
Sent: Friday, November 18, 2011 8:16 PM
To: Clint M Priest
Cc: internals@lists.php.net
Subject: Re: [PHP-DEV] Multiple Visibility Level Getters/Setters
What would everyone think about multiple levels of visibility for getters/setters?
class Sample {
public $Variable {
public get { return "Public"; }
protected get { return "Protected"; }
private get { return "Private"; }public set { ... }
private set { ... }
}
}
No please.
That will create a major WTF factor.
-Hannes
What would everyone think about multiple levels of visibility for
getters/setters?class Sample {
public $Variable {
public get { return "Public"; } protected get { return
"Protected"; }
private get { return "Private"; }public set { ... } private set { ... }
}
}
No. Don't. Ever.
Mike
Just throw an error if conflicting accessors are defined. In the case of subtypes: accessors may broaden the interface, but not limit it => LSP. So it’s fine to make a parents protected accessor public, but not the other way around.
Am 19.11.2011 um 02:46 schrieb Clint M Priest:
What would everyone think about multiple levels of visibility for getters/setters?
class Sample {
public $Variable {
public get { return "Public"; }
protected get { return "Protected"; }
private get { return "Private"; }public set { ... } private set { ... }
}
}Whichever getter/setter would be called with the most restricted access, so externally public, internally protected (if inherited) or private from within.
Any value to this? I can see some use cases and wouldn't be any more difficult to implement into what I'm already doing.
-Clint
personally i think only public should be done with this method
all others should be follow the __set/__get method, since if you need
special rules, then they would be set-able by a public method
Just throw an error if conflicting accessors are defined. In the case of
subtypes: accessors may broaden the interface, but not limit it => LSP. So
it’s fine to make a parents protected accessor public, but not the other
way around.Am 19.11.2011 um 02:46 schrieb Clint M Priest:
What would everyone think about multiple levels of visibility for
getters/setters?class Sample {
public $Variable {
public get { return "Public"; }
protected get { return "Protected"; }
private get { return "Private"; }public set { ... } private set { ... }
}
}Whichever getter/setter would be called with the most restricted access,
so externally public, internally protected (if inherited) or private from
within.Any value to this? I can see some use cases and wouldn't be any more
difficult to implement into what I'm already doing.-Clint