explication simple PHP POO vs procédural?

106

Je voudrais apprendre PHP et avoir une idée sur la POO et la procédure. J'ai lu d'autres blogs et tutoriels sur la POO et la procédure, mais je ne comprends toujours pas l'approche.

POO vs procédure

  1. Que dois-je apprendre?
  2. Quelle est la différence de code? quels sont les effets?
  3. Comment un framework PHP peut-il aider dans une approche POO? (Je voudrais apprendre CodeIgniter)
  4. La procédure a-t-elle besoin d'un cadre?

Je veux vraiment connaître la différence de code entre les deux, ma compréhension de la POO est que vous créez une classe comme et qu'elle peut être accessible. (Je ne sais pas si c'est correct).

Merci!

Pennf0lio
la source

Réponses:

279

Contexte: Vous avez demandé une "explication simple" qui suggère:

  1. Vous voulez une vue d'ensemble simple et sans jargon
  2. Vous voulez quelque chose qui vous aidera à apprendre dès le début
  3. Vous avez découvert qu'il n'y a jamais deux personnes qui répondent à la question de la même manière et c'est déroutant. C'est la raison pour laquelle vous demandez ici une explication simple. Oui?

Réponse courte sans jargon:

  1. De nombreuses explications introductives sautent rapidement dans les exemples du «monde réel de la POO». Ceux-ci peuvent avoir tendance à confondre plus que l'aide, alors n'hésitez pas à l'ignorer pour le moment.
  2. Vous pouvez considérer le code source simplement comme des «morceaux» de fonctionnalités, qui sont simplement enregistrés dans des fichiers individuels.
  3. Il existe différentes manières d'organiser ces «morceaux»; en fonction de choses comme les conventions du langage de programmation, les antécédents et la formation du (des) développeur (s), ou simplement de vieilles préférences personnelles.
  4. La programmation POO et la programmation procédurale sont simplement deux méthodologies principales, généralement reconnues, pour savoir comment organiser et organiser ces «morceaux» de code.

Réponse longue sans jargon:

Procédure vs POO n'est qu'un aspect d'une question fondamentale de la programmation informatique: comment rendre votre code facile à comprendre et un morceau de gâteau à entretenir professionnellement . Vous pouvez en fait écrire du code «procédural» qui suit certains des principes de la POO, de sorte que les deux ne sont pas nécessairement opposés.

Votre compréhension augmentera vraiment une fois que vous aurez appris d' autres langages de programmation orientés objet , parmi lesquels PHP est un "petit nouveau sur le bloc".

