heidari

معرفی اشیا درون کلاس PHP

2 پست در این موضوع قرار دارد

objects.jpg

در مبحث معرفی کلاس ها در PHP به معرفی کلاس ها پرداختیم. حال میخواهیم به فیلد ها دسترسی پیدا کنیم و اشیا درون کلاس PHP را معرفی کنیم. به عنوان نمونه یک بخشی از مثال درس قبل را توضیح میدهم

public function SetBody($body) {$this->body = $body;}

1

2

3

public function SetBody($body) {

$this->body = $body;

}

در ابتدای این کد فیلد Body را به صورت private تعریف کردیم. حال میخواهیم این فیلد را درون یک متد به کارببریم. برای این کار از this$ استفاده میکنیم. this$ تنها به شی اشاره میکند. بنابراین this$->body یعنی فیلد body از شی ای که درون متد SetBody تعریف شده فراخوانی میشه.

نکته : لازم نیست بعد از فلش this$ فیلد ها را با $ تعریف کنید. PHP خود متوجه میشود که آن فیلد است نه متد. ( بعد از متد ها همیشه { می آید )

کد مثال درس قبل را دوباره قرار میدهم :

<?phpclass Emailer {private $sender;private $recipients;private $subject;private $body;public function __construct($sender) {$this->sender = $sender;$this->recipients = array();}public function AddRecipients($recipient) {array_push($this->recipients, $recipient);}public function SetSubject($subject) {$this->subject = $subject;}public function SetBody($body) {$this->body = $body;}public function SendEmail() {foreach ($this->recipients as $recipient) {$result = mail($recipient, $this->subject, $this->body, "From: {$this->sender}\r\n");if ($result) {echo "Mail successfully sent to {$recipient}<br/>" . PHP_EOL;}}}}?>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

<?php

class Emailer {

private $sender;

private $recipients;

private $subject;

private $body;

public function __construct($sender) {

$this->sender = $sender;

$this->recipients = array();

}

public function AddRecipients($recipient) {

array_push($this->recipients, $recipient);

}

public function SetSubject($subject) {

$this->subject = $subject;

}

public function SetBody($body) {

$this->body = $body;

}

public function SendEmail() {

foreach ($this->recipients as $recipient) {

$result = mail($recipient, $this->subject, $this->body, "From: {$this->sender}\r\n");

if ($result) {

echo "Mail successfully sent to {$recipient}<br/>" . PHP_EOL;

}

}

}

}

?>

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

معرفی اشیا درون کلاس PHP

برای معرفی یک شی از کلمه new استفاده می کنیم. به مثال زیر دقت کنید:

<?php $emailerObject = new Emailer('mmshfe@gmail.com');?>

1

2

3

4

<?php

$emailerObject = new Emailer('mmshfe@gmail.com');

?>

بدین ترتیب یک شی به نام emailerObject ایجاد کردیم. در این مثال در بخش construct_ یک مقدار ورودی قرار دادیم (sender$). بنابراین هنگام ساختن شی جدید نیز باید برای آن مقدار در نظر بگیریم. تابع construct_ مقدار سازنده کلاس را در برمیگیرد. به جای آن میتوانید نام کلاس را نیز قرار دهید اما باید توجه داشته باشید که با تغییر نام کلاس ،باید نام این تابع سازنده را نیز تغییر دهید. حال میخواهیم با استفاده از این کلاس یک ایمیل ارسال کنیم.

فرستادن ایمیل با استفاده از یک کلاس PHP

<?php $emailerObject = new Emailer('mmshfe@gmail.com'); $emailerObject->AddRecipient('info@xoogle.ir'); $emailerObject->SetSubject('Test'); $emailerObject->SetBody('Hi, I\'m a test email!'); $emailerObject->SendEmail();?>

1

2

3

4

5

6

7

8

9

<?php

$emailerObject = new Emailer('mmshfe@gmail.com');

$emailerObject->AddRecipient('info@xoogle.ir');

$emailerObject->SetSubject('Test');

$emailerObject->SetBody('Hi, I\'m a test email!');

$emailerObject->SendEmail();

?>

در این شی جدید مقدار فرستنده mmshfe@gmail.com است، با استفاده از متد AddReciptient یک گیرنده فراخوانی اضافه کردیم، با استفاده از متد SetSubject یک عنوان اضافه شد و به همین ترتیب بخش های دیگر تعریف شده اند.

حال با استفاده از این کلاس میتوانیم یک ایمیل ارسال کنیم.

0

به اشتراک گذاری این پست


لینک به پست

سلام ، به انجمن خوش اومدید ، لطفاً کیفیت آموزش های خودتون رو با ادغام کردن اون ها در تاپیک مربوطه ، استفاده از BBcode های مخصوص ، معرفی منبع و مطالعه پیش نمایش آموزشتون بالا ببرید :)

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

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری