برگزیده های پرشین تولز

آموزش پي اچ پي (كلاس ها) قسمت هشتم

Mehdi

مدیر بازنشسته
تاریخ عضویت
1 آگوست 2004
نوشته‌ها
5,602
لایک‌ها
49
محل سکونت
Anywhere
ابجكت ها :
ابجكت چيست ؟ مجموعه اي از متغييرها و توابع است كه از يك الگوي خاص به نام كلاس ساخته شده اند .
اما كلاس ها چي هستن ؟ فرض كنيد ما يك شركت داريم كه اين شركت از بخش هاي مختلفي تشكيل شده است حال ما در هربخش احتياج داريم كه هر ماه يك گزارش مالي بگيريم ! ما اينجا دو كار ميتونيم بكنيم هم ميتونيم براي هربخش چند نفر بزاريم و انها گزارش مالي را تهيه كنند و هر ماه تحويل دهند در اين صورت در هربخش شلوغي و همچنين كارمند بيشتري نيازمنديم ! راه ديگر اينست كه يك قسمت به عنوان اتاق گزارش مالي درست كنيم و هر بخش داده هاي خود را به اين قسمت بدهيم و گزارش مالي خود را دريافت كنيم
در اين روش هم بخش ها منظم تر خواهند بود و هم ديگر احتياج به كارمند اضافي نداريم .
در اينجا ابجكتها نقش كارمند در بخش گزارش مالي را بر عهده دارند فكر ميكنم مفهوم كلاس را درك كرده باشيد .
بزاريد شكل كلي يك كلاس را برايتان نشان دهم
PHP:
Class First_class
{
//اين شكل كلي از يك كلاس هستش
}
پروپرتي ها:
آبجكتها به متغيير هاي خاصي دسترسي دارند كه به آنها پروپرتي ميگويند اين پروپرتي ها ميتونند در هرجاي بدنه كلاس باشند اما براي اينكه كد مون مرتب باشه بهتره كه در بالاي كلاس تعريف بشن. بگزاريد با مثالي ديگر بيشتر توضيح بدم :
PHP:
Class f_class {
var $name="mehdi";
}
$obj1=new f_class();
$obj2=new f_class();
$obj1->name="Ali";
print "$obj1->name<br>";
print"$obj2->name<br>";
ديديم كه براي اختصاص دادن يك كلاس به يك متغيير اينگونه عمل كرديم
PHP:
$obj1=new f_class();
علامت <- به شما اجازه ميده تا به متغيير هاي درون يك كلاس دسترسي داشته باشيد و اونها رو تغيير بديد همونطور كه در كد ميبينيد ما در خط ششم متغيير name در ابجكت يك رو مساوي علي قرار داديم كه باعث عوض شدن متغيير ميشه همچنين براي چاپ خروجي نيز به همين صورت عمل كرديم ولي بدون علامت مساوي
PHP:
Print  " $obj1->name ";
متد ها :
متدها در واقع توابعي هستند كه داخل يك كلاس وجود دارند بزاريد با يك مثال واضح تر بيان كنم :
PHP:
class f_class
     {
var $name;
function sayHello() 
 {
Print "Hello World";
}
     }
$obj1=new f_class();
$obj1->sayHello();
// Hello World  چاپ ميشود
همونطور كه ميبينيد يك متد خيلي شبيه به تابع معمولي هستش با اين تفاوت كه متد هميشه داخل كلاس تعريف ميشه در ضمن شما ميتونيد با علامت <- يك متد ابجكت را صدا بزنيد
مهمتر اينكه متدها به اعضاي متغيير هاي يك كلاس دسترسي دارند
شما همين الان ديديد كه چطوري به يك پروپرتي از خارج يك آبجكت دسترسي پيدا كنيم اما چطوري يك آبجكت ميتونه خودشو به اصطلاح Return كنه :
PHP:
class f_class
     {
var $name="mehdi";
function sayHello() 
 {
Print "Hello My names $this->name<br>";
}
     }
$obj1=new f_class();
$obj1->sayHello();
// Hello My names mehdi    چاپ ميكنه
يك عبارت مخصوص رو بكار برديم به اسم this$ تا كلاس به آبجكت كنوني Return بشه شما با تركيب اين عبارت با علامت <- ميتونيد داخل يك كلاس به هر پروپرتي و متدي كه بخواهيد دسترسي داشته باشيد حالا اگه بخواهيم به پروپرتي name در همه آبجكت هاي كلاسمون مقدار خاصي بديم ميتونيم به اين صورت عمل كنيم :
PHP:
class f_class     {
var $name="mehdi";
function setName($n){
$this->name=$n;      }
function sayHello() 
 {
Print "Hello My names $this->name<br>";
}
     }
$obj1=new f_class();
$obj1->setName("Ali");
$obj1->sayHello();
// Hello My names Ali   چاپ ميكنه
همونطور كه ديديد اومديم يه تابع تعريف كرديم كه اسم رو بتونيم همه جا تغيير بديم واز دستورthis براي عوض كردنش داخل كلاس استفاده كرديم.
در ابتدا اسم ما مهدي بود ولي بعد از اينكه تابع عوض كردن اسم رو بكار برديم متد صدا زده شد و اسم تغيير كرد
كد بالا رو ميتونستيم بصورت ساده تر وكمي پيچيده تر هم بنويسيم :
PHP:
class first_class {
 var $name;
 function first_class( $n="mehdi" ) {
 $this->name = $n;
 }
 function sayHello() {
 print "hello my name is $this->name<BR>";
 }
 }
 $obj1 = new first_class("َAli");
 $obj2 = new first_class("Asef");
 $obj1->sayHello();
 // hello my name is Ali   چاپ ميكنه
 $obj2->sayHello();
 // hello my name is Asef  چاپ ميكنه
همونطور كه ديديد اومديم و يه متد يا تابع با همون اسم كلاس خودمون ساختيم و مقدار ديفالتش رو روي مهدي گزاشتيم كه اگر هيچي وارد نشد اين عبارت چاپ بشه
حالا در پايين در خط دهم و يازدهم هنگامي كه ابجكت يك و ابجكت دو رو به كلاس ها اختصاص ميديم همون موقع هم مقدار اسم رو عوض ميكنيم و مشكلي پيش نمياد كلاسمون هنگامي كه متد صدا زده ميشه خود به خود صدا زده ميشه.
حال بزاريد با عبارت ديگري به اسم extends اشنا بشيم اين عبارت به اين معني ارث بردن است به اين مثال توجه كنيد :
PHP:
 class first_class{
 var $name = "mehdi";
 function first_class( $n ) {
 $this->name = $n;
 }
 function sayHello(){
print "Hello my name is $this->name<br>";
}
}
 class second_class extends first_class {
 }
 $test = new second_class("son of mehdi");
$test->sayHello();
 // outputs "Hello my name is son of mehdi"
همونطور كه ميبينيد ما كلاس دو رو تنظيم كرديم تا از كلاس يك ارث بري كنه وهمه متد هاي كلاس يك را خواهد داشت
ما ميتونيم اينجا داخل كلاس دو يك تابع با اسم sayHello بسازيم و بگيم عبارت I dont know my name رو چاپ كنه در اينصورت اگه حتي در خط 12 ام ما يك عبارت براي تعويض اسم بديم تاثيري نميكنه و همون عبارت I dont know my name رو چاپ ميكنه راه ديگري هم هست و اون چاپ هردو كلاس باهم هست :
PHP:
class first_class {
 var $name = "harry";
 function first_class( $n ) {
 $this->name = $n;
 }
 function sayHello() {
print "Hello my name is $this->name<br>";
 }
 }
 class second_class extends first_class  {
 function sayHello() {
 print "I'm not going to tell you my name -- ";
 first_class::sayHello();
 }
 }
 $test = new second_class("son of harry");
 $test->sayHello();
 // "I'm not going to tell you my name -- Hello my name is son of harry" چاپ ميكنه
همونطور كه ميبينيد دستور ( متد:: وارث ) ما ميتونيم هر متدي رو كه ما تغييرش داديم دوباره صدا بزنيم چون در كلاس دو ما متد sayHello رو تغيير داديم با اين دستور اونو دوباره برگردونديم .

خوب اين درس هم تموم شد احتمالا بعضي اشكالات هم داره كه با كمك شما رفع ميشه درضمن من بسياري از مثال هاي خود كتاب رو نياوردم چون بسيار گيج كننده بود حتا خودمم بهشون نگاه نكردم
-----------

مهدی صفری
 

siavashmusic

Registered User
تاریخ عضویت
6 فوریه 2005
نوشته‌ها
1,207
لایک‌ها
2
محل سکونت
بندرانزلی
آقا دستت درد نکنه هنوز نخوندم ولي حيفم اومد اولين نظر رو ندم کارت بيسته اي لواشک هلو سيب قرمز اي ماهي سفيد:D
 

Romain_Gary

Registered User
تاریخ عضویت
23 فوریه 2005
نوشته‌ها
1,801
لایک‌ها
6
سن
38
دستت درد نکنه خیلی مفید بید.
 

Mehdi

