دلیل این ارور چیه؟ Fatal error: Using $this when not in object context in

phpweb

Active Member
چرا این ارور نمایش داده می شه و چطور باید این مشکل رو حل کنم؟

توضیح بدم که من توی سازنده یه اتصال ایجاد کردم،
PHP:
$this->db = new mysqli('localhost','root','pass','db')
توی یکی از توابع کلاس، یه فایل اینکلود کردم و توی اون فایل از دستور $this->db->query($sql); استفاده کردم. ولی با این مشکل مواجه شدم

PHP:
Fatal error:  Using $this when not in object context in
 

the_king

مدیرکل انجمن
چرا این ارور نمایش داده می شه و چطور باید این مشکل رو حل کنم؟

توضیح بدم که من توی سازنده یه اتصال ایجاد کردم،
PHP:
$this->db = new mysqli('localhost','root','pass','db')
توی یکی از توابع کلاس، یه فایل اینکلود کردم و توی اون فایل از دستور $this->db->query($sql); استفاده کردم. ولی با این مشکل مواجه شدم

PHP:
Fatal error:  Using $this when not in object context in

this$ رو خارج از محیط کلاس نوشتید، this$ رو نباید خارج از کلاس بکار ببرید. باید یک شیء جدید از نوع اون کلاس ایجاد کنید
و بجای this$ نام متغیر اون شیء رو بنویسید. مثلا :
PHP:
$myobj=new myclass;
$myobj->db->query($sql);
 

phpweb

Active Member
this$ رو خارج از محیط کلاس نوشتید، this$ رو نباید خارج از کلاس بکار ببرید. باید یک شیء جدید از نوع اون کلاس ایجاد کنید
و بجای this$ نام متغیر اون شیء رو بنویسید. مثلا :
PHP:
$myobj=new myclass;
$myobj->db->query($sql);
من توابع و فایلها رو توی کلاس اینکلود می کنم. آیا در این حالت هم احتیاج هست که از کلاس، یه شی جدید ایجاد کنم؟ اگر جوابتون مثبت هست، باید توی کلاس a، یه شی از خود کلاس a ایجاد کنم، بنظرم این کار ایجاد مشکل می کنه.

لطفا توضیح بدید.
 

Masoud1365

مدیر انجمن
کلا شما هر جایی که بخوایی از کلاست استفاده کنی اول باید یه شیی ازش بسازید !
توی خود کلاس نیاز نیست ازش شیی بسازید اما بیرون از کلاس حتما باید ساحته بشه !
 

phpweb

Active Member
کلا شما هر جایی که بخوایی از کلاست استفاده کنی اول باید یه شیی ازش بسازید !
توی خود کلاس نیاز نیست ازش شیی بسازید اما بیرون از کلاس حتما باید ساحته بشه !
الان می رسیم به مشکل اصلی.

اگر یه تابع که توی یه فایل و بیرون از کلاس هست رو توی کلاس اینکلود کنیم. آیا این تابع بخشی از کلاس هست یا نه؟

من فرض کردم که این تابع عضو کلاس هست و می تونه از سایر توابع و متغیرهایی که به صورت private تعریف شدن استفاده کنه.

اگر فرض کنیم این تابع عضو کلاس نباشه، باید توی کلاس، یه شی از کلاس بسازیم که فکر نکنم این مورد منطقی باشه.
 

Masoud1365

مدیر انجمن
اگر اون تابعی که میگید رو میخواهید خارج از کلاس فراخوانی کنید باید از کلاس یه شیئ بسازید
 

phpweb

Active Member
اگر اون تابعی که میگید رو میخواهید خارج از کلاس فراخوانی کنید باید از کلاس یه شیئ بسازید
مشکل حل نشد.

اگر بخوام کدهای یه کلاس رو توی یه فایل قرار بدم و این فایل رو توی کلاس اینکلود کنم، پی اچ پی کدهایی که با این فایل اینکلود می شن رو داخل کلاس در نظر می گیره یا بیرون کلاس؟ فکر کنم جواب این سوال مشکلم رو حل کنه.
 

Masoud1365

مدیر انجمن
اگر که یه کلاس رو هم در یک کلاس دیگه اینکلود کنید و بخواهید ازش استفاده کنید باید شیی بسازید !
این که شما گفتید هم میشه همون استفاده از متدها یا پروپرتیهای یک کلاس خارج از خود کلاس ! ( پس باید شیی رو بسازید :wink: )
 

جدیدترین ارسال ها

بالا