Dotclear

Vous n'êtes pas identifié(e).

Annonce

#1 2009-07-31 12:31:54

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

PHP 5.3 : évolutions requises pour plugins et thèmes

Bonjour,

Comme indiqué précédemment, nous sommes en train de préparer le terrain pour supporter php 5.3 au niveau de dotclear 2. Des

Cela implique un certain nombre de modifications au niveau du core, mais aussi hélas au niveau de la plupart des plugins, ainsi que de certains thèmes.

Explications techniques

Depuis la version 5.3, php est plus strict au niveau de la vérification des passages de paramètres aux fonctions, notamment en ce qui concerne les passages par référence.

Certains mécanismes du core de dotclear, dont les appels de behaviors et les recordsets utilisent des constructions d'appels dynamiques à certaines fonctions, cassant parfois les mécanismes de références (en particulier, les appels aux méthodes magiques __call, et func_get_args). Pratiquement, chaque appel à un behavior peut donner lieu à des messages du type :

Warning: Parameter 1 to metaWidgets::initDefaultWidgets() expected to be a reference, value given in /home/rpmbuild/site/blog/inc/core/class.dc.core.php on line 304

Depuis php 5, dès lors qu'un paramètre d'appel est un objet, il est forcément passé par référence. Il est donc possible de supprimer le "durcissement" des signatures des fonctions, en ne forçant plus les références, et ce uniquement lorsque les paramètres sont des objets.

Ajout du 04/08/2009
De plus, depuis php 5.3.0, l'extension regex est obsolète ("deprecated"), ce qui engendrera des warning si les plugins utilisent toujours ces fonctions. Sont concernées les fonctions suivantes :
* ereg / eregi (remplaçant potentiel, après adaptation : preg_match)
* ereg_replace / eregi_replace (remplaçant potentiel, après adaptation : preg_replace)
* split / spliti (remplaçants potentiels, après adaptation : preg_split ou str_split)
* sql_regcase


En pratique

Votre plugin/thème est concerné par ces modifications si :
* Il étend de nouveaux behaviors (via $core->addBehavior)
* Il définit de nouveaux record (au sens dblayer)
* Il utilise l'extension regex de php

Les modifications à effectuer consistent à supprimer les références (= les "&" devant les noms des paramètres) dans la déclaration de la fonction.

Ces modifications peuvent d'ores et déjà être mises en œuvre, elles sont rétro-compatibles avec les versions antérieures de php 5

Exemple
Le code suivant :

<?php

$core->addBehavior('templateBeforeBlock',array('behaviorsMyPlugin','myBeforeBlock'));


class behaviorsMyPlugin
{
    public static function myBeforeBlock(&$core,$b,$attr) {
        // ... code du behavior...
    }
}


?>

sera modifié de la manière suivante (suppression du "&" dans la déclaration de méthode) :

<?php

$core->addBehavior('templateBeforeBlock',array('behaviorsMyPlugin','myBeforeBlock'));


class behaviorsMyPlugin
{
    public static function myBeforeBlock($core,$b,$attr) {
        // ... code du behavior...
    }
}


?>

Dyslexics have more fnu!

Hors ligne

#2 2009-08-01 22:40:22

JcDenis
Membre
Lieu : Lyon, France
Inscription : 2007-08-31
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Si j'ai bien compris on peut sans problème remplacer:

$_ctx =& $GLOBALS['_ctx'];

simplement par

global $_ctx;

et tous les changements sur le context dans la fonction X seront répercutés par la suite dans la fonction Y ?
J'ai un gros doute?
Je pense ici aux pages public avec un context qui se promène de fonctions en fonctions.


Cordialement,
_JC | Intérimaire | En mode invisible

Hors ligne

#3 2009-08-02 10:05:19

JeremiePat
Membre
Inscription : 2009-08-02

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Bonjour,

Un petit complément d'info sur les signature de fonction. Si vous voulez faire ça vraiment bien vous pouvez déclarer vos fonction en "typant" les objets attendu :

<?php
$core->addBehavior('templateBeforeBlock',array('behaviorsMyPlugin','myBeforeBlock'));

class behaviorsMyPlugin
{
    public static function myBeforeBlock(dcCore $core,$b,$attr) {
        // ... code du behavior...
    }
}
?>

De cette manière, PHP vérifira automatiquement que l'objet que vous passer en paramètre et bien un objet "dcCore". Cette méthode n'est pas utilisable pour les type scalaire de PHP (string, int, etc.)
http://www.php.net/manual/fr/language.o … inting.php

Hors ligne

#4 2009-08-03 06:39:04

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

JcDenis a écrit :

Si j'ai bien compris on peut sans problème remplacer:

$_ctx =& $GLOBALS['_ctx'];

simplement par

global $_ctx;

Tu peux t'amuser à faire ce remplacement, mais la syntaxe initiale reste parfaitement correcte, même en php 5.3. La suppression des références explicites qui posent problème avec php 5.3 ne concerne que les déclarations des arguments de fonctions.


Dyslexics have more fnu!

Hors ligne

#5 2009-08-04 06:37:35

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Sujet chapeau complété le 4 août, en prenant en compte l'extension regex, devenue obsolète.


Dyslexics have more fnu!

Hors ligne

#6 2009-08-19 09:49:18

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Pouvez-vous nous dire comment vous avez installé PHP 5.3 sous Linux et Windows ?

De la même façon, suffit-il d'exporter cette branche pour avoir un Dotclear compatible avec PHP 5.3 ?

Merci d'avance.

Hors ligne

#7 2009-08-19 10:08:22

i_love_dc
Membre
Inscription : 2007-07-13

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

sous linux je sais pas mais sous windows il suffit d'utiliser easyphp5.3.0 ou wamp2.0i se sont les dernières versions php5.3
(si ma réponse est H-S désolé)

Hors ligne

#8 2009-08-31 06:47:02

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Sur Ubuntu, il faudra attendre avril 2010 pour une version packagée : cette version sera en fait un "hardened php" (patch suhosin).
Actuellement, il faut le recompiler à la main, ou chercher des packages non officiels sur la toile...


Dyslexics have more fnu!

Hors ligne

#9 2009-08-31 09:56:21

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Sous Fedora, c'est disponible dans Rawhide ou la version 12 (alpha) : http://fedoraproject.org/wiki/Releases/12/FeatureList
ou vous avez la possibilité d'installer les paquets de Remi (http://blog.famillecollet.com/tag/php) pour la version actuelle (11)

Sinon, ça se trouve déjà sous certaines distributions Linux: http://distrowatch.com/search.php?pkg=p … #pkgsearch

Hors ligne

#10 2009-08-31 11:40:18

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Merci pour vos réponses. J'ai pu obtenir la branche PHP 5.3 de Dotclear en faisant

svn co https://svn.dotclear.net/2.0/branches/sandboxes/php5.3

Un plugin qui fonctionne avec PHP 5.3 fonctionnera aussi sur PHP 5.2 ? On peut switcher vers PHP 5.3 définitivement ?

Hors ligne

#11 2009-08-31 11:48:09

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Un plugin qui fonctionne avec PHP 5.3 fonctionnera aussi sur PHP 5.2 ?

A ma connaissance oui, les évolutions du code citées dans le sujet-chapeau sont rétro-compatibles

On peut switcher vers PHP 5.3 définitivement ?

Je pense que oui, du moins quand le code de tous les plugins aura été modifié pour ne plus générer de warning :)


Dyslexics have more fnu!

Hors ligne

#12 2009-10-28 22:37:33

gtraxx
Membre
Lieu : Heusy
Inscription : 2006-03-23
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Il n'est pas un peux tôt pour passer vers la 5.3 ?
Je dit sa pour les hébergements qui vont prendre un temps dingue pour supporté cette version.
Mais il est vrai que sa sera un big changement surtout avec les namespaces, j'hésite toujours à utiliser ce procéder mais en attendant on peux très bien le simuler ;-)


mon siteweb : http://www.clashdesign.net || ma société http://www.clashdesign.be || Mon cms : http://www.magix-cms.com
Template et plugin dotclear 2 : http://www.clashdesign.net/blog || Documentation plugin dotclear 2 : http://www.clashdesign.net/wiki
|| Mon booking : http://www.djg-traxx.be.

Hors ligne

#13 2009-10-28 22:49:06

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

gtraxx a écrit :

Il n'est pas un peux tôt pour passer vers la 5.3 ?

Dsls vient de le dire au-dessus : les plugins développés avec PHP 5.3 seront rétro-compatibles avec PHP 5.2.

gtraxx a écrit :

Mais il est vrai que sa sera un big changement surtout avec les namespaces, j'hésite toujours à utiliser ce procéder mais en attendant on peux très bien le simuler ;-)

Je crois que tu confonds plusieurs choses : le support de PHP 5.3 est indépendant des nouveaux paramètres (nouveaux namespaces). C'est une coïncidence que la dernière beta contienne ces 2 nouveautés, si c'est à ça que tu penses.

Hors ligne

#14 2009-10-28 23:29:20

gtraxx
Membre
Lieu : Heusy
Inscription : 2006-03-23
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Je crois que tu confonds plusieurs choses : le support de PHP 5.3 est indépendant des nouveaux paramètres (nouveaux namespaces). C'est une coïncidence que la dernière beta contienne ces 2 nouveautés, si c'est à ça que tu penses.

Oui je pensais exactement à sa :)


mon siteweb : http://www.clashdesign.net || ma société http://www.clashdesign.be || Mon cms : http://www.magix-cms.com
Template et plugin dotclear 2 : http://www.clashdesign.net/blog || Documentation plugin dotclear 2 : http://www.clashdesign.net/wiki
|| Mon booking : http://www.djg-traxx.be.

Hors ligne

#15 2009-10-29 06:32:27

