خطای PHP Syntax Error (معمولاً به دلیل نسخه پایین PHP)
مشکل
خطای
Laravel parse error: syntax error, unexpected T_CLASS, expecting T_STRING or T_VARIABLE
توضیحات
لاراول نسخه ۵.۱ و بالاتر،
از ویژگی ::class برای دریافت نام
کامل و واجد شرایط یک کلاس (fully qualified classname) به صورت
رشته استفاده میکند. خطایی که شما مشاهده میکنید به دلیل این خط کد است:
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
این ویژگی زبان در PHP 5.5 معرفی شده است که یکی از نیازمندیهای لاراول ۵.۱ و بالاتر میباشد. به احتمال زیاد، نسخه PHP نصب شده روی سرور شما قدیمیتر از ۵.۵ است. سعی کنید نسخه PHP خود را بهروزرسانی کنید.
چرا ::class در لاراول ۵.۱ و بالاتر به نام کلاس اضافه میشود؟
این ویژگی با نسخه ۵.۵ PHP معرفی شده است که اکنون توسط لاراول ۵.۱ و بالاتر الزامی است. ویژگی جادویی ::class نام کامل و
واجد شرایط (FQN) کلاس را در خود نگه میدارد.
مزایای آن بیشتر با یک محیط توسعه یکپارچه (IDE) خوب مشخص میشود. برخی از این مزایا عبارتند از:
- اشتباهات تایپی کمتر
- بازآرایی (Refactoring) آسانتر
- تکمیل خودکار کد (Auto-Completion)
- امکان کلیک روی نام کلاس برای پرش به فایل آن
گاهی اوقات نیز این مزیت وجود دارد که میتوانید به جای نوشتن نام کامل کلاس در کد، آن را import کنید. این کار باعث
تمیزتر
شدن کد شما میشود و تمام وابستگیها با استفاده از دستور use در بالای کلاس تعریف میشوند. (البته گاهی اوقات، مانند
فایلهای پیکربندی مثل app.php، وارد کردن تمام کلاسها منطقی نیست).
راهحل
لاراول نسخه ۵.۵ و بالاتر به PHP نسخه ۷.۰.۰ یا جدیدتر نیاز دارد.
و لطفاً قبل از نصب اسکریپت، اطمینان حاصل کنید که این موارد روی سرور شما موجود باشند:
- PHP نسخه ۷.۰.۰ یا جدیدتر
- اکستنشن OpenSSL در PHP
- اکستنشن PDO در PHP
- اکستنشن Mbstring در PHP
- اکستنشن Tokenizer در PHP
- اکستنشن XML در PHP
- GD یا Imagick
- اکستنشن Fileinfo در PHP
- اکستنشن Zip Archive در PHP
برای بررسی نسخه PHP نصب شده روی سرور خود، یک فایل php (مثلاً: /phpinfo.php) روی سرور خود با محتوای زیر ایجاد کنید:
<?php phpinfo(); ?>