PHP langage Multiplateforme ?

Marie.B
Invité n'ayant pas de compte PHPfrance

22 janv. 2009, 16:57

Bonjour dans le cadre de mon projet de fin d'étude pour la réalisation d'une application pour mon entreprise, et étant novice dans le développement.

J'aurais aimé savoir si le langage PHP était multiplateforme ? et si oui pourquoi ? et comment ?

Merci pour vos réponse :D

ViPHP
ViPHP | 3607 Messages

22 janv. 2009, 17:24

Oui!
Pourquoi? Pourquoi pourquoi?
Ben c'est une volonté des dévellopeurs... :roll:
Comment?
En téléchargeant les versions qui vont biens ;) (http://fr2.php.net/downloads.php)

Eléphant du PHP | 353 Messages

22 janv. 2009, 17:33

PHP est bien un langage multiplateforme car il est conçu pour fonctionner sur plusieurs systèmes.
Tant sur linux et mac que sur windows.
C'est aussi simple que cela.

ViPHP
ViPHP | 1136 Messages

23 janv. 2009, 08:54

Salut ,

Donc comme l'ont dit "jojolapine" et "yaug":

PHP multiplateforme : Oui

Pourquoi : Car les interpréteurs PHP sont disponibles sous n'importe quel OS

Comme : De la même façon que je Java , PHP est un langage interprété cela signifie que ton code source , n'est pas compilé et , n'a pas besoin de l'être pour qu'il puisse être utilisé .

C'est le serveur qui se charge de le convertir en langage machine , tout comme java .
L'avantage , est donc , qu'un code PHP qui tourne sur un serveur Linux , peut aussi fonctionner parfaitement sous un serveur windows , et ce , sans aucune modification du code source .

Voilà , pour la petite explication .

Christophe.

Marie.b
Invité n'ayant pas de compte PHPfrance

23 janv. 2009, 12:17

Merci beaucoup pour vos réponses !!!!! :D :D :D :D :D

Administrateur PHPfrance
Administrateur PHPfrance | 11443 Messages

23 janv. 2009, 12:38

Juste un détail... :-*

Modération :
Merci de ne pas abuser des caractères en gras dans ton message.
C'est moins lisible et ça n'apporte rien de plus.

Administrateur PHPfrance
Administrateur PHPfrance | 11443 Messages

23 janv. 2009, 12:39

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

Eléphant du PHP | 139 Messages

23 janv. 2009, 14:20

Comme : De la même façon que je Java , PHP est un langage interprété cela signifie que ton code source , n'est pas compilé et , n'a pas besoin de l'être pour qu'il puisse être utilisé
Heu! Je ne suis pas certain que Java fonctionne de la même manière. Java est un langage que l'on compile...

ViPHP
ViPHP | 1136 Messages

23 janv. 2009, 14:36

Oui et non ,

Effectivement , on "compile" le code source java pour le transformé en "byte code" ( et non directement en langage machine ).

Ensuite , La JVM interprète ce "byte code" .

Je ne suis pas entré dans les détails car au finale , le code java est bien interprété par une JVM que j'ai ici comparé à apache ( d'ou la portabilité sans modification de code ) , ce n'est pas comme le C ou C++ qui eux , lorsqu'ils sont compilés , sont transformé en langage machine donc propre à une architecture , pour rendre un programme C++ compatible sur une autre archi , il faut le recompiler pour celle-ci ...

ViPHP
ViPHP | 4674 Messages

23 janv. 2009, 19:15

Hey :),

Il faut remettre quelques pendules à l'heure je pense.

Par abus de langage (sans mauvais jeu de mot), quand on parle de compilation c'est toujours « en langage machine », mais on peut compiler pour autre chose. La compilation c'est juste le fait d'analyser (lexicalement et syntaxiquement) un code et de le transformer dans un autre code.
Partant de ce postulat, C/C++ est compilé, Java aussi, mais PHP également ! À votre avis, comment PHP s'exécute au final ? Il est transformé dans un byte code que le ZE (Zend Engine) comprend et arrive à exécuter. Pour Java, c'est la même chose. Il est compilé en byte code qui est interprété par la JVM (Java Virtual Machine). C'est ce qui permet entre autre l'interopérabilité des applications car il suffit de créer un interpréteur (ZE ou JVM) par plate-forme et le langage sera opérationnel sur cette plate-forme sans re-modifier le cœur/noyau du langage.

Petite note au passage, le byte code de Java n'est rien d'autres que de l'assembleur amélioré, i.e. avec quelques fonctionnalités supplémentaires, mais dans l'ensemble ça reste de l'assembleur, tout bêtement. Ça doit être pareil (je n'ai pas étudié encore cette partie), mais PHP ne réinvente par la roue dans ce genre de domaine, donc …

Pourquoi dit-on que PHP est alors interprété au lieu de compilé ? Je ne sais pas ce que les Wikipédestres nous diraient, mais je pense que c'est une notion de volée. PHP est compilé puis interprétée à la volée, c'est à dire que le résultat de la compilation n'est jamais stocké à long terme. Aussitôt compilé, aussitôt absorbé/interprété et supprimé. Alors que pour Java, on a le résultat de la compilation qui est stocké une fois pour toute. C'est juste ça. Pareil pour C/C++ etc. hein, je donne des exemples, je ne fais pas de favoritisme …

Maintenant, les performances d'un langage compilé ou interprété (avec les connaissances que l'on vient d'apprendre), je ne saurais tenir un comparatif pertinent … Peut-être que quelqu'un a étudié ça de manière plus approfondie que moi :-k
Trivialement, je dirais qu'il y a plus d'optimisations effectuées lors d'une compilation que d'un interprétation car de la vitesse de l'interprétation dépend l'attente du résultat. Si l'interpréteur met 10 minutes pour optimiser quelques lignes de codes, on aura perdu du temps. L'interpréteur doit donc transformer/compiler le code très rapidement. Le compilateur peut prendre son temps, on s'en fout pas mal, il nous faut un résultat optimisé (typiquement pour une plate-forme précise).

Disons qu'il y a des avantages et des inconvénients. On ne peut pas trancher à vif comme ça, ça mérite plus d'attentions et d'études.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 1136 Messages

23 janv. 2009, 19:41

Merci pour cette mise au point , claire est précise ...

une subtilité qui n'est pas toujours évidente à mettre en avant ... la preuve ... :D

Jeanphi
Invité n'ayant pas de compte PHPfrance

03 août 2012, 17:50

Bonjour,

je suis plutôt novice en PHP, mais je me pose la question suivante :
si PHP est multi plate-forme, comment ça se fait que je cherche désespérément une solution simple pour gérer les chemins de mes fichiers, qui sont différents sous Linux et sous Windows ? Et ce, à cause du slash (/) sous Linux, et de l'antislach (\) sous Windows.

Merci de m'éclairer.

ViPHP
ViPHP | 4674 Messages

03 août 2012, 18:05

Tu peux utiliser la constante DIRECTORY_SEPARATOR, mais note que les dernières versions de Windows supportent aussi bien le slash que le backslash.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 2278 Messages

04 août 2012, 10:31

C'est marrant que cette question fasse ressurgir une vieille discussion sur le code compilé.

Si mes souvenirs sont bons, en indiquant à php des chemins à la mode Unix, il les retrouve sur une machine DOS:
/chemin est compris par php windaube comme \chemin

Ne me mettez pas sens dessus dessous, si je m'ai trompetté.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 août 2012, 11:57

En complément de ce qui a déjà été dit, j'ajouterais simplement que Multiplateforme pour un serveur ne signifie pas nécessairement compatibilité des applications qui seront déployées dessus.

Par exemple, la commande exec() te permet de demander l’exécution d'une commande par le système, que celui-ci soit sur un noyau Windows, Linux ou autre. Cependant si dans ton code tu demandes l'exécution de la commande "ls" (permettant de lister le contenu d'un répertoire sous linux) sur un serveur windows, il te répondra que la commande que tu veux exécuter est inconnue, car la plateforme windows utilise l'instruction "dir". PHP n'en reste pas moins capable de faire exécuter une commande à l'une ou l'autre des plateformes :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...