Il y a deux paradigmes différents ici: programmation orientée objet (POO) et programmation procédurale. Dans OOP, les fonctions sont définies dans le contexte des données, encapsulées par classes; ces fonctions sont généralement appelées méthodes. Lorsqu'une méthode est appelée sur un objet (par exemple une instance d'une classe), elle a intrinsèquement accès à l'état de cet objet. Ainsi, dans votre exemple, strip
sait déjà sur quelle chaîne il est appelé, et ne nécessite donc aucun argument supplémentaire. Chaque fois que votre fonction opère naturellement sur un objet particulier ou un ensemble de données (par exemple, comme strip
agit sur une chaîne), il est judicieux de la définir comme une méthode d'instance de cette manière.
En programmation procédurale, les fonctions sont définies indépendamment des structures de données (classes), et doivent recevoir explicitement les données avec lesquelles elles doivent travailler. Parfois, cette approche est en fait plus naturelle; par exemple, une fonction print
qui imprime une entrée à stdout
, ou similaire, n'est pas naturellement associée à un objet ou à des données particuliers.
La plupart des langages modernes intègrent des fonctions OO, car c'est un paradigme de programmation très polyvalent et puissant. Des langages comme Java et C# encouragent tout le code à être écrit dans un style orienté objet. Dans ces langues, même les types de données de base comme les chaînes et les points flottants sont en fait des objets et ont leurs propres méthodes et états. Cela est particulièrement vrai en C#, où tous les types héritent finalement de System.Object
(même int
et double
) et héritent de toutes les méthodes communes définies par ce dernier. C'est ce qu'on appelle une hiérarchie de type unifié . PHP, d'autre part, a un curieux mélange de POO et de caractéristiques procédurales; il a commencé sa vie comme un langage procédural, et la POO n'a été introduite que dans la version 3 (et seulement dans un sens très rudimentaire). Bien que PHP5 ait une prise en charge de la POO relativement bonne, la plus grande partie de sa bibliothèque standard est toujours implémentée de manière procédurale sous la forme de collections de fonctions qui s'attendent à ce que l'état/données pertinent leur soit transmis en tant qu'arguments.Les bibliothèques de POO deviennent de plus en plus courantes (par exemple avec mysqli
).
PHP n'est pas entièrement orienté objet. Vous pouvez l'écrire, mais PHP lui-même ne l'est pas. Certaines personnes aiment l'appeler objet capable. */moi canards pour la couverture * – PeeHaa
Ne regardez pas PHP quand vous regardez trop de langues. – quantum
@PeeHaa: assez bien; Je rétracte mon commentaire :) –