begin process at 2013 06 19 20:11:14
  Trouver un code source :
 
dans
 
Accueil > 

Tutoriels

 > 

Astuces

 > PHP : MÉCANISMES A CONNAITRE

PHP : MÉCANISMES A CONNAITRE


 Information sur le tutoriel

Note :
Aucune note

 Description

Php est un langage interprété simple dans son ensemble, mais il recèle néanmoins certaines astuces
ou subtilités ou tout simplement des mots clef vraiment utiles que l'on ne connais pas forcement quand on
commence a travailler avec et je vais essayer de vous donner ici quelques unes de ces subtilités.

Tutorial

0. Les notions de base a bien comprendre :

    La visibilité des variables :

        Comme dans tout langage les variables ont un contexte, en PhP on peu les réduire simplement à 4 portéesdifférentes :


            Je suis dans une fonction => Je suis disponible que dans cette fonction

            Je suis une globale => Je suis disponible partout

            Je suis une propriété de classe => Je suis disponible en fonction de mon type de déclaration :

                private => Que dans la classe

                protected => Dans la classe et dans ses enfants

                public => Directement depuis une instance de la classe


    Le scope => Un scope est un contexte d'exécution et plus particulièrement de visibilite des variables et des fonctions.

    C'est une notion complexe aussi je vous laisse lire ceci pour mieux la comprendre :

        http://www.projectperfect.com.au/info_define_the_scope.php

    

    Les designs patterns => Ce sont des méthodes de programmation purement logique pour répondre a un problème donne.

    Il faut les connaitre, il faut savoir que ca existe et il faut se renseigner dessus.


1. L'operateur ::, la résolution de portée :

    Si vous voulez utiliser des fonctions ou des variables statiques il sera obligatoire et pour plus d'explications :

    http://php.net/manual/fr/language.oop5.paamayim-nekudotayim.php

        

2. Les mots clef méconnus ou peu utilises :


const et la fonction define :

    Ces deux mots clefs vous permettrons de déclarer les variables dont vous pouvez avoir besoin partout dans votre code.

    Notez que avec le mot clef const vous pourrezdéfinir des variables complexes comme des objets ce que vous

    ne pourrez pas faire avec define qui se contente des type simples.

    Pour plus d'informations : http://stackoverflow.com/questions/2447791/define-vs-const

    

global :

    Un mot clef vraiment utile, soit le code suivant :

    

    $a = 10;

    function toto()

    {

        global $a; # Ici $a vaudra 10

    }

    

    Le fait de mettre global devant la variable $a va préciser agir comme le mot clef extern en c, c'est a

    dire que PhP va regarder si une variable de ce nom a étédéclaré quelque part dans votre code et si elle existe

    ce sera celle la qui sera utilisée.


static :

    Souvent mal compris ce mot clef est très utile.

    Il va vous permettre de déclarer des variables ou des fonctions dites statiques et cela implique que vous

    n'aurez pas a instancier un objet pour y accéder !

    Souvent il est plus intéressant de faire une fonction statique ou déclarer une variable statique et des fois ca

    sera même indispensable notamment si vous comptez par exemple implémenter un Singleton (la je vous laisse découvrir les

    design pattern).

    

    Ce que vous devez retenir c'est que pour accéder a une fonction ou une variable statique vous devrez utiliser

    l'operateur ::

    

self :

    Le mot-clef self permet d'utiliser une méthode ou une propriété de la classe elle-même.


parent :

    La c'est la notion de l'héritage qui est en jeu et la je vous conseille de lire ceci :

    http://php.net/manual/fr/keyword.extends.php

    A vous de comprendre la notion d'héritage ce n'est plus du PhP mais de la programmation oriente objet.


3. Les constantes dynamiques :


__CLASS__ :

    Dans une classe ce mot clef vaut le nom de la classe ou on se trouve.

    Exemple :

    class maClasse

    {

        public function __construct()

        {

            echo __CLASS__; # Affichera "maClasse"

        }

    }

    

__FUNCTION__ :

    Dans une fonction ce mot clef vaut le nom de la fonction ou on se trouve.

    Exemple :

    

    function maFonction()

    {

        echo __FUNCTION__; # Affichera "maFonction"

    }

    

__FILE__ :

    Nom du fichier ou cette constante est utilisée.


4. Les raccourcis :

    ++ : Incrémentation de la variable de 1 selon son type

    -- : Décrémentation de la variable de 1 selon son type

    +=, -=, *=, /= : les opérations de bases appliques directement du cote gauche

        exemple : $var a = 10; $a *= 10 donnera 100;

        

5. L'operateur & devant une variable :

Plutot qu'une longue explication un exemple sera plus parlant,

function a(&param)

{

   param / 2;

}

$b = 10;

a($b); # La fonction a reçu la variable par référence et non par copie, son contenu est directement modifie par la fonction !

$b vaut 5 après l'appel.

