PDA

View Full Version : سوال: شی گرایی



hosein123
شنبه 23 آذر 1392, 09:43 صبح
با سلام
من چند تا کلاس دارم که میخوام باهم ارتباط داشته باشن یعنی بتونم یک نمونه از یک کلاسو به کلاس دیگه بفرستم
مثلا دو تا کلاس DB,USER دارم چطوری از یک نمونه از کلاس user یا db به اون یکی کلاس بفرستم
از ارث بریم نمیخوام استفاده کنم


class db{
private $hostname;
private $username;
private $password;
private $database;
private $command;
private $mysqllink;
private $result;
}




class user{
private $id_user;
private $email;
private $pasword;

public function user($id_user,$email,$password)
{
$this->id_user=$id_user;
$this->email=$email;
$this->pasword=$password;
}
}

Veteran
شنبه 23 آذر 1392, 09:59 صبح
خب شما در سازنده(Construct) کلاس user یک نمونه از کلاس db ایجاد کنید.البته در این صورت برای دسترسی به فیلد و متد های کلاس db باید سطح دسترسی رو به public تغییر بدید.
اگر بگین دقیقا میخواید چیکار کنید شاید بشه بهتر راهنمایی کرد

sadegh1362
شنبه 23 آذر 1392, 13:51 عصر
سلام
شما می تونید قبل از عبارت class یک include بدین از فایل کلاس جدید چون از لحاظ حافظه این دستور در رم اجرا نمی شه و فقط فایلش آدرس دهی میشه بر عکس require. بعد از این کار شما با دستور this$ می تونید کلاس مورد نظر رو new کنید . البته بهترین کار برای این کاری که شما می خواید انجام بدید ارث بری است چون گفتید نمی خواد از این راه استفاده کنید این راه رو براتون کفتم موفق باشید .

hosein123
شنبه 23 آذر 1392, 23:50 عصر
سلام
من میخوام از بیرون کلاس از داخل یک تابع یه نمونه از کلاس دیگه رو به یک کلاس بفرستم و از توابع و صفات اون کلاس استفاده کنم.



$user=new user();
$db=new db();
$user->register($db);






class user{
private $id_user;
private $email;
private $pasword;

public function user($id_user,$email,$password)
{
$this->id_user=$id_user;
$this->email=$email;
$this->pasword=$password;





}

public function register($db)
{


}


}

omidabedi
یک شنبه 24 آذر 1392, 02:12 صبح
از واژه ی کلیدی extends استفاده کن برای ارث بری از کلاس دیگر استفاده کن مثلا:
(پستتو کامل نخوندم :|)


class user extends db{
}


الان میتونی از متغییر و توابع کلاس db توی user استفاده کنی

omidabedi
یک شنبه 24 آذر 1392, 02:16 صبح
اهان نمیخوای از ارث بری استفاده کنی :)
خب ببین میشه با post ارسال کنی؟
یا مثلا چیزایی رو که میخوای از طریق پارامتر به کلاست بفرستی

rezaonline.net
یک شنبه 24 آذر 1392, 03:24 صبح
یک کلاس رجیستری برای نگه داشتن تمامی آبجکت ها بنویسید و استفاده کنید .

sadegh1362
یک شنبه 24 آذر 1392, 08:03 صبح
در همون تابع فایل کلاس رو include کنید و استفاده کنید.

hosein123
دوشنبه 25 آذر 1392, 18:13 عصر
از همگی ممنون