IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP 7.1.0 disponible


Sujet :

Langage PHP

  1. #161
    Membre chevronné

    Inscrit en
    Août 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 41
    Points : 2 144
    Points
    2 144
    Par défaut PHP 7 : nouvelle Préversion PHP 7.0.0 RC 4 disponible
    PHP 7 : la préversion PHP 7.0.0 RC 4 disponible,
    cette nouvelle mouture vient corriger 22 bogues

    L’équipe responsable du développement de PHP a annoncé la disponibilité de PHP 7.0.0 RC 4 qui vient deux semaines après la sortie de la préversion RC 3 (disponible depuis le 17 septembre 2015). Bien entendu, cette RC est déconseillé pour des utilisations en environnement de production. Cette préversion vient corriger 22 bugs et plus de 100 commits.

    La préversion PHP 7.0.0 RC4 embarque une nouvelle version du moteur Zend qui dispose de la liste (non exhaustive) des fonctionnalités suivantes :

    • rapidité accrue : PHP 7 est deux fois plus rapide que PHP 5.6 ;
    • support des architectures 64 bits ;
    • gestion de plusieurs erreurs fatales en exceptions ;
    • combinaison des opérateurs de comparaisons (<=>) ;
    • classes anonymes ;
    • déclaration du type de retour ;
    • déclaration du type scalaire.


    Cette mouture corrige le bogue #70456 dans Mysqlnd découvert par Sergei Turchanov qui a remarqué que Mysqlnd n’activait pas de protocole de contrôle de transmissions quand il se connectait à un serveur. Elle corrige également le bogue #70013 dans Session découvert par Yasuo qui a réalisé que la référence à la variable de session $_SESSION était perdue après un appel de session_regenerate_id(). La liste complète des bogues corrigés et fonctionnalités de la préversion RC4 est disponible.

    Les développeurs sont ainsi invités à tester cette nouvelle préversion de PHP 7 téléchargeable sur le site et encouragés à fournir les retours de bogues et incompatibilités rencontrés sur le site de bugs PHP.

    La sortie de la préversion RC 5 est prévue pour le 15 octobre 2015.

    Liste de bugs corrigés

    Lien de téléchargement

    Site de bugs de PHP

    source : Site PHP

    Et vous?

    Comment trouvez-vous cette préversion PHP 7.0.0 RC 4?

    Voir aussi
    Forum PHP

    Rubrique PHP(Cours, Tutoriels, FAQ, etc.)

  2. #162
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 18
    Points : 28
    Points
    28
    Par défaut
    Excellent!

  3. #163
    Expert confirmé Avatar de Zefling
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    1 172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 172
    Points : 4 682
    Points
    4 682
    Par défaut
    J'ai bien essayé de l'installer pour tester mes sites, mais ça ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    root@debian-Z1:/opt/php-7.0.0/lib/php/build# systemctl restart apache2                                                    
    Job for apache2.service failed. See 'systemctl status apache2.service' and 'journalctl -xn' for details.
    root@debian-Z1:/opt/php-7.0.0/lib/php/build# systemctl status apache2.service
    ● apache2.service - LSB: Apache2 web server
       Loaded: loaded (/etc/init.d/apache2)
       Active: failed (Result: exit-code) since sam. 2015-10-03 00:56:50 CEST; 5s ago
      Process: 19180 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
      Process: 19208 ExecStart=/etc/init.d/apache2 start (code=exited, status=1/FAILURE)
     
    oct. 03 00:56:50 debian-Z1 apache2[19208]: Starting web server: apache2 failed!
    oct. 03 00:56:50 debian-Z1 apache2[19208]: The apache2 configtest failed. ... (warning).
    oct. 03 00:56:50 debian-Z1 apache2[19208]: Output of config test was:
    oct. 03 00:56:50 debian-Z1 apache2[19208]: apache2: Syntax error on line 224 of /etc/apache2/apache2.conf: Cannot load /usr/lib/apache2/modules/libphp7.so into server: libreco...or directory
    oct. 03 00:56:50 debian-Z1 apache2[19208]: Action 'configtest' failed.
    oct. 03 00:56:50 debian-Z1 apache2[19208]: The Apache error log may have more information.
    oct. 03 00:56:50 debian-Z1 systemd[1]: apache2.service: control process exited, code=exited status=1
    oct. 03 00:56:50 debian-Z1 systemd[1]: Failed to start LSB: Apache2 web server.
    oct. 03 00:56:50 debian-Z1 systemd[1]: Unit apache2.service entered failed state.
    Hint: Some lines were ellipsized, use -l to show in full.
    Il y en a qui ont ce genre de problème ? Bref, je suis retourné sur le 5.6.

  4. #164
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut à tous.

    Citation Envoyé par Arsene Newman
    Le typage strict est aussi de la partie, avec la possibilité de les activer ou pas selon la volonté de l’utilisateur : « fondamentalement, le typage strict une fois activé est super, super strict. Le type doit forcément correspondre ».
    C'est une bonne chose car cela permettra de résoudre quelques problèmes de programmation.

    Citation Envoyé par Spartacusply
    Un langage il est typé ou il est pas typé. Un langage où on peut typer ou pas, ça me faire dire que ça vite être le bordel, puisque qu'on aura le choix entre pas typer du tout, typer juste les objets, tout typer, typer que quand on en a besoin...
    Développer, ce n'est pas faire n'importe quoi.
    Mais quand je voie en mysql des colonnes numériques en varchar ou des dates en integer, je me demande si cette personne à vraiment tout compris de l'usage du typage.
    Je suis partisan du langage typé fort car cela permet de ne pas faire n'importe quoi.

    Citation Envoyé par stailer
    En quelque sorte tu vas rajouter des fonctionnalités persos au langage.
    C'est le principe même de la POO, de faire du code réutilisable.

    Citation Envoyé par stailer
    Voilà mon point de vue
    Ce n'est pas parce qu'on peut le faire qu'on doit le faire. Il faut être rigoureux quand on développe pour éviter des problèmes de compatibilités en changement de version php.

    Citation Envoyé par Arsene Newman
    Enfin, Lerdorf a rappelé que cette nouvelle version déprécie de nombreuses fonctionnalités de PHP4 : « Il y a de fortes chances que votre code vieux de 12 ans plante sous PHP7. En revanche s’il fonctionne sous PHP5, alors il n’y pas d’inquiétude à se faire».
    Je n'ai jamais compris que l'on ne maintienne pas un code, même vieux de plus de 12 ans.
    Dois-je comprendre que le propriétaire de ce code, ne sait pas comment le faire évoluer car il n'a pas la connaissance ?
    Ou bien, tant que l'hébergeur offre encore une version php4, il n'est pas nécessaire de faire cette migration ?
    A moins que tout cela ne soit qu'une question de budget.

    Citation Envoyé par Jarod
    plus ils sont vieux, plus c'est compliqué (et cher) de tout refaire, donc la probabilité de ne rien faire augmente avec le temps
    Il arrivera un moment où la migration coutera plus cher que la refonte de l'application.
    Donc toujours remettre au lendemain ce que l'on peut faire aujourd'hui est une très mauvaise stratégie, surtout en terme de coût.

    Citation Envoyé par Arsene Newman
    Et vous ?
    Qu’en pensez-vous ?
    Très positif, ce gain en performance. J'ai pas encore tout testé, mais je reste positif !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #165
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 136
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    3
    Par défaut
    C'est le principe même de la POO, de faire du code réutilisable.
    Euh oui artemus, merci je suis un peu au courant hein

    Si tu pouvais éviter de prendre un tout petit bout de phrase dans mes réponses (d'ailleurs je sais même pas quand j'ai dit ça, je devais certainement parler d'autre chose quand je parlais "d'étendre le langage") ce serait plutôt pas mal.
    Qui plus est, des mois plus tard...

    Edit :

    Ok j'ai retrouvé exactement ce que j'ai dit :

    Grâce au typage en C#, il a pu être crée les méthodes d'extensions (et ce n'est qu'un exemple).

    Style :
    int multiplierpar2(this int a) { return a * 2; }

    Dans ton code, tu vas pouvoir faire :

    int monInt = 2;
    int res = monInt.multiplierpar2();

    En quelque sorte tu vas rajouter des fonctionnalités persos au langage.
    Donc non ce n'est pas le "principe" de l'objet. Les méthodes d'extensions, apportées en C#, ne sont pas présents dans tous les langages objets.

    Si tu regardes bien l'exemple : C# va détecter que j'utilise bien un type "int" pour me proposer mes extensions à int.
    java ne le propose pas, php ne le propose pas, pascal non plus... C'est un concept récent à ne pas confondre avec l'héritage.

    Bref, je confirme : stp, merci de ne pas prendre des petits bouts de phrases détachées de leur contexte.. On se croirait sur BFM ; )))
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  6. #166
    Expert confirmé Avatar de Zefling
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    1 172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 172
    Points : 4 682
    Points
    4 682
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Développer, ce n'est pas faire n'importe quoi.
    Mais quand je voie en mysql des colonnes numériques en varchar ou des dates en integer, je me demande si cette personne à vraiment tout compris de l'usage du typage.
    Je suis partisan du langage typé fort car cela permet de ne pas faire n'importe quoi.
    Il faut donc aussi interdire le typage <Object> qui permet de faire n'importe quoi. Je me dis que s'il n'y a pas de typage, c'est comme si on avait mis ça, sauf que dans pas mal de cas, ça reste utile quand on s'attend à recevoir des types hétérogènes. Dans le cadre d'une application, je pense qu'on peut s'en passer (et encore en PHP qui ne permet pas la surcharge j'ai un doute), dans le cadre d'un framework web, j'ai un peu plus de mal à imaginer que ça soit possible.

  7. #167
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut à tous.

    Citation Envoyé par stailer
    Donc non ce n'est pas le "principe" de l'objet.
    Bien sûr que oui, et on nomme cela le polymorphisme.

    Par exemple définir la fonction 'multiplerpar2' pour les types smallint, int, double, float ...
    Si le langage ne permet pas de reconnaître le type, je ne voie pas comment il peut sélectionner la bonne fonction selon le type de cette donnée.
    Ou bien, il va faire un choix, en ignorant les autres types qui sont à sa disposition.

    Citation Envoyé par stailer
    Les méthodes d'extensions, apportées en C#, ne sont pas présents dans tous les langages objets.
    Si tu veux faire de la POO, commence par choisir un vrai langage de programmation orienté objet.

    Sinon, je ne comprends pas bien où tu veux arriver avec ta démonstration.
    Le typage sert à codifier les données. La représentation de la donnée en mémoire dépend de ce que tu veux en faire.
    Et tu ne pourras pas faire les mêmes opérations s'il s'agit d'un nombre ou d'une chaîne de caractères.

    @ Zefling : ce dont tu soulèves, ce sont justes des mauvaises habitudes de travail.
    Si le typage des données a été inventé, ce n'est pas pour embêter les développeurs, mais introduire de la rigueur dans les développements.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  8. #168
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 136
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    3
    Par défaut
    @Artemus24 : désolé je peux plus rien pour toi... je viens de t'expliquer et tu comprends toujours pas c'est hallucinant. L'exemple parle de lui-même et je te l'ai expliqué en suivant.. waouh.

    Bien sûr que oui, et on nomme cela le polymorphisme.
    Mais non !!!! C'est pas ça le polymorphisme.

    Je vais pas continuer davantage. Va sur la msdn et tu comprendras mieux les méthodes d'extensions qui ne sont pas des héritages ! Ce sont des METHODES statiques qui rajoutent des fonctionnalités !
    C'est pas du tout pareil et comme je te l'ai dit, java par exemple, ne le propose pas ni beaucoup d'autres langages.

    Arrête de dire des bêtises. Tu t'es trompé, c'est pas grave...
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  9. #169
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Mais quand je voie en mysql des colonnes numériques en varchar ou des dates en integer, je me demande si cette personne à vraiment tout compris de l'usage du typage.
    Je suis partisan du langage typé fort car cela permet de ne pas faire n'importe quoi
    A ce stade, il s'agit d'un débutant... qu'il n'ait pas tout compris n'a rien d'étonnant. Y'a pas de débutants dans les langages à typage fort ?

  10. #170
    Expert confirmé Avatar de Zefling
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    1 172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 172
    Points : 4 682
    Points
    4 682
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    @ Zefling : ce dont tu soulèves, ce sont justes des mauvaises habitudes de travail.
    Si le typage des données a été inventé, ce n'est pas pour embêter les développeurs, mais introduire de la rigueur dans les développements.
    Ça reste toujours possible, alors ça dépends ce que l'on cherche, mais vouloir être trop strict finir parfois par complexifier les choses.

    Personnellement, je bosse en Java et en PHP, et parfois je trouve qu'on met une tonne de code en Java pour faire ce qui se fait en une ligne en PHP et parfois je trouve le PHP pas assez strict pour certaines choses que j’aimerais plus carré. Finalement, j’aimerai bien un mélange des deux.

  11. #171
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut à tous.

    Citation Envoyé par Stailer
    Les méthodes d'extensions, apportées en C#, ne sont pas présents dans tous les langages objets.
    Je ne connais pas le C# et donc je suis allé voir en quoi consiste une méthode d'extension.
    D'après ce que j'ai compris, il s'agit d'ajouter des fonctionnalités à une classe, sans modifier le code source de la classe, et sans créer une classe dérivée de cette classe. C'est bien cela ?

    Citation Envoyé par Stailer
    Si tu regardes bien l'exemple : C# va détecter que j'utilise bien un type "int" pour me proposer mes extensions à int.
    Quel est le rapport avec la méthode d'extension dont tu parles ? Ce mécanisme dont tu parles ici, la reconnaissance du type, n'est pas spécifique à C# mais bien à d'autres langages comme le C++. Et ça, je le confirme !

    Quand je dis que je n'ai pas compris ton exemple, c'est que je ne comprends le rapport avec le typage fort. Un typage fort n'autorise pas les conversions implicites.

    Citation Envoyé par ABCIWEB
    A ce stade, il s'agit d'un débutant... qu'il n'ait pas tout compris n'a rien d'étonnant. Y'a pas de débutants dans les langages à typage fort ?
    Je ne sais pas si c'est le cas, mais il avait des problèmes en php pour traiter des montants (???). Et à ce sujet, je n'en sais pas plus.
    Et d'ailleurs, son problème est qu'il se retrouvait, en php, avec des montants à zéro dont la provenance venait de MySql.

    Citation Envoyé par Zefling
    Ça reste toujours possible, alors ça dépends ce que l'on cherche, mais vouloir être trop strict finir parfois par complexifier les choses.
    Il y a des langages qui sont très bavards, c'est-à-dire qu'un langage peut demander plusieurs lignes de codes alors qu'un autre le fait en une seule fonction. Est-ce de cela lorsque tu parles de la complexification ?
    Ou bien est-ce que la langage qui est strict ne permet pas d'enfreindre quelques règles d'écritures ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  12. #172
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut
    Il y a des langages qui sont très bavards, c'est-à-dire qu'un langage peut demander plusieurs lignes de codes alors qu'un autre le fait en une seule fonction. Est-ce de cela lorsque tu parles de la complexification ?
    Ou bien est-ce que la langage qui est strict ne permet pas d'enfreindre quelques règles d'écritures ?

    Techniquement on peut tous faire en C, mais par exemple pour traiter des strings faut jouer avec des malloc et faire des fonctions de 100 lignes.

    En Python par exemple, tu fait tous ce que tu veut en 1 ligne et c'est plus intuitif.

    Par exemple pour récuperer le dernnier élément d'une chaine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    machaine="toto"
    dernnier_caractere=machaine[-1]
    Depuis que je code uniquement en Python et que j'ai abandonné le C, je voit le vie en rose

  13. #173
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 136
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    3
    Par défaut
    D'après ce que j'ai compris, il s'agit d'ajouter des fonctionnalités à une classe, sans modifier le code source de la classe, et sans créer une classe dérivée de cette classe. C'est bien cela ?
    C'est ça, et donc on peut ajouter des fonctionnalités même sur des types de bas niveau (int, datetime, float, string...).

    Quel est le rapport avec la méthode d'extension dont tu parles ? Ce mécanisme dont tu parles ici, la reconnaissance du type, n'est pas spécifique à C# mais bien à d'autres langages comme le C++. Et ça, je le confirme !
    Quand je dis que je n'ai pas compris ton exemple, c'est que je ne comprends le rapport avec le typage fort. Un typage fort n'autorise pas les conversions implicites.
    La différence c'est que tu ne peux pas étendre "int" par exemple. Tu auras une classe IntExtend que tu devras utiliser avec une méthode qui prendra en paramètre un int. Là non, tu n'as pas de paramètre. L'objet est lui même le paramtère... .regarde les exemples !

    Je te la refais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int a = 0;
    int b = a.multiplierpardeux();
    Je n'ai pas utilisé une classe extérieure... C'est mon int qui a cette méthode multiplierpardeux. d'ou le nom de la technique : "méthode d'extensions".

    Concernant le rapport avec le typage fort c'est très simple : dans la réponse que je donnais dans mon message initial, je disais donc que PHP, n'ayant pas un typage fort, ce type de développement de la part de l'équipe de PHP n'était pas possible. C'était un exemple.

    Comme je le disais également, ça ne m'empêche pas d'adorer PHP et de lui trouver d'autres avantages : )
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  14. #174
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut
    Comme je le disais également, ça ne m'empêche pas d'adorer PHP et de lui trouver d'autres avantages : )
    1er avantage: Il est impossible de part sa conception d'avoir des fuites mémoire, puisque le langage est incapable de conserver des variables.

    C'est loin d'être anodins comme avantage, sa explique une partie de sa démocratisation, un site web sa tourne H24, et si a chaque connexion sur le site on perd 1mo de ram, les serveur a longue faudra les rebooter. Pourquoi y'a qu'en PHP ou il y'a des hébergement mutualisé (pas cher et accessible pour un débutant) ? Voila un exemple.

    D'autre exemple mettant en avant sa conception, comme le faite qu'on ne compile le code, ce qui permet de codé sous Windows ou sur un pc arm et d'envoyer le code sur un serveur UNIX PowerPC sans stress.

    PHP répond parfaitement a un besoin précis, faire un serveur web, pas cher et très flexible.

    Pour les performances, en dehors des gros sites comme Google (et encore Facebook et codé en PHP sous HHVM), php peut être une bonne solution. PHP7 de toute façon vas bientôt arriver pour combler ces lacunes.



    Ce que je regrette c'est que PHP se cantonne à du serveur web, j'aimerais voir apparaitre des bibliothèques graphiques sur ce langages et pouvoir développer des applications native, comme avec python.

    Concernant PHP7, ou sa en est au niveau des thread ?, supporte t'il les threads en natif (sur du multicore) ou pas ?

  15. #175
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut à tous.

    Citation Envoyé par Sazearte
    Techniquement on peut tous faire en C, mais par exemple pour traiter des strings faut jouer avec des malloc et faire des fonctions de 100 lignes.
    D'où l'importance des bibliothèques ! Je préfère utilise la fonction quand elle existe, que de me casser la tête à la recréer.

    Citation Envoyé par Sazearte
    Par exemple pour récupérer le dernier élément d'une chaîne:
    Je ne suis pas du tout contre le fait d'améliorer l'écriture indicielle, si cela permet de simplifier le traitement.

    @ Stailer : merci pour tes explications, mais je préfère le C/C++. Peut-être une question d'habitude.
    Dans un langage, j'aime la rigidité des déclaratives. Je trouve que ce type de possibilité (les méthodes d'extensions) en c# est très confus.
    Quand je déclare une méthode, je la rattache à la classe. Mais là, on a l'impression de l'inverse.

    Citation Envoyé par Stailer
    je disais donc que PHP, n'ayant pas un typage fort, ce type de développement de la part de l'équipe de PHP n'était pas possible.
    Là aussi, je ne comprends pas ce que tu veux dire.
    Un typage faible autorise les conversions implicites. Le typage fort ne les autorise pas.
    Autrement dit, une fonction admet en paramètre le type 'double' et toi, tu mets 'int'.
    C'est pas bien grave, le langage va convertir le 'int' en 'double' pour faire le calcul et au final, va faire la conversion en sens inverse pour restituer du 'int'.
    Justement, avec un typage faible, ce type de possibilité peut se faire aisément (la conversion).

    Citation Envoyé par Sazearte
    PHP répond parfaitement a un besoin précis, faire un serveur web, pas cher et très flexible.
    A chaque langage, son usage. Il n'y a pas de bons ou de mauvais langage, juste de mauvaises utilisations.

    Citation Envoyé par Sazearte
    Ce que je regrette c'est que PHP se cantonne à du serveur web
    C'est son usage premier. Pourquoi le détourner de sa fonction première ?

    Citation Envoyé par Sazearte
    j'aimerais voir apparaître des bibliothèques graphiques sur ce langages et pouvoir développer des applications native, comme avec python.
    En gros, ce que tu demandes, c'est un langage universelle.
    Les langages spécialisés ont toujours eu plus de succès que ceux qui sont dits universelles.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  16. #176
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Citation Envoyé par stailer Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int a = 0;
    int b = a.multiplierpardeux();
    Je n'ai pas utilisé une classe extérieure... C'est mon int qui a cette méthode multiplierpardeux. d'ou le nom de la technique : "méthode d'extensions".

    Concernant le rapport avec le typage fort c'est très simple : dans la réponse que je donnais dans mon message initial, je disais donc que PHP, n'ayant pas un typage fort, ce type de développement de la part de l'équipe de PHP n'était pas possible. C'était un exemple.
    Ça ne m'étonnerais pas de trouver ça dans PHP dans quelques années. PHP a toujours couru après d'autres langages. D'abord Perl, puis Java, puis Javascript et (un peu) les langages fonctionnels.

    Ceci dit, à part le sucre syntaxique, peux-tu m'expliquer l'intérêt des extension methods dans un langage non compilé? Leur principal intérêt est de modifier une classe sans devoir tout recompiler, mais en PHP tu modifies ta classe, tu enregistres, et c'est bon! Pas besoin de tout recompiler!

    De plus, il y a un risque important: quand j'ai un objet, je regarde l'interface de sa classe pour savoir comment le manipuler et comment il va réagir. Mais je ne suis plus sûr de rien si la classe obtient des nouvelles méthodes ou, pire, si ses méthodes sont réécrites dynamiquement "quelque part" dans un fichier... C'est le même problème avec le monkey patching de Ruby. Au moins avec les mixins /traits tu peux rajouter des comportements à une classe de manière explicite.

    Après, je ne développe pas en C# donc je suis vraiment curieux, si tu pouvais expliquer plus sur l'intérêt de cette technique.

  17. #177
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Tsilefy Voir le message
    Après, je ne développe pas en C# donc je suis vraiment curieux, si tu pouvais expliquer plus sur l'intérêt de cette technique.
    Comme tu l'as observé, c'est juste du sucre syntaxique, qui permet d'écrire a.MultiplierParDeux() au lieu de IntExtensions.MultiplierParDeux(a). Dans ce cas précis l'intérêt est limité ; là où ça devient utile, c'est pour chaîner les appels. Ça a été ajouté à C# pour rendre plus pratique l'utilisation de Linq :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    var result = numbers.Where(x => x > 10).Select(x => x * 2).ToList();

    Where, Select et ToList sont des méthodes d'extension. Sans ce mécanisme, il faudrait écrire :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    var result = Enumerable.ToList(Enumerable.Select(Enumerable.Where(numbers, x => x > 10), x => x * 2));

    Ça revient au même, mais c'est beaucoup moins lisible...

  18. #178
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Merci de l'explication. Effectivement je comprends l'intérêt pour Linq, en PHP ou en Java je suis obligé d'hériter ou de composer pour avoir le même résultat, mais je me méfie de ce genre de modification en cours de runtime en-dehors de cas spécifiques comme ça.

    Et pour répondre à Stailer, oui on peut faire ce genre d'opération en PHP avec runkit (sur des objets, pas sur des scalaires), mais je préfère qu'on me tire une balle dans les pieds plutôt que de faire ça :-)

  19. #179
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 136
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    3
    Par défaut
    @Artemus et @Tsilefy : pfffouuu... que répondre. Y aurait pas un dév C# par là , je sais plus quoi leur dire....

    Là aussi, je ne comprends pas ce que tu veux dire.
    Un typage faible autorise les conversions implicites. Le typage fort ne les autorise pas.
    Autrement dit, une fonction admet en paramètre le type 'double' et toi, tu mets 'int'.
    C'est pas bien grave, le langage va convertir le 'int' en 'double' pour faire le calcul et au final, va faire la conversion en sens inverse pour restituer du 'int'.
    Justement, avec un typage faible, ce type de possibilité peut se faire aisément (la conversion).
    Il n'y a pas de paramètre !!!!! C'est l'intérêt !!!!!! regarde, tu as une classe statique (qui va te servir de bibliothèque) et que tu vas appeler par exemple : "MesExtensions".
    Dedans tu vas écrire par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public static string AjouteCool(this string s) { return s + " cool"; }
    Utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    string s = "Bien";
    s = s.AjouteCool();
     
    Retour = Bien cool
    Je peux pas faire plus simple que cet exemple tout pourri !

    Tant qu'à ça :

    Et pour répondre à Stailer, oui on peut faire ce genre d'opération en PHP avec runkit (sur des objets, pas sur des scalaires), mais je préfère qu'on me tire une balle dans les pieds plutôt que de faire ça :-)
    Ben tu fais ce que tu veux, c'est le principe du dév !! c'est proposé mais pas obligé à utiliser. Runkit, c'est pas mal mais un peu plus chiant à utiliser et comme tu le dis : ne fonctionne pas sur les scalaires.
    Je vois pas en quoi cette fonctionnalité pose un problème...

    Mais bon, vu le concours de mauvais foi, en même temps je suis pas surpris ; )
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  20. #180
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut à tous.

    Citation Envoyé par stailer
    @Artemus et @Tsilefy : pfffouuu... que répondre. Y aurait pas un dév C# par là , je sais plus quoi leur dire....
    Tu essayes de convaincre du bien fondé de la méthode d'extension alors que je ne voie rien de particulier par rapport à ce que je connais de la POO.
    Hormis le fait que c'est extérieur à la déclarative d'une classe. Sur ce point, je me pose des questions sur le bien fondé de cette approche.
    Car cela va complexifier la maintenance, juste pour éviter de toucher à l'existant.

    Citation Envoyé par stailer
    Il n'y a pas de paramètre !!!!! C'est l'intérêt !!!!!!
    J'ai beau regarder, je voie des paramètres ! Et c'est normal car c'est une fonction que tu déclares.

    Le premier est celui en entrée de ta fonction 'public static string AjouteCool(this string s) { return s + " cool"; }'.
    Le second est le retour de ta fonction : 'public static string AjouteCool(this string s) { return s + " cool"; }'.
    (En rouge les paramètres). Ne dit pas qu'il n'y a pas de paramètres quand tu en as deux !

    Si tu ne veux pas de paramètres, déclare alors une procédure.
    Mais dans ce cas là, ta démonstration n'a plus aucun intérêt.

    Je te rappelle que l'on parlais au préalable du typage fort vis-à-vis du typage faible. Franchement, je ne voie pas le rapport avec ta démonstration.
    Pour la troisième fois, je te rappelle que le typage faible admet les conversions implicites, tandis que le typage fort les interdits.

    Citation Envoyé par Tsilefy
    peux-tu m'expliquer l'intérêt des extension methods dans un langage non compilé?
    Et même aussi dans un langage compilé ?
    Moi, j'appelle cela créer une usine à gaz quand tu commences à créer des couches supplémentaires, juste pour éviter de toucher à l'existant.
    Tu n'as pas dû faire beaucoup de maintenance dans ta vie (je m'adresse à Stailer). Quand on développe, la seule règle est la lisibilité de ton code.
    Et c'est pas parce que c'est possible de le faire que c'est une bonne pratique.
    En mon temps, il y avait aussi les partisans du 'goto'. Puis est apparu la programmation structurée qui a entériné ce différend.

    Citation Envoyé par Tsilefy
    Après, je ne développe pas en C# donc je suis vraiment curieux, si tu pouvais expliquer plus sur l'intérêt de cette technique.
    Moi non plus, je ne développe pas en C#. Et je ne voie aucun intérêt de cette technique.

    Citation Envoyé par stailer
    Mais bon, vu le concours de mauvais foi, en même temps je suis pas surpris ; )
    Au lieu de nous critiquer, remet toi en cause sur ta pratique du développement.
    Tu pars de l'hypothèse que tu es seul à détenir une vérité car tu connais le langage C#.
    Je connais plusieurs langages comme le 'C++, java, Eiffel, Ada' en ce qui concerne les langages dits objets.
    Et je ne voie aucun intérêt à la méthode d'extension que tu proposes, surtout dans un langage compilé.
    Alors en ce qui concerne les langages non compilé, cela ne sert strictement à rien.

    Bon, on va s'arrêter là sur ce sujet car on tourne en rond.

    (p.s.: c'est moi qui met des '+1' partout ).
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/01/2010, 11h44
  2. PHP 5.2.10 et 5.3.0 RC4 sont disponibles
    Par Rémy d'Aprilli dans le forum Langage
    Réponses: 1
    Dernier message: 20/06/2009, 20h41
  3. PHP 5.2.10 et 5.3.0 RC4 sont disponibles
    Par Rémy d'Aprilli dans le forum Actualités
    Réponses: 0
    Dernier message: 20/06/2009, 17h44
  4. Extension PHP Ming disponible chez Free ?
    Par Flameo dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 24/04/2008, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo