با سلام خدمت استاد گرامی
من متوجه نمیشم تفاوت سه تابعی include, autoload,view ظاهرا هر سه تابع قرار هست یک صفحه یا یک کلاس را الحاق نمایند
و سوال بعد اینکه در تابع autoload از document_root استفاده شده چرا؟؟؟ من متوجه نشدم
از زحمات شما تشکر بسیار دارم
با سلام خدمت شما همراه عزیز
ببینید view برای رندر کردن یک صفحه کامل html هست یعنی همون صفحاتی که قراره کاربر ما ببینه
include برای رندر کردن یک صفحه کامل html داخل یک صفحه دیگه هست
مثلا فرض کنید ما یک صفحه لاگین داریم ولی هدر فوتر نداره فقط فرم لاگینه
هدر و فوتر با include اضافه میشن خوده اون فرمه با view
درمورد autoload هم ربطی به این ها نداره autoload وظیفه اجرای کلاس های php که ما نوشتیم رو داره
چون ادرس کامل فولدر هامونو میخواستیم
لینک زیر رو ملاحظه بفرمایید و از documentroot یک var_dump بگیرید ببینید دقیقا چی برمیگردونه کامل متوجه میشید
درود بر شما
من هرچی سعی کردم پرسش جدید ثبت کنم نشد مجبور شدم اینجا بپرسم
این کد شما رو میشه
spl_autoload_register(function($className){
$className = str_replace("\\" , DIRECTORY_SEPRATOR, $className);
include_once $_SERVER['DOCUMENT_ROOT'] . '/mvc/' . $className . '.php';
});
به شکل زیر نوشت؟
spl_autoload_register(function($className){
$loc=getcwd();
$classLoc = str_replace("\\" , '/', $loc);
include_once $classLoc.'/'.$className;
الان به روش شما جلو میرم اما برای بعد ها میپرسم
با سلام خدمت شما همراه عزیز
بهتره مثل بنده بنویسید تا بعدا به مشکل نخورید
پروژه که تموم شد هرچقد خواستید میتونید تغییرش بدید
استاد سلام در autoloader فرموديد ميشه از متغيري كه در config به نام $base_dir ساختيم استفاده كنيم و ديگه نام پوشه كه اينجا مثلا mvC هست استفاده نكنيم ولي من هر كاري ميكنم اين متغير رو در اينجا نميشناسه
<?php
namespace System\Bootstrap;
class AutoLoad
{
public function autoloader()
{
global $base_dir;
spl_autoload_register(function ($className){
$className=str_replace('\\',DIRECTORY_SEPARATOR,$className);
include_once $_SERVER['DOCUMENT_ROOT'].$base_dir.$className.'.php';
});
}
}
با سلام خدمت شما همراه عزیز
در پروژه اصلی خدمتتون میگیمچجوری استفاده کنید به روش بهینه تر