pedia-learning

ورود

گذرواژه‌تان را فراموش کرده‌اید؟

ثبت نام

ثبت نام
انجمن عمومی گسترش فناوری آگو

اگر اولین بار از انجمن بازدید می کنید برای دسترسی کامل به انجمن عضو شوید بعد عضویت قادر به ارسال مطلب و شرکت در بحث خواهید داشت

ارسال پاسخ 
 
امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش مفاهیم پایه شی گرایی در PHP (جلسه اول)
01-28-2013, 03:14 PM
ارسال: #2
RE: آموزش مفاهیم پایه شی گرایی در PHP (جلسه دوم)
()construct__
تابعی که با این نام باشه هنگام ساختن یک شی از کلاس بطور خود کار اجرا میشه

()destruct__
تابعی که با این نام باشه هنگامی که شما عملیاتتون با شی تموم بشه بطور خود کار اانجام می شه

::self
با این متد می تونید از داخل کلاس یک تابع از کلاس رو صدا بزنید
::parent
این متد به کلاس والد اشاره می کنه .. زمانی که شما یک کلاس رو فرزند کلاس دیگری قرار بدید

با یک مثال ساده کار رو شروع می کنیم. به کد زیر نگاه کنید

کد php:
<?php
class Myclass {
   function 
__construct() {
       print 
"construct";
   }
}
$obj = new Myclass();
?>

خروجی

کد php:
construct 

همون طور که می بینید با اینکه ما فقط یک شی رو به یک متغیر نسبت دادیم باز هم متد construct__ اجرا شد .
حالا اگه این تابع construct__ چند تا آرگمان در ابتدا از ما بخواد باید چطوری این آرگمان ها رو مقدار دهی بکنیم ؟
حالا به کد زیر نگاه کنید

کد php:
<?php
class Myclass {
   function 
__construct($name) {
       print 
$name;
   }
}
$obj = new Myclass('Ali');
?>

و خروجی :

کد php:
Ali 

پس اگر تابع construct__ در ابتدا نیاز به آرگمان داشت می بایست در هنگام تعریف شی آرگمان رو مقدار دهی کرد.
وگر نه شما با خطایه

کد php:
WarningMissing argument 1 for Myclass::__construct(), called in FILE ADRESS on line LINE NUMBER and defined in FILE ADRESS on line LINE NUMBER 

ر PHP 4 شما می تونید بجای استفاده از construct__ از نام کلاس به عنوان نام تابع استفاده کنید و این تابع هم مانند construct __ عمل خواهد کرد.

کد php:
<?php
class Myclass {
   function 
Myclass($name) {
       print 
$name;
   }
}
$obj = new Myclass('Ali');
?>


باز هم خروجی Ali خواهد بود.
(این قابلیت در php 5 هم support می شود)

حالا به این کد نگاه کنید :

کد php:
<?php
class Myclass {
   function 
Myclass($name) {
        print 
$name;
   }
   function 
t_empty(){
        print 
'$';
   }
   function 
__destruct(){
        print 
'Akbar';
   }
}
$obj = new Myclass('Ali');
?>

خروجی :


کد php:
AliAkbar 

همون طور که دید باز هم فقط متغیر رو به شی نسبت دادیم ولی پس از پایان اسکریپت تابع destruct__ عمل کرد و خروجی رو تغییر داد . شاید این سوال براتون پیش بیاد که در هر بار استفاده از شی در پایان destruct__ اجرا می شه ؟ جواب منفی هست و با این کد ثابتش می کنیم

کد php:
<?php
class Myclass {
   function 
Myclass($name) {
        print 
$name;
   }
   function 
t_empty(){
        print 
'$';
   }
   function 
__destruct(){
        print 
'Akbar';
   }
}
$obj = new Myclass('Ali');
$obj->t_empty();
?>


خروجی :


کد php:
Ali$Akbar 

اگر هر بار بعد از استفاده از شی destruct__ اجرا می شد باید دوبار Akbar چاپ می شد اما دیدید که این طور نبود.

حالا به این کد نگاه کنید :

کد php:
<?php
class Myclass {
   function 
Myclass() {
        
self::t_empty();
   }
   function 
t_empty(){
        print 
'$';
   }
}
$obj = new Myclass('');
?>

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

اما ::parent

قبل از توضیح parent باید به شما یاد بدم که چطوری یک کلاس رو والد کلاس دیگری قرار بدیم .
به این کد نگاه کنید :

کد php:
<?php
class {
    function 
example() {
        echo 
" I am parent";
    }
}
 
class 
extends {
    function 
example() {
        echo 
"I am Child ";
        
parent::example();
    }
}
 
$b = new B;
 
$b->example();
?>

همون طور که می بینید ما اینجا 2 کلاس داریم. کلاس B فرزند کلاس A هست. در مثال کاملا واضح هست که توسط extends یک کلاس رو فرزند کلاس دیگری قرار دادیم.
و توسط متد ::parent تابع example کلاس مادر رو صدا زدیم .
فکر نمی کنم مطلبی مونده باشه ..

با آرزوی موفقیت برای شما
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پیام‌های داخل این موضوع
RE: آموزش مفاهیم پایه شی گرایی در PHP (جلسه دوم) - agotd - 01-28-2013 03:14 PM

پرش به انجمن:


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


Persian Translation by MyBBIran.com - Ver: 4.1
Powered by MyBB, © 2002-2024 MyBB Group.
Theme designed by Marvel (Sidebar created by Yaldaram - Yaldaram.com)
Theme Translation by Mt Edition