• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
آیا امکان استفاده از یک کلاس در کلاس دیگر هست؟
#1
سلام دوستان،

من دو فایل class دارم. اولی MySQL و دومی Session . در فایل دومی نیاز دارم که هنگام استفاده از mysql_query، اون رو به پایگاه داده وصل کنم.
استفاده از $this-> نمیشه چونکه این فقط داخل خود اون class رو جستجو می کنه. از $MySQL->X هم که میخوام استفاده کنم خطا میده و میگه که نمیشناسه!
ذکر کنم که include_once هم بکار ببریم تأثیری نداره. بهتر بگم: اصلا درست بشو نیست.
میخوام بدونم ایا اصلا امکان استفاده از یک کلاس دیگه در این کلاس امکان پذیر هست یا نه؟


سپاس Heart
غایب
  پاسخ
تشکر شده توسط :
#2
بله

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

یعنی اینجوری
کد پی‌اچ‌پی:
<?php

class a
{
    private 
$test;
    
    public function 
__construct($class)
    {
        
$this->test $class;
    }
    
    public function 
doChap()
    {
        
$this->test->chap();
    }
}

// class b
class b
{
    public function 
chap()
    {
        echo 
"i'm in class b";
    }
}

$a=new a(new b());
$a->doChap();
?>
  پاسخ
تشکر شده توسط : oia cyletech
#3
ناصر جان من تا حدی متوجه شدم اما اگه میشه خودت اینکارو کن برام تا بهتر بفهمم. ساری Tongue این هم فایل ها: http://www.4shared.com/file/128897404/ce...asses.html
فایل mysql اولی هست و session فایل دومی. در فایل دومی نیازه که به پایگاه داده وصل بشه یعنی به فایل اولی.
غایب
  پاسخ
تشکر شده توسط :
#4
کد پی‌اچ‌پی:
include 'mysql.php';
include 
'session.php';

new 
$ssql = new ssql(new mysql);
$ssql->confirm_user_id('oia'3); 
فقط هرجا می خواستی به آبجکت mysql توی کلاس ssql دسترسی داشته باشه
بدون که اون توی متغییر this->mysql$ ذخیره شده
بقیه یه ویرایش کلاس هم پای خودت!


فایل‌های پیوست
.php   session.php (اندازه 2.41 KB / تعداد دانلود: 5)
  پاسخ
تشکر شده توسط : cyletech
#5
این کاری که شما می خوای انجام بدی رو در اصطلاح بهش میکن اسوکیشن یا association
ارتباط بین دو کلاس .
علم تاج افتخار دنیا و یادگار پس از مرگ است
  پاسخ
تشکر شده توسط : cyletech
#6
دستت درد نکنه oia جان. خدا عمرت بده و همینطور جناب مخلصی که کامل ترش کرد Heart
غایب
  پاسخ
تشکر شده توسط :
#7
محمد امین جان، اول اینکه کدت اشتباه زیاد داشت. اصلش اینطوریه.

کد پی‌اچ‌پی:
    public $MySQL NULL;
    
    
#Construct function
    
public function __construct$obj NULL )
    {
        if( 
is_a$obj'MySQL' ) ) $this->MySQL $obj;
        else{
            if( ! 
class_exists'MySQL' ) ) require_once( ENGINE_PATCH 'classes' DS 'mysql.php' );
            
$this->MySQL = new MySQL;
        }
    } 

کدت اول با خطا روبرو می شد. تصمیم گرفتم ببینم اون توابعی که بکار گرفتی چیکار می کنه و چه آرگومنتی میگیره. دیدم خیلی اشتباه کردی و درستش کردم. اما هنوز وصل نمیشه. تو گفتی که برای اتصال باید از متغیر $this->MySQL استفاده کنم که کردم اما نشد. ولی سوال اینجاست که من باید به تابع query توی کلاس MySQL وصل بشم. برای اینکار هم اینطوری رفتم $this->MySQL->query اما باز نشد.
غایب
  پاسخ
تشکر شده توسط :
#8
کلاس MYSQL رو به صورت کد بزار
در مورد کاری که انجام شده باید بگم که از سازنده استفاده کردید
خوب من که نفهمیدم چرا اومدید تو سازنده شی ارسال کردید. البته نه اینکه غلط باشه . ولی چرا این کار رو کردید. اسوکیشن رو می تونید بهتر از اینا برقرار کنید Smile
علم تاج افتخار دنیا و یادگار پس از مرگ است
  پاسخ
تشکر شده توسط : oia
#9
من که قرار ندادم! شما اگه می تونید خودتون انجام بدید و کار مارو هم راه بندازید که چندین روزه الاف اینم.
غایب
  پاسخ
تشکر شده توسط :
#10
آقای مخلصی بگید که ما هم فیض ببریم
علیرضا جان انسان جایز الخطاست Tongue
ولی خودت بگو که مثلا من از کجا باید می دونستم که شما اونطوری فایل include می کنید یا Sleepy
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان