PS: la présentation originale tourne sur une machine PHP5 pour montrer ses exemples, sauf qu'elle ne tient pas la charge. Le miroir reprend la présentation, mais les exemples n'y fonctionnent pas. Ne soyez donc pas étonnés d'y voir des erreurs PHP de partout. Parmi les nouveautés:
- les espaces de nommages (ou namespace).
- Maintenant les objets sont affectés par références. Ceux qui ont tenté de faire de l'objet en PHP savent que l'opérateur = duplique l'objet (y compris pour la création qu'il fait écrire toto &= new MonObjet ();, et il faut jouer de l'opérateur &= pour affecter une référence. Dans PHP5, tout est référence (comme sont habitués par exemple les développeurs java).
- Les constructeurs et destructeurs ont un nom unifié __construct et __destruct, comme en python.
- La notion de visibilité pour les membres d'une classe (public/private/protected, avec la même signification qu'en C++).
- Introduction de variables et de membres statiques.
- Apparition du mot clef final permettant à une variable de ne pas être redéfinie.
- Possibilité de déclarer des constantes (mot clef const).
- Fonction __clone () sur un objet permettant de le dupliquer facilement.
- Déférencement d'objet automatique (on peut enfin écrire $f->bar()->barbarina();)
- Chargement automatique des classes en utilisant une fonction autoload ( http://talks.php.net/show/php5intro/24 )
- Méthodes spéciales __set, __get et __call (Object overloading & Method Overloading, http://talks.php.net/show/php5intro/24 et http://talks.php.net/show/php5intro/25 )
- Déclaration de classes abstraites
- Possibilité d'utiliser les types pour limiter les arguments de certaines fonctions à certains types (le langage reste uniquement typé dynamiquement).
Et parmi les nouvelles fonctionnalité : une extension mono.
Aller plus loin
- La présentation (77 clics)
- Mirroir (8 clics)
- Source : slashdot (6 clics)
# Sur l'extension mono
Posté par kadreg . Évalué à 9.
<?php
Console = new Mono('System.Console');
$Console->WriteLine('Hello World');
?>
[^] # Re: Sur l'extension mono
Posté par Anonyme . Évalué à 10.
[^] # Re: Sur l'extension mono
Posté par Pierre Thierry . Évalué à 6.
Pour autant, ça me ferait quand même chier de bosser sur Mono, par principe ! ;-)
[^] # Re: Sur l'extension mono
Posté par Pierre Tramo (site web personnel) . Évalué à 10.
On avait dit la meme chose lorsque apple avait décidé de passer a un unix pour son os, résultat: pas le moindre portage dans le sens plateforme proprio -> pateforme libre
[^] # Re: Sur l'extension mono
Posté par patrick_g (site web personnel) . Évalué à 1.
modifs sur khtml ?
c'est vrai que c'est pas lourd mais bon......
# Re: Présentation de PHP 5
Posté par Aurelien . Évalué à 5.
" We're being slashdotted. Uh-oh. :) "
dont il y a le mirroir comme indiqué mais aussi un pdf au cas ou le mirroir supporterait pas la charge ;)
mais à quand " We're being linuxfred" ??
[^] # Re: Présentation de PHP 5
Posté par Erwan . Évalué à -2.
[^] # Linuxfriséd ???
Posté par ceituna (site web personnel) . Évalué à 5.
Bon, ben je vais re-apprendre ma biologie de base....
ok, c'est -1, et je l'assume... :)
# Intéressant, mais...
Posté par tene . Évalué à 10.
S'ils gardent leur base existante, ce sera pas très objet... s'ils refont un truc "from scratch", ça peut être intéressant par contre... (genre prendre les avantages de java, .NET, zope, etc...).
[^] # Re: Intéressant, mais...
Posté par Pierre Thierry . Évalué à 1.
Ça y ressemble, puisqu'on y retrouve déjà au moins les notions d'interfaces... Et effectivement, ça a l'air pas mal différent de l'OOP de la version 4 (vraie encapsulation, constructeurs ET desctructeurs, objets systématiquement par références, etc.)
Et puis des choses qui pourront s'avérer terribles pour ne pas se casser la tête, comme une fonction appelée dès qu'une classe est utilisée, pour s'assurer que le fichier qui la définit soit parsé, ou des noms de fonctions «dynamiques» (appeler $objet->bouh() et $objet->bah() tombe sur la même fonction en fournissant 'bouh' ou 'bah'...).
[^] # Re: Intéressant, mais...
Posté par tene . Évalué à 4.
Mais en fait, je m'interroge non pas sur le langage (il en existe des milliiers, pas de grande révolution dans ces domaines là, et malheureusement les "meilleurs" ne sont pas toujours les plus utilisés), mais sur le framework qui viendra avec... est-ce que l'objet sera juste un "tu écris session.var["test"]; au lieu get_session_var["test"];" ou alors on se retrouvera avec les vrai avantage de l'objet (je fais un système de page, une gestion de cache intégré, j'hérite de ça, donc ma page à directement telle propriétés, je veux crée un forms, j'ajoute non pas du code HTML mais des intances de classes représentant cet HTML, la validation passe par là... etc...
[^] # Re: Intéressant, mais...
Posté par Fulgrim . Évalué à 10.
[^] # Re: Intéressant, mais...
Posté par XHTML/CSS inside (site web personnel) . Évalué à 8.
C'est clair, je pense à tout ceux qui se font un petit site perso avec qq lignes de php dedans, c'est pas l'idéal si ils doivent tout se retaper pour y passer en objet...
C'est un peu l'image du marton-pillon pour écraser une mouche.
De plus, php séduit bcp par sa simplicité d'utilisation (et sa puissance), donc autant espérer que ça garde sa simplicité...
(tout en augmentant sa puissance, bien sûr !)
[^] # Re: Intéressant, mais...
Posté par tene . Évalué à 8.
Je ne dirais pas que l'ASP c'est vraiment de l'objet... tu peux créer une classe mais niveau héritage et polymorphisme c'est pas vraiment ça...
Je suis d'accord que l'objet ca peut être bien pour des gros projets, mais pour des scipts de moins de 100 lignes je n'en vois pas l'interet.
Si effectivement tu ne fais que des script de 100 lignes isolé, c'est pas intéressant... (quoi que un peu de surcharge, ça peut le faire...) mais dans ce cas, tous les langages se valent, certains préféreront l'un ou l'autre, et c'est normal, mais il ne me semble pas qu'il y'ait d'argument ultime pour l'un ou l'autre... Par contre, et c'est un "problème" de PHP (et d'autres...) dès que t'es avec un gros projet, l'objet aide bcp, ça permet de facilité le travail d'équipe, et de faire quelques choses de généralement plus souple et robuste.
Pour la compatibilité avec l'existant, c'est toujours un problème, le choix entre ne pas ajouter de fonctionnalité mais rester compatibilité, et casser la compatibilité mais évoluer... je ne connais pas assez la tambouille interne de PHP, mais à priori je ne vois pas de problème à unir les deux: on garde l'existant, on y ajoute une belle série de classe qui vont bien... on arrive à un truc effiace, les nouveaux projets peuvent profiter de l'objet, les anciens continues à tourner, et peuvent même migrer petit à petit... enfin bref... on verra...
[^] # Re: Intéressant, mais...
Posté par XHTML/CSS inside (site web personnel) . Évalué à 5.
Dans l'idéal, c'est clair que c'est ce qui conviendrait le mieux à tous et pour tous.
Parce qu'il faut voir le nombre de sites qui utilisent encore du php... 3 ! (c'est plus courant qu'on croit)
Sans compter l'utilisation de fonctions obsolètes...
A+
[^] # Re: Intéressant, mais...
Posté par Pierre . Évalué à 1.
# Un lien qui fonctionne ?
Posté par Jean-Marc (site web personnel) . Évalué à -1.
Dans la version PDF c'est tout vide en dessous de "output" et le miroir envoie des parse error ... :|
# Re: Présentation de PHP 5
Posté par xsnipe . Évalué à 10.
Il faudrait voir aussi les perfs quand les scripts sont tout en OO...
Tout ça pour dire que ces nouveautés sont très intéressantes mais il ne faudrait pas que ce soit au détriment des perfs, de la sécurité et surtout de la simplicité (qui reste la grande force de PHP...).
Voilà, mais je préfére quand même le Python (ou le Ruby) pour l'OO car ils ont été conçus comme tel dès le départ...
[^] # Re: Présentation de PHP 5
Posté par nooky59 . Évalué à 4.
Tout çà pour dire que même si PHP n'a pas été conçu pour l'objet, si la couche objet est bien implémentée, çà peut être très bien.
De plus, contrairement à Java où tout est objet, en C++ tu as toujours le choix de développer à la façon C sans les classes, il pourrait en être de même avec PHP.
[^] # Re: Présentation de PHP 5
Posté par xsnipe . Évalué à 3.
# J'ai installé PHP5 \o/
Posté par kadreg . Évalué à 10.
Mon phpinfos : http://rincevent.dyndns.org/phpinfo.php(...)
1ere chose, les anciens script sont compatible (ou presque). Mes scipts marchent tous, phpsysinfo marche. Même phpmonitor qui est programmé objet fonctionne. Le seul qui me pose problème est phpMyAdmin lorsqu'il execute une requête, mais c'est peut être une particularité de phpMyAdmin mal accepté par PHP5 (je rapelle qu'il n'est même pas encore en alpha). A noter que certains de mes scripts font des requetes (select ou insert) sur mysql sans problèmes.
La bibliothèque existante pour PHP4 continue de fonctionner. Les fonctions n'ont pas l'air d'avoir changé de ce coté là. Par contre, comme elles ne sont pas objet, c'est un peu lourd de les utiliser dans un script totalement objet à la mode PHP5. Par contre, il semble que les nouvelles bibliothèques soient elles objet. Par exemple pour créer un itérateur avec SPL (pour parcourir un résultat de requête BD) on crée une nouvelle classe implémentant SPL::iterator. A noter que ces bibliothèques ne semblent pas encore être dans le moteur, mais sont disponibles à part.
Je vous ai également mis quelques exemples de php5 tiré de la présentation ici : http://rincevent.dyndns.org/php5/(...)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.