2015-11-27 3 views
0

J'apprends le php oop. Mais je ne peux pas comprendre dans quelles situations utiliser public, privé et protégé. Je sais que le public est accessible à l'intérieur de la classe et en dehors de la classe, protégé à l'intérieur de la classe et à l'intérieur des classes qui l'héritent, privé n'est accessible que dans la classe. Mais comment savoir que la propriété ou la méthode doit être protégée ou privée? Je sais que si écrire classe pour connecter la base de données, ils doivent être protégés ou privés. Mais, un exemple: Je suis en train d'écrire classe ENREGISTREMENT DES (est le code ci-dessous vrai?):Dans quelles situations utiliser public, protected, private (php oop)

private $email; 
private $username; 
private $password; 
private $securitycode; 

private function register { 

//here registrations codes, may be I must use public function ? 

} 

Un autre exemple: je section de nouvelles sur le site et que vous souhaitez obtenir des détails d'information (id, titre, texte, auteur) et écrire classe Nouvelles (est le code donné ci-dessous vrai):

private $id; 
private $title; 
private $text; 
private $author; 

public function get_one_news($this->id) { 

//here the code for getting the news, may be I must use protected function ? 
} 

Un autre exemple: je veux obtenir le nombre d'utilisateurs ou de nouvelles: Ce que je dois utiliser: fonction publique, protégée ou privée? Autre exemple: Chaque utilisateur (enregistré ou non) peut ajouter un commentaire (id, commentaire): Puis-je utiliser public $ id; public $ comment? ou je dois utiliser protégé ou privé?

S'il vous plaît, j'ai besoin de vos conseils. Quel (public, protégé, privé propriétés et fonctions) à utiliser si je veux ajouter/recevoir des nouvelles, enregistrer/connecter l'utilisateur, ajouter/modifier/obtenir des données à partir de tables de base de données, pour faire fileuploading et etc? Je n'ai pas trouvé de réponses à ma question.

+1

Copie possible de [Quelle est la différence entre Public, Privé, Protégé et Rien?] (Http://stackoverflow.com/questions/614818/what-is-the-difference-between-public-private-protected -et-rien) –

Répondre

0

Vous pouvez penser comme ça. Les parties non-privées de votre classe sont son interface avec le monde extérieur. Vous pouvez changer le fonctionnement interne privé autant que vous voulez, sans penser à casser d'autres codes dans votre système. Cependant, dès que vous commencez à modifier les parties non privées, vous devez prendre en compte tous les utilisateurs de votre code en fonction de votre interface publique actuelle. Donc, je pense qu'en règle générale, vous devriez essayer de rendre votre code aussi privé que possible. Vous pouvez augmenter considérablement l'encapsulation de votre base de code, vous permettant de modifier les détails d'implémentation interne sans affecter le code en utilisant votre classe.

Dans un premier temps, réfléchissez aux fonctionnalités que votre nouvelle classe devrait offrir à ses utilisateurs. Cela devrait alors devenir son interface publique. Ensuite, réfléchissez à la question de savoir si votre classe devrait être héritée ou non et quelles parties devraient pouvoir être modifiées dans ses sous-classes. Tout le reste devrait être privé car c'est l'implémentation interne des classes.

+0

alors il serait préférable que je ne peux utiliser que protégé ou privé? –

+0

@ CavidKərimov pas nécessairement. Pensez à ce que les autres classes peuvent être capables de faire avec votre classe. Par exemple. avec votre classe News, que devraient faire les autres? (demander à une instance de news spécifique une présentation textuelle, demander sa catégorie de news, ...). Ceux-ci devraient alors être les méthodes publiques de cette classe. – markus