🚀 تخفیف ۳۵٪ + ۳.۵ میلیون هدیه! برنامه‌نویسی رو الان شروع کن - فقط امروز!
۰ ثانیه
۰ دقیقه
۰ ساعت
۶ Amir Hossein Sattari
خطا هنگام استفاده از pdf
جامعه پی اچ پی ایجاد شده در ۱۹ تیر ۱۴۰۲

با سلام


namespace Exporter;
require_once "./vendor/autoload.php";
class PdfExporter extends Exporter
{
    protected $format = '.pdf';
    protected $pdfclass;
    public function __construct($pdfclass)
    {
        $this->pdfclass = $pdfclass;
    }
    public function export()
    {
        $file_name = 'text-file-' . rand(100,999) . $this->format;
        $file_path = __DIR__ . "/files/$file_name";
        $this->pdfclass->WriteHTML("{$this->data['title']},{$this->data['content']}");
        $this->pdfclass->Output($file_path);
        echo "$file_name successfully created!";
    }
}
$pdfExporter = new PdfExporter(new \\Mpdf\\Mpdf());
$pdfExporter->export();

این کد PdfExporter منه وقتی اجرا میکنم فایل pdf ساخته میشه منتهی یه خطایی هم میده

Warning: Trying to access array offset on value of type null in C:\\xampp\\htdocs\\7Learn.php\\OOP\\Project-Exporter\\Exporter\\PdfExporter.php on line 21
Warning: Trying to access array offset on value of type null in C:\\xampp\\htdocs\\7Learn.php\\OOP\\Project-Exporter\\Exporter\\PdfExporter.php on line 21
text-file-869.pdf successfully created!
Fatal error: Uncaught Error: Call to a member function WriteHTML() on array in C:\\xampp\\htdocs\\7Learn.php\\OOP\\Project-Exporter\\Exporter\\PdfExporter.php:21 Stack trace: #0 C:\\xampp\\htdocs\\7Learn.php\\OOP\\Project-Exporter\\process.php(21): Exporter\\PdfExporter->export() #1 C:\\xampp\\htdocs\\7Learn.php\\OOP\\Project-Exporter\\index.php(1): include('C:\\\\xampp\\\\htdocs...') #2 {main} thrown in C:\\xampp\\htdocs\\7Learn.php\\OOP\\Project-Exporter\\Exporter\\PdfExporter.php on line 21

این هم متن خطا ممنون میشم راهنمایی کنید.

سلام امیر حسین جان

در متد export اومدین از متغییر data استفاده کردین درحالی که اصلا توی بدنه کلاستون این متغییر تعریف و مقدار دهی نشده!

صادق برزگر ۲۰ تیر ۱۴۰۲، ۰۵:۰۷

data تو کلاس پدر یعنی Exporter تعریف شده

Amir Hossein Sattari ۲۰ تیر ۱۴۰۲، ۰۹:۲۸

یا کدهای دو کلاس رو اینجا قرار بدید یا فایل‌های پروژه رو تا بررسی بشه.

محسن موحد ۲۰ تیر ۱۴۰۲، ۱۲:۳۹
    public function export()
    {
        $file_name = 'text-file-' . rand(100,999) . $this->format;
        $file_path = __DIR__ . "/files/$file_name";
        $mpdf = new \\Mpdf\\Mpdf();
        $mpdf->WriteHTML("{$this->data['title']},{$this->data['content']}");
        $mpdf->Output($file_path);
        echo "$file_name successfully created!";
    }

به این صورت که نوشتم بدون مشکل کار میکنه

Amir Hossein Sattari ۲۰ تیر ۱۴۰۲، ۱۲:۵۸

اصلا درستش همین هست و شما باید شی رو داخل خود متد پیاده کنید چون نیاز به موردی نیست که از بیرون به کلاس داده بشه و داخل خود متد میتونه اوکی بشه.

میتونید داخل کانستراکتور هم ست کنیدش به عنوان یک پراپرتی تا دسترسی باز‌تری بهش داشته باشید.

بهترین پاسخ
احمدرضا فاطمی کیا ۲۰ تیر ۱۴۰۲، ۱۳:۰۸

خیلی ممنون?

Amir Hossein Sattari ۲۰ تیر ۱۴۰۲، ۱۳:۱۳