2017-08-17 5 views
0

J'essaye d'écrire une fonction qui appelait plusieurs classes, chacune ajoutant un widget à un seul fichier PDF, puis renvoyant l'ensemble du fichier PDF.Utilisation de TCPDF sur plusieurs classes

Voici le code du constructeur:

<?php 

class PdfConstructor { 

    protected $logger; // I'm sure there's another way to use the logger located in the public dependencies without having to initalise it here 

    public function __construct($logger){ 
     $this->logger = $logger; 
    } 

    public function studentPdf(){ 
     $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 

     // --------------------------------------------------------- 
     require 'pdfwidgets/studentheader.php'; // TODO: Need to load this via autoloader 
     $headerController = new StudentHeader($pdf); 
     $headerInfo = $hederController->getHeader(); 

     // --------------------------------------------------------- 

     //Close and output PDF document 
     $pdf->Output('C:\xampp7\htdocs\edquire-api\logs\test.pdf', 'F'); 
    } 
} 

Puis, en studentheader je ceci:

<?php 

class StudentHeader { 

    protected $pdf; 

    public function __construct($pdf){ 
     $this->$pdf = $pdf; 
    } 

    public function getHeader(){ 
     $this->pdf->AddPage(); 
    } 
} 

Je suis en train de passer l'objet $pdf à studentheader mais je reçois l'erreur:

Catchable fatal error: Object of class TCPDF could not be converted to string in C:\xampp7\htdocs\edquire-api\classes\pdfwidgets\studentheader.php on line 8

Pourquoi essaie-t-il de le convertir en chaîne, et existe-t-il un meilleur moyen de construire ce pdf en utilisant des widgets?

+1

Voter pour fermer parce que vous nous demandez juste de trouver votre faute de frappe. –

Répondre

1

Ceci est la ligne 8:

$this->$pdf = $pdf; 

Il devrait être:

$this->pdf = $pdf; 

Il est dit qu'il ne peut pas convertir $pdf en chaîne, car les noms de propriétés doivent être une chaîne. Vous l'utilisez comme nom de propriété ici. Note de bas de page: si vous n'obtenez pas de message d'erreur, c'est toujours une bonne stratégie pour Google. Je googled "erreur fatale Catchable: objet de classe TCPDF n'a pas pu être converti en chaîne" et les meilleurs résultats tous point un dans la bonne direction.