PDA

View Full Version : مشکل در متد __autoload در پیدا کردن namespace (حل شد)



vahidqara
یک شنبه 08 تیر 1393, 19:43 عصر
با سلام خدمت دوستان...

من یک namespace دارم که چندین کلاس را شامل میشه..

از متد __autoload استفاده میکنم که نام کلاس را چک میکنه ..




function __autoload($classname){

$classname = strtolower($classname);
$path ="{$classname}.php";
if(file_exists($path)){
require_once($path);

}else{
die("the file {$classname}.php not found");
}


}


حلا خطا میگره و کلاس مورد نظر را پیدا نمیکنه که البته طبیعی ه
ستش...
باید نام namespace هم به $patch اضافه بشه که تشخیص بده..
ممنوم میشم اگه کمک کنید

MMSHFE
یک شنبه 08 تیر 1393, 21:31 عصر
شما یکبار توی همین متد، classname$ رو echo کنید و بعدش exit بگذارین، فکر میکنم خودتون دستتون میاد چیکار باید کنید.

vahidqara
دوشنبه 09 تیر 1393, 19:16 عصر
شما یکبار توی همین متد، classname$ رو echo کنید و بعدش exit بگذارین، فکر میکنم خودتون دستتون میاد چیکار باید کنید.

با سلام و درود... این کار رو کردم و نام namespace به همراه نام کلاس چاپ شد ... ولی مشکل من دادن path است که طبق چیزی که چاپ شده در خروجی این کارو کردم ولی دوبازه مشکل داره..!!!

MMSHFE
سه شنبه 10 تیر 1393, 10:52 صبح
خوب احتمالاً از اونجا که شما پوشه به اسم namespaceها نساختین، باید به این شکل کدتون رو تغییر بدین تا namespace رو بیخیال بشه موقع require کردن:

function __autoload($classname){
$classname = strtolower(end(explode('\\', $classname)));
$path = "{$classname}.php";
if(file_exists($path)){
require_once $path;
}
else {
die("the file {$classname}.php not found");
}
}

vahidqara
سه شنبه 10 تیر 1393, 15:03 عصر
خوب احتمالاً از اونجا که شما پوشه به اسم namespaceها نساختین، باید به این شکل کدتون رو تغییر بدین تا namespace رو بیخیال بشه موقع require کردن:

function __autoload($classname){
$classname = strtolower(end(explode('\\', $classname)));
$path = "{$classname}.php";
if(file_exists($path)){
require_once $path;
}
else {
die("the file {$classname}.php not found");
}
}

مچکرم :لبخندساده: