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

Bibliothèques et frameworks PHP Discussion :

[PHPspreadsheet] Parse error: syntax error, unexpected '=' in Calculation.php line 2460


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Skunka
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2018
    Messages : 135
    Par défaut [PHPspreadsheet] Parse error: syntax error, unexpected '=' in Calculation.php line 2460
    Bonjour,

    J'essaie de réaliser l'export d'un fichier xlsx avec multiples worksheet en utilisant phpspreadsheet mais lorsque j'essaye d'instancier un 'new Spreadsheet()' j'obtient l'erreur suivante:

    Nom : Capture.PNG
Affichages : 930
Taille : 29,0 Ko

    Voici le code qui traite cette action:

    Code php : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
     
    namespace Sngm\ApiBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\JsonResponse;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\HttpFoundation\Request;
     
    use PhpOffice\PhpSpreadsheet\IOFactory;
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
     
    class DeclarationAccidentController extends Controller {
     
        public function exportAction(Request $request) {
            $em = $this->getDoctrine()->getManager();
    $dateDebut = "2019/09/01"; $dateFin = "2019/11/01";
            $spreadsheet = new Spreadsheet();  // Ligne 26
            $declarationSheet = $spreadsheet->getActiveSheet();
            $declarationSheet->setCellValue('A1', 'GeeksForGeeks!'); 
            $writer = new Xlsx($spreadsheet);
            $writer->save("declaration-accident-du-" . $dateDebut . "-au-" . $dateFin);
        }
     
    }

    J'utilise Symfony, donc je peux mettre la stacktrace:
    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
     
    Symfony\Component\Debug\Exception\FatalThrowableError:
    Parse error: syntax error, unexpected '='
     
      at vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Calculation\Calculation.php:2460
      at Symfony\Component\Debug\DebugClassLoader->loadClass('PhpOffice\\PhpSpreadsheet\\Calculation\\Calculation')
      at spl_autoload_call('PhpOffice\\PhpSpreadsheet\\Calculation\\Calculation')
         (vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Spreadsheet.php:472)
      at PhpOffice\PhpSpreadsheet\Spreadsheet->__construct()
         (src\Sngm\ApiBundle\Controller\DeclarationAccidentController.php:26)
      at Sngm\ApiBundle\Controller\DeclarationAccidentController->exportAction(object(Request))
         (vendor\symfony\symfony\src\Symfony\Component\HttpKernel\HttpKernel.php:151)
      at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
         (vendor\symfony\symfony\src\Symfony\Component\HttpKernel\HttpKernel.php:68)
      at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
         (vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Kernel.php:202)
      at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
         (web\app_dev.php:28)
    Je précise que j'utilise la version 7.1.26 de PHP, ce qui devrait suffire pour cette librairie qui requiert la version 7.1 minimum.

    Merci d'avance.

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Alors je me trompe peut-être parce que je n'ai jamais vu cette écriture mais normalement tu ne peux pas écrire [$language] = explode('_', $locale);.

    Je ne comprends pas ce que tu veux faire avec cette ligne mais les crochets n'ont rien à faire là !
    Je veux dire, tout est marqué sur ta capture d'écran : il ne s'attend pas à voir le caractère "=" et en plus il te surligne la ligne qui est en erreur


    $language[] = est correct
    (array) $language = est correct
    $_GET[$language] = est correct
    [$language] = n'est PAS correct

    Par contre, je déconseille de forcer $language à être un array.
    En effet, si pour une raison ou pour une autre, ton explode() ne réussi pas, alors tu risque de te retrouver avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $language = [0 => false];
    Qui peut fortement complexifier les conditions concernant cette variable

  3. #3
    Membre confirmé Avatar de Skunka
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2018
    Messages : 135
    Par défaut
    Enfaite cette syntaxe a était instauré dans la version 7.1 de PHP si je ne m'abuse et elle est utilisée par la LIBRAIRIE et non par moi.

    Le problème venait enfaite de mon projet qui utilisé une version 7.0 de PHP au lieu de 7.1. La version 7.0, ne supportait pas cette syntaxe mais maintenant que j'ai mis à jour la version du projet, le problème est résolu !

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    OK, on en apprend tous les jours ^^

    Du coup, pour mon information car j'ai cherché mais rien trouvé avant de répondre, que fait-elle ?
    La même chose que (array) $language = ? Si c'est le cas, je trouve ça un peu dégueulasse ^^

  5. #5
    Membre confirmé Avatar de Skunka
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2018
    Messages : 135
    Par défaut
    Cette syntaxe serait pour la déstructuration, pour toutes les infos -> https://wiki.php.net/rfc/short_list_syntax

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    la déstructuration des tableaux est très pratique dans ce cas de figure : foreach ($points as ["x" => $x, "y" => $y]) {, cela offre la possibilité de s'affranchir de la notation tableau dans le corps du foreach, beaucoup plus lisible

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/10/2007, 10h22
  2. Réponses: 10
    Dernier message: 21/07/2006, 08h44
  3. [débutant] Parse error, unexpected T_STRING
    Par BARBIER dans le forum Langage
    Réponses: 4
    Dernier message: 16/06/2006, 14h43
  4. Parse error: unexpected $ sur la dernière ligne..
    Par zamoto dans le forum Langage
    Réponses: 6
    Dernier message: 01/06/2006, 12h16
  5. Réponses: 36
    Dernier message: 07/05/2006, 15h35

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