zeiram
Membre
Inscription : 2004-06-27
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

gtraxx a écrit :

Il n'est pas un peux tôt pour passer vers la 5.3 ?
Je dit sa pour les hébergements qui vont prendre un temps dingue pour supporté cette version.

Il y a déjà plein de personnes qui sont venues se plaindre sur ce forum car leur hébergeur était brutalement passé à la version 5.3 de PHP et leur blog avait du coup cessé de fonctionner. Donc, à mon avis, ce n'est pas du tout trop tôt pour implémenter le support de cette version. :-)

Et comme l'ont dit Dsls et Moe, le fait de supporter la 5.3 n'enlève en rien le support de la 5.2... Il n'y a donc personne qui est obligé à passer à la 5.3...


« Y a des jours où faut pas m'chercher !! Et y a des jours tous les jours ! »

Hors ligne

#16 2009-10-31 17:04:11

max-mag
Membre
Inscription : 2007-08-13

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Bonjour,

Si cela peut aider la migration : http://maxime-varinard.developpez.com/t … s-php-5-3/

Cordialement,

Hors ligne

#17 2010-01-08 12:54:01

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Moe a écrit :

Merci pour vos réponses. J'ai pu obtenir la branche PHP 5.3 de Dotclear en faisant

svn co https://svn.dotclear.net/2.0/branches/sandboxes/php5.3

Cette branche a été supprimée. Maintenant il faut travailler avec le trunk de Dotclear ? Mais puisque le trunk utilise les nouveaux paramètres, comment peut-on continuer à développer un plugin pour Dotclear 2.1.6 ? Il suffit d'ignorer les erreurs levées par les anciens paramètres ? Ou existe-t-il une version PHP 5.3 de Dotclear 2.1.6 ?

Hors ligne

#18 2010-01-08 13:03:45

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Personnellement, je commente la ligne :

trigger_error($msg, E_USER_NOTICE);

de class.dc.settings.php, et ça roule :)


Dyslexics have more fnu!

Hors ligne

#19 2010-02-02 00:15:00

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

J'ai pu installer PHP 5.3 sur une de mes machines sous Ubuntu grâce à ce tuto , et ça fonctionne.

Hors ligne

#20 2010-05-03 21:09:44

compte0
Membre
Inscription : 2009-02-03

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Bonjour,

Vous aller rire mais, après avoir mis à jour mon serveur vers la ubuntu lucid, je me rends compte que Dotclear n'est pas compatable avec la PHP 5.3 et qu'il n'y a que celui-ci de disponible sur la Lucid.

Quelle solution me conseiller vous?  Installer depuis le svn ?

Hors ligne

#21 2010-05-03 22:14:57

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Si tu sais utiliser le SVN n'hésite pas, sinon tu peux aussi installer une compilation nocturne dont xave parlait dans le dernier billet : http://fr.dotclear.org/blog/post/2010/0 … vre-le-fil

Hors ligne

#22 2010-05-07 20:59:40

matchab
Membre
Inscription : 2010-05-07
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Bonjour,

Je suis en plein travaux sur un plugin, et j'aurais voulu savoir où en est Dotclear avec PHP 5.3, en particulier concernant la nomenclature du code. D'après ce qui est évoqué dans ce topic, il y a deux possibilité pour les proto des fonctions :
* On retire simplement l'esperluette (ce truc là -> &)
* On type explicitement l'objet (genre : dcCore $core)

Étant donné que la doc sur les widgets donne toujours des exemples à base de &$core, et que je suis un gentil contributeur qui respecte les nomenclatures, je vous pose la question : comment qu'on fait ?

D'avance merci.

Hors ligne

#23 2010-05-07 21:51:48

Tomtom33
Responsable des travaux finis
Lieu : Barcelone
Inscription : 2006-06-13

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Salut

Il faut que tu suives les indications qui sont dans ce fil du forum. Nous avons commencé une grande révision de la documentation et mettre à jour ce genre de chose fait partie de mes tâches mais je n'ai pas encore eu le temps d'y toucher ;)


Le lab => http://lab.dotclear.org
Besoin d'un plugin? => http://plugins.dotaddict.org
Besoin d'un thème? => http://themes.dotaddict.org
Besoin d'une astuce? => http://tips.dotaddict.org

Hors ligne

#24 2010-05-07 22:05:48

matchab
Membre
Inscription : 2010-05-07
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Tomtom33 a écrit :

Il faut que tu suives les indications qui sont dans ce fil du forum.

Exact, j'ai tellement lu tout le sujet que j'en ai oublié de revenir au premier message fédérateur. Au temps pour moi, merci :)

Hors ligne

#25 2010-05-08 07:00:32

Kozlika
Modo dcTeam
Inscription : 2004-05-08
Site Web

Re : PHP 5.3 : évolutions requises pour plugins et thèmes

Cela dit, la doc étant un wiki, si après avoir digéré tout ça tu te sens de mettre à jour un bout de doc, faut pas te priver ;-)


La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map