What are valid reasons NOT to use keywords public, private, protected in php?
The story: I've started a project with a team that actively uses access modifiers in their code (even "public" explicitly) and wants to convince me to do the same. I always find this kind of stuff totally useless in a dynamic language like php, but I realize that my gut feeling is hardly an argument in a technical discussion. Therefore I'm looking for a solid, clear explanation why access modifiers are useless (or even harmful) in php.
I'm aware that some similar topics already exist
- Importance of protected/private in PHP classes
- Why not use 'protected' or 'private' in PHP?
- Best to use Private methods or Protected methods?
however there are several reasons why I'm posting this one
- I am not asking if I should use "public" or not. I'm already not using it.
- I am explicitly not interested to hear why access modifiers are good (I know they're bad, I just need an expert to confirm that).
- If you're about telling me about "best practices" and "principles of OOP", please do not bother.
TIA
mario nailed it (copied from the comments)
In a dynamic language like PHP, it is assumed that the programmer knows how the code works. That means the programmer knows which methods to call and which should not be called directly.
This is similar to untyped variables: in typed languages each variable is explicitly typed, but in PHP it is assumed that the programmer knows the type of each variable.
The
private
modifier is - imho - vastly overused. The problem with it is that it makes it impossible to extend classes. But more importantly, it is a concept that leads one to write code which is class-oriented, rather then object-oriented.I have no beef with
protected
for properties. In fact, I think it should be the only scope used.protected
methods are usually a hassle though, as it makes testing harder.