E 'giustificato evitare l'identificatore di accesso privato in PHP?

4

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?)?

    
posta Tifa 18.10.2013 - 11:33
fonte

1 risposta

10

Il mondo PHP è pieno di cattivi consigli e la tua citazione ne è un altro esempio. CakePHP è un framework entry level e la sua documentazione è scritta pensando agli sviluppatori meno esperti. Ciò, tuttavia, non giustifica una dichiarazione così ingenua, specialmente nella documentazione ufficiale del framework.

Se utilizzerai private o protected è una scelta di progettazione. Se non è necessario ereditare proprietà e funzioni, utilizzare private . Se, d'altro canto, il tuo progetto richiede che tali proprietà e funzioni siano disponibili per sottoclassi, usa protected .

È davvero così semplice.

    
risposta data 18.10.2013 - 11:53
fonte

Leggi altre domande sui tag