1
votes

remplacement du tableau défini dans php 5.6

sur mon hôte local, PHP7 est en cours d'exécution et j'utilise la fonction define () pour définir un tableau. Cela fonctionne bien.

define('JOBS_CREATORS', ['aaa@admin.com', 'bbbb@admin.com']);

Comme nous le savons, cela fonctionne en version PHP7 . J'ai cherché sur Google et j'ai trouvé le mot-clé const qui fonctionne en PHP5.6 ou une version inférieure.

Comme je le sais, le const ne fonctionne que dans la classe.

Mais j'utilise WordPress donc je dois définir dans Fichier functions.php .

Existe-t-il un autre moyen de définir un tableau sans utiliser class?


4 commentaires

Si votre hébergeur utilise toujours PHP 5.6, vous devez penser à en trouver un nouveau. Même PHP 7.0 est assez vieux pour qu'il ne soit plus supporté maintenant et considéré comme en fin de vie.


En fait, il existe d'autres sites PHP en cours d'exécution et ils nécessitent une version inférieure de PHP. C'est pourquoi je ne peux pas mettre à jour la version PHP.


Corrigez les autres sites afin qu'ils ne dépendent pas de versions non prises en charge de PHP qui ne reçoivent pas de correctifs de sécurité!


C'est aussi pourquoi les plates-formes comme Docker sont si bonnes. Avec Docker, vous pouvez exécuter chacun de vos systèmes dans son propre conteneur isolé, afin qu'ils puissent tous exécuter la version de PHP (ou autre) dont ils ont besoin, sans interférer les uns avec les autres.


3 Réponses :


0
votes

Il est toujours possible de faire cela en PHP 5.6 en utilisant le mot-clé const (voir dans cet article):

Constantes PHP contenant des tableaux?

const JOBS_CREATORS = ['aaa@admin.com', 'bbbb@admin.com'];


2 commentaires

Merci pour votre réponse. Je l'ai essayé mais malheureusement, cela n'a pas fonctionné. Cela donne la valeur d'erreur const ne peut pas être mise à jour.


pouvez-vous me montrer votre code? Bien sûr, vous ne pouvez pas METTRE À JOUR une constante ... c'est pourquoi on l'appelle une constante. Si vous avez besoin de le mettre à jour, vous devez utiliser une variable au lieu d'une constante



1
votes

Vous pouvez mettre à jour votre constante pour accepter un tableau sérialisé à la place.

if(in_array("aaa@admin.com", unserialize(JOBS_CREATORS))){ ...

puis

define('JOBS_CREATORS', serialize(['aaa@admin.com', 'bbbb@admin.com']));


5 commentaires

si vous voulez faire cela, utilisez json_encode plutôt que serialize .


@Spudley, sérialiser fonctionne bien. Y a-t-il une différence avec json_encode au lieu de sérialiser?


La sérialisation est en surpoids et surcomplexe (et parfois sujette à des failles de sécurité). Le seul cas d'utilisation correct pour cela est si vous utilisez la fonctionnalité de veille / réveil pour la persistance d'un objet entre les exécutions.


Merci @Spudley pour l'aide :)


@GufranHasan Le point principal était de sérialiser les données, peu importe comment vous le faites. json_encode est également une forme de sérialisation. BTW, wordpress utilise toujours serialize pour enregistrer les données dans la base de données.



0
votes

Comme @Spudley l'a suggéré, utilisez json_encode plutôt que serialize . J'ai utilisé json_encode et json_decode comme:

Défini:

echo '<pre>';print_r(json_decode(JOBS_CREATORS)); echo '</pre>';

Obtenir:

define('JOBS_CREATORS', json_encode(['aaa@admin.com', 'bbbb@admin.com']));

Mais la réponse de @TahaPaksu est également utile.

Merci, @Spudley et @TahaPaksu :)


0 commentaires