شی گرایی در php
شی می تواند به هر چیز فیزیکی و مفهومی که دارای ویژگی های منحصر به فردی بوده و بر اساس ان ویژگی ها از سایر اشیا متمایز می گردد اطلاق گردد. شی فیزیکی همانند عینک را در نظر بگیرید این شی دارای یک ویژگی منحصر به فردی است که با استفاده از آن می توان بینایی خود را تقویت کرد. اشیای مفهومی نیز به مانند اشیای فیزیکی دارای صفات معین و منحصر به فردی هستند که با در نظر گرفتن آن صفات از سایر اشیای مفهومی دیگر متمایز می گردند.
کلاس را می توان مجموعه ای از اشیا در نظر گرفت که دارای صفات و عمیلیات های مشترکی هستند. برای مثال می توان تمامی خودروهای موجود را تحت عنوان یک کلاس طبقه بندی و مورد بررسی قرار داد. اگر چه اشیایی که در یک کلاس طبقه بندی می شوند دارای تفاوت هایی هستند و لیکن همه آنها در برخی صفات به یکدیگر شباهت دارند. با توجه به مفاهیم شی و کلاس می توان به راحتی دریافت که کلاس اعم از شی می باشد. یا بعبارت دیگر کلاس را می توان مجموعه ای از اشیا که دارای صفات و عملیات های مشترکی هستند در نظر گرفت.
ایجاد کلاس
حال که با مفهوم کلاس و شی آشنایی لازم را پیدا نمودیم به چگونگی ساخت یک کلاس در زبان php می پردازیم. بطور کلی ساختار کلاس در زبان php به شکل زیر می باشد
class classname { }
به منظور آشنایی بیشتر می خواهیم کلاسی با نام car ایجاد کنیم که دارای صفات و عملیات های مشخصی باشند. لازم به ذکر است که بدانیم برای تعریف صفات کلاس ها از واژه کلیدی var استفاده می کنیم.همچنین در داخل کلاس ها برای ارجاع به صفات کلاس از متغیر ویژه ای با نام this$ استفاده می کنیم. و نکته آخر اینکه تمامی عملیات های مرتبط با کلاس ها را بصورت تابع پیاده سازی می کنیم.
<?php class car { var $color; function set(){ $this-> color = "black"; } function show(){ echo "color car is :".$this-> color; } } ?>
ایجاد شی از یک کلاس:
بعد از اینکه کلاس خود را در php ایجاد کردیم نوبت به این نکته می رسد که چگونه می توان یک کلاس را با تمامی صفات و عملیات مرتبط با آن در کلاس های دیگر فراخوانی کرده و از توابع آن بهره بگیریم. در پاسخ به این سوال می توان گفت که ابتدا باید شیی از آن کلاس ساخته شود و سپس با ذخیره تمامی صفات و عملیات های یک کلاس در آن شی بتوان به آن صفات یا عملیات ها از طریق آن شی دسترسی پیدا نمود. برای ایجاد شی از یک کلاس از واژه کلیدی new استفاده می کنیم. به این صورت که بعد از نوشتن نام شی مورد نظر بصورت اختیاری، ارزش آن را مساوی با ارزش های تبدیلی آن کلاس به شی قابل استفاده قرار می دهیم .
$Object = new classname();
نحوه دسترسی به عناصر شی در کلاس ها:
بعد از اینکه توانستیم از طریق نمونه برداری از کلاسی آن را در یک شی ذخیره کنیم بطور منطقی تمامی صفات و توابع آن کلاس در آن شی ذخیره می گردد. از این رو برای دسترسی به عناصر کلاس ها ، از همان شی استفاده می کنیم. به این صورت که با نوشتن شی و به دنبال آن نوشتن صفات یا عملیات ها ، دسترسی به آنها ممکن خواهد بود به مثال زیر توجه کنید:
class car { var $color; function set(){ $this-> color = "black"; } function show(){ echo "color car is :".$this-> color; } } $Object = new car(); $Object->set(); $Object->show(); ?>
که خروجی آن به شکل زیر خواهد بود:
color car is :black
ارسال آرگومان ها به توابع کلاس ها از طریق شی
نکته حائز اهمیت در این مبحث نحوه اضافه کردن داده ها یا تعریف ورودهای مربوط به توابع برای انجام عملیات در آن شی یا کلاس است. از آنجا که عملیات های مربوط به کلاس ها به شکل توابع ایجاد می شوند و توابع نیز می تواند دارای آرگومان های متعددی برای دریافت داده باشند،از این رو می توان بعد از ایجاد یکی شی از یک کلاس ، تابع مورد نظر را از همان شی فراخوانی کرده و پارامترهای ورودی آن تابع یا عملیات را برای تابع مورد نظر تعریف نمود.
<?php class car { var $color; function set($arguman ){ $this-> color = $arguman; } function show(){ echo "color car is :".$this-> color; } } $Object = new car(); $Object->set("red"); $Object->show(); ?>
خروجی :
color car is :red
سازنده های کلاس:
تقریبا تمامی کلاس تابع خاصی به نام “سازنده” به لاتین construct دارندکه به هنگام ایجاد کلاس بطور خودکار ایجاد می شود و می توان از تنظیمات آن برای ارتباط با دیتابیس یا کار های دیگر استفاده کرد . در php 4 نام این تابع همنام با نام کلاس است ولی در php5 نام این تابع به “construct__” تغییر یافته است. معمولا سازنده ها برای تعیین مقدار اولیه برای صفات اشیا بکار می رود و ساختاری همانند تابع دارند با این تفاوت که به طور خودکار فراخوانی می شود
در php 5 :
<?php class car { function __construct() { echo 'benz'; } } $a = new car(); ?>
در php 4 :
<?php class car { function car() { echo 'benz'; } } ?>
که خروجی هر دو به شکل زیر خواهد بود.
benz
0 دیدگاه