6. Le $$ :


    Non non ce n'est pas un barbarisme mais une beauté du langageinterprété :)

    Nous savons tous que une variable se déclare de la manière suivante en PhP : $nom_de_ma_variable.

    Maintenant un cas pratique : soit une variable $var = 'toto';

    

    En utilisant $ devant une variable contenant une chaine PhP va tout simplement agir comme suit et ce

    grâce a la priorité des operateurs (chaque operateur a une priorité d'interprétation lorsque les code est analysé).

    

    $var => contient la chaine 'toto'

    $ => ce qui suit est une variable

    

    Conclusion : $$var = que contient la variable de nom $var soit que contient la variable $toto !

    Utilité : Cree du code générique principalement, grâce a ce mécanisme on va pouvoir faire de jolie chose

    en évaluant le contenu de variable dynamiquement !


6. Les structures conditionnelles :


    Le foreach :

    Vraiment TRES utile ! Je ne vais pas trop m'étendre dessus mais c'est comme un for mais en mieux :)

    

    Exemples :

    

    $arr = array(1, 2, 3);

    foreach ($arr as $value)

    {

        echo $value;

    }

    Ceci affichera : 123

    

    foreach ($arr as $index => $value)

    {

        echo $index.':'.$value;

    }

    Ceci affichera : 011223 et pour plus de précision :

    $arr = array

    (

        'clef1' => 1,

        'clef2' => 2,

        'clef3' => 3

    );

    foreach ($arr as $index => $value)

    {

        echo $index.':'.$value;

    }

    Ceci affichera : clef1:1clef2:2clef3:3

    Je pense que c'est assez clair ^^

    

    Pour finir du cote des structures utiles je vous conseille de vous renseigner sur le "switch"

    et le "do / while".

    

    Si vous devez optimiser la rapidité de votre code :

    Utilisez = = = plutot que = = c'est l'operateur d'egalite stricte qui est plus rapide mais attention :

    true === true est vrai alors que 1 === true est faux, pourtant 1 == true est vrai (l'egalite stricte se base aussi sur le type)

    Le switch est plus rapide qu'une batterie de if, c'est toujours bon a savoir :).

    Un for est traduit en while alors utilisez un while (Bon la j'avoue c'est vraiment minime).

    

Voila ce tutorial évoluera certainement avec le temps, j'espère vous avoir donne quelques informations intéressantes :)


 Historique

23 mars 2011 00:44:58 :
Maj
23 mars 2011 09:39:38 :
Maj

Commentaires

Commentaire de Morphinof le 24/03/2011 21:33:17

Personne n'a de commentaire ou de conseils sur les points important a aborder quand on commence php et particulierement sur les bonnes techniques a acquerir ?

Commentez pour donner a ceux qui commence de bonnes bases en PhP et surtout de bonnes habitudes de programmation c'est le but de ce tuto :)

Commentaire de holocost le 25/03/2011 11:20:32

Merci frero ... c tres utile =)

Commentaire de JDel le 01/04/2011 12:03:48

Excellent tuto, j'ai encore appris de nouvelles choses.
Pourrais tu donner un exemple plus concret pour l'operateur "$$" j'ai pas tout compris ^^
merci

Commentaire de Morphinof le 01/04/2011 18:32:56

Bonjour !

Attention $$ n'est pas un operateur c'est un mecanisme ;)

Je vais essayer de le detailler un peu plus, c'est le concept des variables dynamiques :

$ represente les variables, par exemple $a declare une variable qui s'apelle "a".

Maintenant on lui donne une valeur comme par exemple : $a = 'hello';

Efin que ce passe il si on fait $$a ?

D'abord PhP va lire le premier dollard et va en deduire que derriere ce dollard va donc se trouver une variable et va donc l'interpreter comme tel.
Ensuite il va lire un deuxieme dollard et va donc repeter ce mecanisme.
Il faut bien comprendre que les choses se font dans un ordre precis : récursivement.

Concrètement PhP va donc commencer par lire le contenu de la variable $a qui contient "hello", puis va considérer que avec le premier dollar il y a encore une variable a lire et vu que $a contient "hello" PhP va lire le contenu de la variable $hello.

En pratique :

$hello = 'Coucou !';
$a = 'hello';
echo $$a;

Va afficher le contenu de $hello soit : "Coucou !".

Voila j'espere que c'est assez clair et voici le lien vers l'explication de l'interpretation des variable en PhP : http://www.php.net/manual/fr/language.variables.variable.php

Commentaire de JDel le 02/04/2011 13:30:04

Merci pour tes explications, c'est nettement plus clair^^
C'est surtout utile pour generé un nombre x (inconnu a l'avance) de variables.
J'ai deja utilisé ce systeme mais juste avec les "{}"
Je comprend maintenant mieux ce mecanisme.

Merci

Commentaire de Morphinof le 04/04/2011 09:39:42

De rien, si tu as d'autres question n'hesites pas :)

Commentaire de mansourti le 09/04/2011 15:08:52

bon soir, svp queles sont les codes PHP pour faire "parcourir..." ? et merci .

Commentaire de Morphinof le 11/04/2011 11:13:26

Ce n'est pas un code PhP mais le compsant html file qui va te permetre de parcourir tes fichier :

http://www.quirksmode.org/dom/inputfile.html

Commentaire de aKheNathOn le 18/04/2011 11:40:00 administrateur CS

LOL "Non non ce n'est pas un barbarisme mais une beauté du langage interprété :)"

Effectivement, j'adore, et pour aller plus loin :
class foo {
  ...
}
$className = 'foo';
$instance = new $className();

C'est quand même plus sympa que d'instancier plein d'objets comme on devrait le faire en JAVA !

Un autre truc bien utile, le spl autoload :
http://php.net/manual/fr/function.spl-autoload-register.php

T'as la pêche en ce moment morphinof :)), ça fait plaisir à voir

Bonne continuation,
akh

Commentaire de Morphinof le 18/04/2011 21:17:13

Effectivement aKheNathOn j'avais oublie de dire que ca  marche avec les instanciation, merci de le rappeler ;)

Commentaire de eltyty le 08/06/2011 11:24:29

Tu aurais pu ajouter l'utilisation de $this->test->test() par exemple

En tout cas pas mal du tout.

Commentaire de Morphinof le 08/06/2011 14:07:59

En effet c'est encore un exemple de ce que l'on peu faire.
Le fait est que c'est le principe qu'il faut surtout comprendre ^^

Commentaire de aminefff le 27/11/2011 18:47:39

Merci chef très utile

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Juin 2013
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,451 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales