نقطه ویرگول;

هر از گاهی از هر چیزی

هر از گاهی از هر چیزی

شی گرایی(OOP)در پی اچ پی(PHP) – عملکرد

سه شنبه, ۲۹ فروردين ۱۳۹۱، ۱۱:۱۶ ق.ظ
اصلی ترین هدف از ساختن اشیا، استفاده از اشیاست. یک شی ساخته می شود تا مورد استفاده قرار بگیرد. بیشترین بار استفاده از اشیا بر روی عملکرد (Method) های آنهاست و خصوصیات بر نحوه عملکرد تاثیر می گذارند. در ادامه با نحوه پیاده سازی متد در کلاس و نحوه استفاده از آن خواهم گفت.
عملکرد (Method) – کدنویسی
در کدنویسی شما باید برای کلاس خود یک function (تابع) پیاده سازی کنید. توابع (در غیر استفاده در یک کلاس ) داده هایی را از ورودی می گیرند، عملیات را نجام می دهند و نتیجه را به خروجی بر می گردانند البته این یک روال کلی است. در یک متد (توابع در کلاس) داده هایی از ورودی یا از پروپرتی (متغییر های کلاس) می گیرد، عملیات مورد نظر را انجام می دهد و نتیجه را به خروجی بر می گرداند یا در یک پروپرتی ذخیره می کند.
در ادامه یک کلاس برای یک ماشین حساب ساده پیاده می کنیم.
کلاس ماشین حساب :
class Calculator
{
public function sum($numFirst, $numLast)
{
$result = $numFirst + $numLast;
return $result;
}
}
مانند تعریف یک فانکشن، تعرف یک متد هم با استفاده از کلمه کلیدی function صورت می گیرد. بجز کلمه کلیدی public که قبل از کلمه کلیدی function آمد است هیچ تفاوت ظاهری دیگری میان یک فانکشن و متد وجود ندارد. قوانین نام گذاری متد ها هم مانند قوانین نام گذاری فانکشن است و همین طور نحوه ورودی ها و return مربوط به متد هم مانند فانکشن است.
$cal = new Calculator();
// sum
$result = $cal->sum(10, 5);
var_dump($result); // output: int(15)
یک متد بخاطر اینکه در یک کلاس تعرف می شود و مختص یک شی است بهتر می تواند با خصوصیات و متد های دریگر شی ارتباط داشته باشد و به همین خاطر یک متد از یک تابع کارآمدتر است که جزیی از یک شی است. کلاس را کسترش داده ام و در این کسترش سعی کردم تا تعامل بین خصوصیات و متد ها بیشتر نمود داشته بشد.
class Calculator
{
public $numFirst;
public $numLast;
public function setNumbers($numFirst, $numLast)
{
$this->numFirst = $numFirst;
$this->numLast = $numLast;
}
public function sum()
{
$result = $this->numFirst + $this->numLast;
return $result;
}
public function sub()
{
$result = $this->numFirst - $this->numLast;
return $result;
}
public function mul()
{
$result = $this->numFirst * $this->numLast;
return $result;
}
public function div()
{
$result = $this->numFirst / $this->numLast;
return $result;
}
}
دو پروپرتی با نام های numFirst و numLast و چهار متد sum و sub و mul و div برای انجام چها عمل اصلی ریاضی و متد setNumbers برای مقدار دهی اولیه property ها اضافه شده اند. متد ها با استفاده از شی داخی this به پروپرتی ها و متد های دیگر کلاس دسترسی دارند.
هنگامی که بخواهیم به متد ها و خصوصیات یک شی دسترسی داشته باشیم از روی کلاس مربوط به شی یک شی ایجاد می کنیم اما در یک متد مربوط به همین شی برای دسترسی به سایر متد ها و پروپرتی ها از شی this که بطور ذاتی درون کلاس وجود دارد استفاده می کنیم.
$cal = new Calculator();
// set numbers
$cal->setNumbers(10, 5);
// sum
$result = $cal->sum();
var_dump($result); // output: int(15)
// sub
$result = $cal->sub();
var_dump($result); // output: int(5)
// mul
$result = $cal->mul();
var_dump($result); // output: int(50)
// div
$result = $cal->div();
var_dump($result); // output: int(2)
// cal object
ver_dump($cal);
مبحث متد ها موضوع پیچیده ایی نیست و نیاز به توضیحات و تشریح فراوان ندارد شاید به این خاطر قبلا مبحث توابع درک شده است.

نظرات  (۲)

بسیار بسیار عالی
منتظر بخش constructor هستم شدید حدودا یه سوال دارم از اون بخش
ممنون هادی جان.
تا سه چهارتا مبحث آینده رو آماده دارم
عمدآ با تاخیر می زارم :دی .
سوالت رو هروقت و هرکجا بپرسی در خدمتیم.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی