رفتن به مطلب

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


پست های پیشنهاد شده

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 یک عنوان اضافه شد و به همین ترتیب بخش های دیگر تعریف شده اند.

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

لینک به ارسال

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

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

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...