Voici un bref aperçu de ce que vous apprendrez en développant votre expérience:

  • Vous pouvez écrire du code source PHP qui effectue des tâches utiles
  • Vous pouvez organiser les tâches utiles en "morceaux" de code
  • Vous pouvez penser à des "morceaux" de code indépendamment des fichiers individuels où ils sont enregistrés
  • Parfois, ces "morceaux" de code se comportent différemment en fonction des paramètres que vous transmettez
  • Les morceaux de code qui acceptent des paramètres sont appelés "Fonctions"
  • Les fonctions peuvent être "fragmentées" ensemble, et il existe différentes manières de procéder:
    • Par exemple: vous pourriez avoir juste un gros fichier PHP avec toutes les fonctions que vous avez jamais écrites dans votre vie entière, classées par ordre alphabétique par nom de fonction
    • Par exemple: vous pourriez avoir plusieurs fichiers PHP avec des fonctions qui sont regroupées par sujet [par exemple, des fonctions de manipulation de chaînes de base, des fonctions de traitement de tableaux, des fonctions d'entrée / sortie de fichier, etc.]
  • La POO est une manière spéciale de «découper» les fonctions ensemble dans une «classe»
  • Une classe n'est qu'un autre niveau de "segmentation" du code afin que vous puissiez le traiter comme un tout unifié
  • Une classe peut être considérée comme un «segment» de méthodes et de propriétés

    • Les méthodes sont simplement des fonctions qui sont logiquement liées les unes aux autres d'une manière significative. Les mots «méthode» et «fonction» sont fondamentalement deux termes différents pour la même chose.
    • les propriétés sont simplement des valeurs de données liées à la classe. Ce sont des valeurs qui sont intentionnellement non isolées à une fonction individuelle, car plus d'une des fonctions de la classe devraient y avoir accès.
      • Par exemple : si votre classe a un tas de méthodes pour faire de l'astronomie, les propriétés de la classe peuvent être les valeurs de certains nombres célèbres que toutes les méthodes d'astronomie doivent connaître (comme Pi, la vitesse de la lumière, la distance entre des planètes spécifiques, etc.).
    • C'est là que la plupart des explications de la POO deviennent déroutantes car elles se ramifient en " exemples du monde réel " qui peuvent rapidement sortir du sujet . Souvent, le «monde réel» est un euphémisme pour les perspectives ontologiques d'un individu particulier. Cela a tendance à être utile seulement une fois que vous comprenez déjà assez bien le concept pour l'enseigner à quelqu'un d'autre.
    • Pour comprendre la POO sans confusion, vous pouvez ignorer les exemples du «monde réel» pour le moment et vous concentrer uniquement sur le code. Une classe est simplement un moyen de stocker des fonctions (aka méthodes) et des propriétés (aka data) sous forme de code PHP dans un ou plusieurs «morceaux» connexes où chaque «morceau» individuel traite d'un sujet ou d'une fonctionnalité spécifique. C'est tout ce que vous devez savoir pour commencer.
  • Une classe est utile car elle vous permet d'organiser votre code à un niveau très élevé d'une manière qui vous facilite la compréhension, l'utilisation et la maintenance.

  • Quand quelqu'un a écrit beaucoup de fonctions, et les a organisées en beaucoup de classes, et les a fait travailler ensemble d'une manière cool, ils empaquetent le tout ensemble et l'appellent un "Framework" .
  • Un Framework est juste le niveau le plus élevé de "segmentation" (y compris le style de codage et les conventions) sur lequel une ou plusieurs personnes sont d'accord parce qu'elles aiment la façon dont le code est organisé et qu'il convient à leur style de travail, préférences, valeurs, plans pour le monde domination, etc.

Voir également

dreftymac
la source
1
@dreftymac: vous auriez pu me fournir des commentaires sur ce qui pourrait être amélioré dans mes ajouts, au lieu de le supprimer maladroitement derrière mon dos. Vraiment. J'accueille favorablement les critiques constructives et je vous invite à faire de même.
Flavius
1
@Flavius ​​OK. Gratitude pour l'effort et pour avoir pris un moment pour faire des ajouts. Après y avoir réfléchi, il semble raisonnable que l'ajout que vous avez fait mérite sa propre réponse autonome.
dreftymac
2
Un ajout: une classe est également utile pour regrouper les données de fonction afin que vous n'ayez pas à les transmettre dans les paramètres.
chiborg
1
+1 spécialement pour votre définition de "Framework". J'ai entendu beaucoup de gens essayer d'expliquer ce qu'est un cadre, et je pense que le vôtre est le plus facile à comprendre.
TecBrat
1
mate ... c'est la meilleure explication que j'ai lue sur oop vs procédural et j'en ai lu BEAUCOUP! excellent travail vraiment efficace, simple et direct. vous avez raison, les gens utilisent toujours des exemples du monde réel et ce n'est pas un moyen facile de comprendre quoi que ce soit, c'est de la merde!
thechrishaddad
25

La POO n'est rien de plus qu'un modèle de conception. Si vous ne faites que commencer, apprenez les bases en vous concentrant sur l'approche procédurale. Plus important encore, familiarisez-vous avec les principes de base tels que les boucles, les conditions et l'appel d'autres procédures.

Pendant que vous créez votre code procédural, prenez l'habitude en ajoutant des méthodes associées dans un seul fichier source. Apprenez à diviser vos procédures en unités logiques et vous commencez déjà à devenir orienté objet. Fondamentalement, un objet n'est rien de plus qu'un ensemble de méthodes qui sont liées les unes aux autres simplement parce qu'elles fonctionnent sur le même ensemble de données. (Sans parler de bases de données ici, mais de données d'application!)

OO est principalement utilisé pour rendre votre code plus logique en divisant le tout en blocs simples. En combinant les bons blocs, vous obtenez une application complète. OO n'est pas une solution miracle ou un marteau en or qui résoudra tous vos problèmes. Mais ce qu'il fait, c'est rendre votre code plus facile à comprendre.

Là encore, certaines personnes parviennent encore à faire un désordre complet avec des objets, simplement en les transformant en d'énormes super-objets avec des centaines de méthodes. De tels objets ne diffèrent pas beaucoup d'une approche procédurale régulière, simplement en raison de l'énorme quantité de méthodes combinées sans aucune logique réelle. C'est une erreur facile à commettre lorsque les gens commencent trop vite à faire la POO.

Wim ten Brink
la source
3
Je trouve que certains codes POO sont beaucoup plus déroutants .. essayez de regarder dans le ventre de prestashop par exemple.
AndrewC
Excellent point à propos de Pretashop. Magento est une bête fumante en soi, mais nous avons décidé de rester avec elle car des alternatives telles que Pretashop ou WooComm sont encore pires.
PKHunter
6

Vous devriez apprendre les deux. Les objets ne sont que l'une des nombreuses abstractions possibles qui existent, et l'abstraction est ce que la programmation est finalement tout au sujet. Cela dit, commencez par des choses procédurales, puis ajoutez des objets plus tard, car les composants internes des objets PHP sont de toute façon procéduraux.

Quant aux cadres; apprenez d'abord les bases du langage, écrivez des programmes expérimentaux jetables et autres. Plus tard, vous pourrez vous familiariser avec les cadres et vous demander si vous trouvez certains d'entre eux utiles dans un certain contexte. Ils ne sont certainement pas obligatoires.

Joonas Pulakka
la source
6

Pour ajouter les bonnes réponses ci-dessus. Vous devriez voir la POO comme une progression naturelle de votre style de codage - lorsque vous commencez à écrire un petit programme, vous devrez peut-être simplement rassembler quelques lignes de code php, puis les regrouper en fonctions et plus vous écrivez de fonctions, vous en ressentirez le besoin. pour mieux les organiser en classes. OOP laissez simplement votre structure mieux vos codes - permettant une meilleure maintenance du code.

Rawdreeg
la source
6

Les procédures php et oop utilisent le même code php. Ensuite, la seule différence est qu'avec la procédure, vous vous concentrez sur une tâche et c'est tout. Dans oop, vous organisez votre code à l'aide de modèles ou de blocs qui peuvent être réutilisés dans de nombreuses zones différentes du code.

La réponse simple est que vous devez connaître et comprendre php. Vous pouvez l'apprendre sur php.net. Une fois que vous l'avez compris, vous pouvez commencer à organiser votre code en mandrins.

Le code procédural utilise des fonctions, des variables.

Une fois que vous maîtrisez les choses, vous pouvez commencer à organiser les fonctions et les variables en classes. Nous commençons à appeler les fonctions en tant que méthodes et les variables en tant que propriétés.

Bonne chance.

Edward Manda
la source