174 votes

Fonctions cachées de PHP ?

Je sais que cela sonne comme un point question de se prostituer, mais laissez-moi vous expliquer où je veux en venir.

Hors de l'université, j'ai obtenu un poste au PHP de la boutique. J'y ai travaillé pendant un an et demi et je croyais que j'avais appris tout ce qu'il y avait à apprendre la programmation.

Puis j'ai obtenu un emploi comme un homme-le développement interne de la boutique à une importante société où tout le travail est en C#. Dans mon engagement pour la position j'ai commencé à lire une tonne de blogs et de livres et rapidement réalisé combien j'avais tort de penser que je savais tout. J'ai appris sur les tests unitaires, l'injection de dépendance et décorateur modèles, le principe de conception de couplage lâche, de la composition au cours de l'héritage de débat, et ainsi de suite et sur et sur je suis toujours très absorbant tout. Inutile de dire que mon style de programmation a complètement changé dans la dernière année.

Maintenant je me retrouve à chercher un projet php en faisant quelques codant pour un ami de démarrage et de me sentir complètement contraint par opposition à la programmation en C#. - Il vraiment m'ennuie que toutes les variables à portée de classe doivent être visées par l'ajout de '$this->' . Ça m'énerve qu'aucun des IDEs que j'ai essayé d'avoir de très bons intellisense et que mon SimpleTest tests unitaires des méthodes commencent par le mot "test". Il me rend fou que typage dynamique m'empêche de spécification qui implicitement le type de paramètre d'une méthode attend, et que vous avez à écrire une instruction switch pour faire surcharges de méthode. Je ne peux pas supporter que vous ne pouvez pas avoir des espaces de noms imbriqués et utiliser l'opérateur :: pour appeler la base du constructeur de la classe.

Maintenant, je n'ai pas l'intention de commencer un PHP vs C# débat, mais plutôt de ce que je veux dire, c'est que je suis sûr qu'il ya des fonctionnalités PHP que je ne connaissent pas ou connaissent encore ne parviennent pas à l'utiliser correctement. Je suis dans mon C# de l'univers et de la difficulté à voir à l'extérieur du bol en verre.

Donc je me demande, quels sont vos fonctionnalités préférées de PHP? Ce sont des choses que vous pouvez faire ce que vous ne pouvez pas ou sont plus difficiles dans la .Net languages?

328voto

Kyle Cronin Points 35834

Documentation. La documentation obtient mon vote. Je n’ai pas rencontré une documentation en ligne plus approfondie pour un langage de programmation - tout le reste je dois reconstituer de diverses pages de sites Web et de l’homme.

179voto

user8134 Points 1273

Les tableaux de. À en juger par les réponses à cette question, je ne pense pas que les gens apprécier pleinement juste comment facile et utile Tableaux en PHP. Les Tableaux PHP agir comme des listes, des cartes, des piles et les structures de données générique, tous en même temps. Les tableaux sont mis en œuvre dans la langue de base et sont utilisés partout dans le lieu qui permet un bon CPU cache localité. Perl et Python à la fois utiliser des éléments de langage pour les listes et les cartes résultant en plus de la copie et déroutant transformations.

167voto

Allain Lalonde Points 28717

Les gestionnaires de flux vous permettent d’étendre le « système de fichiers » avec logique qui autant que je sache est assez difficile à faire dans la plupart des autres langues.

Par exemple avec le Gestionnaire de flux de données de MS-Excel , vous pouvez créer un fichier MS Excel de la manière suivante :

131voto

Allain Lalonde Points 28717

Les Méthodes magiques sont l'automne grâce à des méthodes qui appelés à chaque fois que vous appelez une méthode qui n'existe pas ou affecter ou de lire une propriété qui n'existe pas, entre autres choses.

interface AllMagicMethods {
    // accessing undefined or invisible (e.g. private) properties
    public function __get($fieldName);
    public function __set($fieldName, $value);
    public function __isset($fieldName);
    public function __unset($fieldName);

    // calling undefined or invisible (e.g. private) methods
    public function __call($funcName, $args);
    public static function __callStatic($funcName, $args); // as of PHP 5.3

    // on serialize() / unserialize()
    public function __sleep();
    public function __wakeup();

    // conversion to string (e.g. with (string) $obj, echo $obj, strlen($obj), ...)
    public function __toString();

    // calling the object like a function (e.g. $obj($arg, $arg2))
    public function __invoke($arguments, $...);

    // called on var_export()
    public static function __set_state($array);
}

Un développeur C++ ici remarquerez peut-être que PHP permet la surcharge de certains opérateurs, par exemple, () ou (string). En fait PHP permet de surcharger encore plus, par exemple l' [] opérateur (ArrayAccess), l' foreach construction du langage (Iterator et IteratorAggregate) et l' count de la fonction (Dénombrable).

95voto

Dean Rather Points 7856

La classe standard est un récipient propre. J’ai seulement appris à ce sujet récemment.

Au lieu d’utiliser un tableau pour stocker les attributs serveral

Vous pouvez utiliser une classe standard

Ceci est particulièrement utile lorsque vous accédez à ces variables dans une chaîne

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X