مدیر بازنشسته
تاریخ عضویت
1 آگوست 2004
نوشته‌ها
5,602
لایک‌ها
49
محل سکونت
Anywhere
بابا 20 نفر بازديد 2تا نظر ادم افسرده ميشه باور كنيد اين يكي از اون قبليه سخت تر بود نوشتنش رفته رفته هم سخت تر ميشه اين خاصيت انتشارات سمز هستش
يخورده از خودتون نظر در وكنين جيگران
 

mynobar

Registered User
تاریخ عضویت
27 سپتامبر 2005
نوشته‌ها
2,556
لایک‌ها
2
سن
42
امیدوارم دوستان حرفه ای پی اچ پی کار با سؤالات و مطالب خودشون بر غتای آموزش های شما بیفزایند ، حالا ما ( خودمو میگم) در ابتدای راهیم و بسی باید گرد کیبورد خوردن تا به پای شما رسیدن.
 

mynobar

Registered User
تاریخ عضویت
27 سپتامبر 2005
نوشته‌ها
2,556
لایک‌ها
2
سن
42
در ضمن اگه mehdvirus بتونه مطالب مربوط به منابع و برنامه ها و کتابهای PHP رو هم اینجا بیاره خیلی خوب میشه و جمع و جور میشن ، حالا که خیلی پراکنده هستن.
 

Mehdi

مدیر بازنشسته
تاریخ عضویت
1 آگوست 2004
نوشته‌ها
5,602
لایک‌ها
49
محل سکونت
Anywhere
به نقل از mynobar :
در ضمن اگه mehdvirus بتونه مطالب مربوط به منابع و برنامه ها و کتابهای PHP رو هم اینجا بیاره خیلی خوب میشه و جمع و جور میشن ، حالا که خیلی پراکنده هستن.

خيلي ممنون از نظرات:D
منظورتو درست حسابي نفهميدم:blink: :D
 

mynobar

Registered User
تاریخ عضویت
27 سپتامبر 2005
نوشته‌ها
2,556
لایک‌ها
2
سن
42

Mehdi

مدیر بازنشسته
تاریخ عضویت
1 آگوست 2004
نوشته‌ها
5,602
لایک‌ها
49
محل سکونت
Anywhere
اها اينجوري باشه من يه ليست از كتاباش دارم
40.gif
 

mynobar

Registered User
تاریخ عضویت
27 سپتامبر 2005
نوشته‌ها
2,556
لایک‌ها
2
سن
42
ممنون میشم اگه یه لیست از کتابهای منبع php رو که به زبان اصلی هستند ، همراه با لینک دانلودشان معرفی کنی ؛ منظور اصلی من هم تو پست قبلی ام این بود که با توجه به این که مدیر این بخش از فروم هستی ، میتونی اون تاپیک های گفته شده رو یکجا کنی و بیاری بذاری تو این بخش.
 

Mehdi

مدیر بازنشسته
تاریخ عضویت
1 آگوست 2004
نوشته‌ها
5,602
لایک‌ها
49
محل سکونت
Anywhere
مگه پاسكال رو نديدي همه متغير هاشو با اين تعريف ميكنه
تازه برو از قسمت اول بخون بيا ميفهمي
24.gif

قسمت بعدي رو فردا ميزارم
4.gif
 

mynobar

Registered User
تاریخ عضویت
27 سپتامبر 2005
نوشته‌ها
2,556
لایک‌ها
2
سن
42
به نقل از mehdvirus :
مگه پاسكال رو نديدي همه متغير هاشو با اين تعريف ميكنه
تازه برو از قسمت اول بخون بيا ميفهمي
24.gif

قسمت بعدي رو فردا ميزارم
4.gif
بازم ممنونیم.
 

iransbs

کاربر تازه وارد
تاریخ عضویت
3 می 2005
نوشته‌ها
471
لایک‌ها
0
محل سکونت
ایران، مازندارن، ساری
دستت درد نکنه
واقعا عالی کارت ادامه بدی عالی تر می شه
لطفا curl , GD کامل آموزشش رو بنویس
دستت درد نکنه
 

sinads

کاربر تازه وارد
تاریخ عضویت
9 آپریل 2009
نوشته‌ها
4
لایک‌ها
0
salam . man ye sayt daram va tosh yeghesmat be esme sefaresh daram
ke toosh ye forme sefareshe ke mishe print gereftesh
hala man mikham in forme sefaresho vaghti dokmeye printesh ro mizanam ham print begire va ham ono ersal kone be emailam .
age momkene komakam konid

nemone
 

sadegh62

کاربر تازه وارد
تاریخ عضویت
9 ژانویه 2013
نوشته‌ها
1
لایک‌ها
0
کارتون عالی بود واقعا ممنون میشم اگه کلاسهای انتزاعی و اینترفیس ها رو هم توضیح بدین
 
بالا