افزودن فایل function در تمام پروژه بدون هم پوشانی
سلام دوستان
من یه وب سایت کوچولو با php نوشتم که توابع مورد نیاز رو توی یه فایلی با نام function.php قرار دادم.
یه فایلم دارم بنام db.php که توابع کار با دیتابیس درونش هست. در واقع یه کلاس هست با متدهای مورد نیاز
خب مشکل من...
تا زمانی که بصورت مستقیم از داخل function.php از این کلاس db استفاده کنم مشکلی نیست. ولی وقتی توی فایل function.php میام و یه تابع ایجاد میکنم و میخوام توی اون تابع از کلاس db استفاده کنم اصلا نمیشناسه اون رو و متدهای اون رو.
لطفا منو راهنمایی کنید که چطور بصورت بهینه یه فایل function.php داشته باشم که فایل db.php داخل اون include شده باشه و بدون مشکل ازشون استفاده کنم.
سپاس
نقل قول: افزودن فایل function در تمام پروژه بدون هم پوشانی
سلام منم یه زمان این مشکل رو داشتم اما به جای حلش اومدم کل تابع های مربوط به دیتابیس رو توی همون db.php قرار دادم.
گفتم شاید شما هم از این روش بخواین استفاده کنید. :لبخندساده:
نقل قول: افزودن فایل function در تمام پروژه بدون هم پوشانی
سلام و درود دوست من
ممنون از پاسختون
ولی من نمیخوام توابع db با توابع function یکجا باشن. میخوام بصورت دوتا فایل مجزا باشن
نقل قول: افزودن فایل function در تمام پروژه بدون هم پوشانی
حقیقتش من درست متوجه سوالتون نشدم، میتونید یک نمونه از دو تا فایلتون رو اینجا قرار بدین؟ شاید منظورتون با برداشت من متفاوت باشه.
نقل قول: افزودن فایل function در تمام پروژه بدون هم پوشانی
همیشه نمونه کد و اررورت رو بزار
اگه object کلاس دیتابس رو بیرون از تابع ساختی یا باید بهش پاس بدی وقتی تابع رو صدا میزنی یا باید global بکنی
class test {
public function output(){
echo "out put stuff";
}
}
$testobj = new test();
function action (){
global $testobj ;
$testobj->output();
}
نقل قول: افزودن فایل function در تمام پروژه بدون هم پوشانی
نقل قول:
نوشته شده توسط
plague
همیشه نمونه کد و اررورت رو بزار
اگه object کلاس دیتابس رو بیرون از تابع ساختی یا باید بهش پاس بدی وقتی تابع رو صدا میزنی یا باید global بکنی
class test {
public function output(){
echo "out put stuff";
}
}
$testobj = new test();
function action (){
global $testobj ;
$testobj->output();
}
ُلام مهندس
ممنون. مشکلم با global حل شد.
ممنون بابت راهنمایی
نقل قول: افزودن فایل function در تمام پروژه بدون هم پوشانی
نقل قول:
نوشته شده توسط
hobab-theme
سلام دوستان
تا زمانی که بصورت مستقیم از داخل function.php از این کلاس db استفاده کنم مشکلی نیست. ولی وقتی توی فایل function.php میام و یه تابع ایجاد میکنم و میخوام توی اون تابع از کلاس db استفاده کنم اصلا نمیشناسه اون رو و متدهای اون رو.
سپاس
سلام
با توجه به اینکه اتصال به دیتابیس بهتر است تنها یک بار در کل برنامه انجام شود تا از سربار اضافه جلوگیری شود بهتر است کلاس شما نیز بصورت singleton طراحی شود. سپس به راحتی می توانید در هر جایی از برنامه یک نمونه از کلاس دیتابیس ایجاد کنید بدون اینکه ارتباط جدیدی با دیتابیس برقرار شود.
در مورد اینکه یک متغیر عمومی قابل دسترس در داخل توابع نمی باشد. این یک امر طبیعی هست و توابع مانند یک کپسول عمل می کنند و برای اینکه بتوانند به متغیرهای دیگر دسترسی داشته باشند یا باید از آرایه $GLOBALS استفاده کنید یا لغت کلیدی global و یا متغیر مورد نظر را به عنوان یک آرگومان ورودی به تابع خود ارسال کنید.
$a = 2;
function printa(){
$x = $GLOBALS['a'];
echo $x;
}
printa();
function printb(){
global $a;
echo $a;
}
printb();
function printc($a){
echo $a;
}
printc($a);
ویرایش:
متاسفم من تازه متوجه شدم که شما پاسخ خود را یافته اید
نقل قول: افزودن فایل function در تمام پروژه بدون هم پوشانی
بسیار سپاسگزارم از پاسخ کامل دقیق و مفیدتون.
هرچند جوابم رو از جناب plague گرفتم ولی توضیحات شما هم با توجه به اینکه چند نمونه مثال رو در بر داشت بسیار مفید بود.
بازم سپاس از همه دوستان