PDA

View Full Version : نحوه include شدن فایل ها در spl_autoload_register



Mahboubeh.M
شنبه 04 اردیبهشت 1395, 15:41 عصر
سلام دوستان. وقتتون بخیر
من برای لود فایل ها از کد زیر استفاده کردم که در پوشه obj1 قرار داره:
spl_autoload_register(function($ClassName) {
echo $ClassName;
include $ClassName. '.php';
});
$PATH = $_SERVER['SCRIPT_FILENAME'];
$controllerPath = $_SERVER["DOCUMENT_ROOT"]."/myCode/test/obj2/";
$include_path = array($PATH,$controllerPath,get_include_path());
set_include_path(implode(PATH_SEPARATOR,$include_p ath));

تو همین پوشه یک فایل و داخل اون کلاسی به اسم controller نوشتم.
یک پوشه دیگه هم درست کردم به اسم obj2 و فایل (کلاس) mainController رو داخل اون نوشتم که از کلاس controller ارث بری میکنه.
حالا در مسیر اصلی و فایل index فقط فایل مربوط به لود اتومات رو include کردم و برنامه خطایی نداد. من متوجه نشدم که چطور فایل controller اینکلود شد. کلاس های controller و mainController در 2پوشه مجزا قرار دارن و در متغیر $include_path که در تابع autoload تعریف شده اصلا مسیر پوشه obj1 قرار نداره که کلاس controller بتونه اینکلود بشه!!!.
میخوام بدونم چرا با وجود این که مسیر این کلاس در $include_path تعریف نشده ولی به محض اینکه با کلاس controllerمواجه میشه میتونه اونو include کنه.