[PHP] Variable/Fonction dans un Array

Fermé
colderis Messages postés 3 Date d'inscription lundi 5 décembre 2011 Statut Membre Dernière intervention 5 décembre 2011 - Modifié par colderis le 5/12/2011 à 16:10
colderis Messages postés 3 Date d'inscription lundi 5 décembre 2011 Statut Membre Dernière intervention 5 décembre 2011 - 5 déc. 2011 à 21:14
Salut, je développe actuellement un site sous cakePHP et je rencontre d'étranges erreurs dans une class de mon Model.
Il m'est impossible d'insérer de variable ou même de fonction dans un tableau associatif.
L'erreur vient bien de php et non de cake.

Voici le morceau de code concerné :

public $actsAs = array( 
    'MeioUpload.MeioUpload' => array( 
        'file' => array( 
            'uploadName' => uniqid(), 
        ), 
    ), 
); 


Cela me renvoie : "Parse error: syntax error, unexpected '(', expecting ')' on line 38".
Si je remplace la fonction par une variable : "Parse error: syntax error, unexpected T_VARIABLE on line 38".

Je ne me souviens pas avoir déjà rencontré de telle erreur lorsque j'utilisais des variables ou autre dans un tableau c'est pourquoi je suis étonné et bloquer.

Le problème ne semble pas venir d'ailleurs le code fonctionne très bien si j'utilise une chaine de caractère.

Je tourne sous MAMP qui utilise php 5.3.6.
A voir également:

2 réponses

Bonjour

Ce qui m'étonne, c'est le message que tu as.
Car j'ai l'impression que tu as des virgules en trop dans la définition de tes array :
public $actsAs = array(  
    'MeioUpload.MeioUpload' => array(  
        'file' => array(  
            'uploadName' => uniqid()  
        ) 
    ) 
); 

Laquelle est la ligne 38 ?
0
Vérification faite... Les virgules sont inutiles mais ne provoquent pas d'erreur chez moi. Il y a effectivement autre chose chez toi.
0
colderis Messages postés 3 Date d'inscription lundi 5 décembre 2011 Statut Membre Dernière intervention 5 décembre 2011
5 déc. 2011 à 21:00
Oui les virgules sont optionnelles, je les met pour prévenir l'ajout d'option par la suite.
La ligne 38 c'est justement le : 'uploadName' => uniqid() .
0
Finalement si, je l'ai reproduit. Je n'avais pas le problème parce que je n'avais pas déclaré $actsAs dans une classe.
Visiblement, il y a des restrictions sur les possibilités d'initialisation pour les membres d'une classe.
Je n'ai pas essayé, mais tu peux toujours faire cette initialisation dans le constructeur
0
colderis Messages postés 3 Date d'inscription lundi 5 décembre 2011 Statut Membre Dernière intervention 5 décembre 2011
5 déc. 2011 à 21:14
Je me suis également dit que sa venait de l'orienter objet, mais les devellopeurs que j'ai consulter semble aussi étonner que moi.

Du coup, j'ai fini par l'ajouter dans le filtre beforeValidate() :

public function beforeValidate(){
	$this->data['Post']['file']['name'] = time().strrchr($this->data['Post']['file']['name'], '.');
}

Avant ça j'ai tenté de modifier directement le code source du plugin mais j'obtiens exactement la même chose.
0