روز برنامه‌نویس مبارک 🤩🎉 از هدایای روز برنامه‌نویس جا نمونی ⌛
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ سیدرضا بازیار
اجرا نشدن Autoloader در مک - شناسایی نشدن مسیر دارای \\ و خطای دیباگر
جامعه پی اچ پی ایجاد شده در ۱۱ دی ۱۴۰۰

سلام. من تا دقیقه ۳۲ این ویدیو پیش اومدم. تا به این جای کار در فایل autoloader.php کد‌های زیر رو نوشتم:

include_once 'App/iran.php';
spl_autoload_register(function($class){
    $class_file = __DIR__ . '/' . $class . '.php';
    echo $class_file . "
";
    include_once $class_file;
});
use \\App\\Services\\CityService;
use \\App\\Utilities\\Response;
// new CityService;
Response::respond([23,34,45,56,67],200);

وقتی کد رو اجرا میکنم این ارور رو میده:

/Users/seyedrezabazyar/Sites/api/Iran/App\\Utilities\\Response.php
Warning: include_once(/Users/seyedrezabazyar/Sites/api/Iran/App\\Utilities\\Response.php): Failed to open stream: No such file or directory in /Users/seyedrezabazyar/Sites/api/Iran/loader.php on line 8
Warning: include_once(): Failed opening '/Users/seyedrezabazyar/Sites/api/Iran/App\\Utilities\\Response.php' for inclusion (include_path='.:/usr/local/Cellar/php/8.1.0/share/php/pear') in /Users/seyedrezabazyar/Sites/api/Iran/loader.php on line 8
Fatal error: Uncaught Error: Class "App\\Utilities\\Response" not found in /Users/seyedrezabazyar/Sites/api/Iran/loader.php:16 Stack trace: #0 {main} thrown in /Users/seyedrezabazyar/Sites/api/Iran/loader.php on line 16

فکر کنم مسیر دیباگر رو چون بجای / از \\ استفاده شده، نمیتونه اون رو پیدا کنه... راه حل استاندارد واسه حل این مشکل چیه؟

کد زیر رو جایگزین کد خط چهارم کردم و ارور برطرف شد:

$class_file = __DIR__ . '/' . str_replace('\\\\', '/', $class) . '.php';

این روش غیر استاندارد نیست؟ بعدا مشکل ساز نمیشه؟

سیدرضا بازیار ۱۳ دی ۱۴۰۰، ۰۶:۲۰

سلام.

دستوری که استفاده کردید درسته و راهش همینه.

بهترین پاسخ
محسن موحد ۱۳ دی ۱۴۰۰، ۱۰:۳۴