Vengo da uno sfondo Java e ho lavorato con PHP per quasi un anno. Ho lavorato con WordPress, Zend e attualmente sto usando CakePHP. Stavo attraversando il blog di Cake e non ho potuto fare a meno di notare che Cake fa molto per evitare l'identificatore di accesso "privato". La torta dice
Try to avoid private methods or variables, though, in favor of protected ones. The latter can be accessed or modified by subclasses, whereas private ones prevent extension or re-use.
in questo tutorial.
Perché Cake rifiuta eccessivamente l'identificatore di accesso "privato", mentre un buon design OO incoraggia il suo utilizzo per applicare la visibilità più restrittiva per un membro della classe che non è destinato a far parte della sua API esportata? Sono disposto a credere che le funzioni "private" siano difficili da testare, ma il resto della convenzione è giustificato al di fuori di Cake? o forse è solo una convenzione di Cake del design OO orientata all'estensibilità a scapito di essere un pignolo per il design OO rigoroso (o tradizionale?)?