سبد (0)

تبلیغات

سازنده کلاس در PHP

سازنده یا Constructor

Wiki

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

در PHP 4 سازنده تابعی می باشد که نام آن همان نام کلاس می باشد و در PHP 5 تابعی است که با نام"construct__" می باشد.

مثال1: در مثال زیر به دو روش، تابع سازنده تعریف شده است:

<?php 
class className{ 
    function __construct()
    {
        echo 'className created from PHP5 format';
    }
    function className()
    {
        echo 'className created from PHP4 format';
    }
}
$a=new className(); 
؟>

خروجی کد بالا:

اگر در PHP 5 اجرا شود خروجی آن className created from PHP5 format خواهد بود و اگر در PHP 4 اجرا شود خروجی آن className created from PHP4 format خواهد بود.

توجه: در PHP 5 چنانچه تابع construct__ وجود نداشته باشد مدل PHP 4 آن اجرا خواهد شد.

مثال2:

<?php
class My_class
{
  public $name;
  function __construct($Param="Amir")
  {
   $this->name=$Param;

  }
  function SayHello()
  {
   print "Hello My Name is $this->name"."<br />";
  }
}

$obj1=new My_Class();
$obj1->SayHello();
$obj2=new My_Class("Reza");
$obj2->SayHello();
?>

خروجی کد بالا:

Amir
Reza

همانطور که دیدید در مثال بالا یک سازنده ساختیم و مقدار دیفالتش را روی "Amir" گذاشتیم که اگر هیچی وارد نشد این عبارت چاپ بشود.

مخرب یا Destructors

Wiki

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

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

مثال:

<?php 
class className{
    funcrion __construct()
    {
        echo 'Start of className';
    } 
    function __destruct()
    {
        echo 'End of className';
    }
}
$a=new className();

?>

خروجی کد بالا:

Start of className
End of className

دیدگاه‌ها  

+2 # امیرکیان 1395-11-29 18:23
تو موقع تعریف یک شی از کلاس زیر دقت کنید
$conn = new mysqli($servern ame, $username, $password);

جلو کلاس mysqli 4پارمتر به صورت تابع قرار گرفته است

این چه معنی میدهد؟!
من تاحالا خودم شی به این صورت پارامتر دار از کلاس درست نکرده بودم؟!

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

نمیدونم ؛درست نتیجه گیری کردم آِیا؟!
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # فریبا mizraee 1394-09-08 21:46
تو مثال بالا : مخرب یا Destructors
من ارورر سینتکس دارم ممکنه بگید مشکل کجاست
Parse error: syntax error, unexpected 'funcrion' (T_STRING), expecting function (T_FUNCTION) in C:\xampp\htdocs \test\index.php on line 1188
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # مهرداد صلاحی 1394-09-09 07:05
با سلام و تشکر.
در تعریف تابع شما باید از کلمه‌ی کلیدی function استفاده کنید. این کلمه رو شما اشتباه تایپ کردید!!!
به کلمه‌ی funcrion دقت کنید! این کلمه رو به function تغییر بدید.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # فریبا mizraee 1394-09-09 08:30
ممکنه یه آموزش درباره چگونگی بررسی ارورر های php بزارید
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1394-09-09 09:21
به لینک http://beyamooz.com/php/81-advance/74-%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C-%D8%A8%D9%87-%D8%AE%D8%B7%D8%A7%D9%87%D8%A7-%D8%AF%D8%B1-php یه سری بزنید.

با تشکر
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # Reza Bahrami 1394-07-14 20:54
سلام
توی مثال مخرب تابع اول مشکل تایپی داره به جای function نوشته funcrion ;)
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+4 # seyyed75 1393-11-11 09:36
سلام.درمثال 2 خط 4 یک var یا private یا public باید در اول ان برای تعریف متغییر باشد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+4 # امیر پهلوان صادق 1393-11-11 11:58
سلام، ممنون اصلاح شد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+6 # امیر خوش نیت 1393-08-03 12:44
لطفا در مورد نکته زیر که گفتید یکم بیشتر توضیح بدید ، کامل مطلب رو درک نکردم .
"توجه: در PHP 5 چنانچه تابع construct__ وجود نداشته باشد مدل PHP 4 آن اجرا خواهد شد."
اگه php4 بود اصلا این تابع سازنده رو نمیشناسه و برنامه خطا میده ؟ یا خود به خود جایگزین میکنه ؟ یا ... ؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+7 # امیر پهلوان صادق 1393-08-03 15:31
با تصور اینکه هر دو روش سازنده یا Constructor را در کدتان استفاده کرده باشید، این جمله معنی پیدا می کنه.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+4 # امیر خوش نیت 1393-08-03 12:40
سلام به نظرم چند تا اشتباه تایپی در مثال 2 وجود داره
function __construct($Pa rm="Amir")
{
$this->name=$Pa ram;
}
در تابع سازنده construct__ اسم پارامتر و مقداری که به name دادین یکی نیست . در صفحه قبل هم همینطور بود.
----------------------
در قسمتی که object هم درست کردین خروجی اشتباه ست
$obj1=new My_Class();
$obj1->SayHello();
$obj2=new My_Class("Reza");
$obj1->SayHello();
چون در آخر دوباره SayHello رو از obj1 فراخوانی کردین و obj1 مقدار nameش همون Amir هستش
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+5 # امیر پهلوان صادق 1393-08-03 15:28
سلام، کاملاً حق با شماست. هر دو مورد اصلاح شد.
متشکر
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن

آموزش صوتی PHP

بستن
مدرس:
سوال و جواب:

ابزاری که در پیش روی دارید یکی از ابزارهای بسیار کاربردی سایت بیاموز در زمینه آموزش است، این ابزار برای سهولت یادگیری شما کاربران محترم طراحی شده است.

فقط کافی است روی عنوان پاراگراف مورد نظرتان کلیک کنید تا پخش صدا آغاز شود ...!

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه پرداخت آنلاین - بانک اقتصاد نوین پرداخت آنلاین - بانک سامان
 
دوره های آموزشی راه اندازی کسب و کارهای اینترنتی
تبلیغات اینترنتی