دوشنبه 28 خرداد 1397

فصل ششم : کلاسها : آموزش PHP

کلاس ها : Class (Object Oriented Programming with PHP)
کلاسها از بهترین ابزارهای برنامه نویسی شیءگرا می باشد و سبب آسانی در برنامه نویسی و کم کردن حجم برنامه و ساخت یافته شدن برنامه می باشد.که این امر خود موجب افزایش سرعت و در نتیجه کارائی بهتر سایت می گردد.
دلیل استفاده از کلاس در برنامه نویسی :

  • خوانایی بالای برنامه
  • دسترسی راحت و انسجام کدهای تولید شده
  • دسته بندی دادهای مورد نیاز بر اساس موارد استفاده
  • جلوگیری از بارگذاری اطلاعات غیر ضروری در برنامه

5-1 : تعریف کلاس :
برای تعریف کلاس از ساختار زیر پیروی می کنیم.


class نام کلاس {
// متغیرهای کلاس و توابع در این بخش قرار می گیرند
}

کلاس در واقع کوچکترین جزء ساختار شیءگرا می باشد و از آن می توان به عنوان آجر بنای یک ساختمان نام برد.
شما می توانید با استفاده از خاصیت شیءگرایی و ارث بری کلاس ها برای مقاصد مختلف استفاده نمایید و این انعطاف پذیری این ساختار را نشان می دهد.
5-2-انواع تعریف داده های کلاس :

نوع

خاصیت

روش تعریف متغیر

روش تعریف تابع

var

فقط برای متغیرها استفاده می شود

var $a=”Alireza”;

ندارد

public

قابلیت دسترسی توسط اشیاء تولید شده از کلاس

public $a=”Alireza”;

public function abc(){…}

private

دسترسی فقط توسط توابع درون کلاس

private $a=”Alireza”;

private function abc(){…}

protected

عدم دسترسی برای نمایش محتوا (دسترسی فقط توسط توابع درون کلاس و کلاسهای اضافه شده به کلاس جاری)

protected $a=”Alireza”;

protected function abc(){…}

*static

قابلیت دسترسی توسط اشیاء تولید شده از کلاس

static $a=”Alireza”;

static function abc(){…}

* : نکته :
1- در توابعی که از نوع static استفاده می شود از متغیر $this نمی توانید استفاده نمایید.
2- می توانید با نام کلاس و عملوند :: به این نوع تابع می توانید از بیرون کلاس بدون تولید شیء از کلاس دسترسی داشته باشید.
3- به صورت ترکیبی هم می توانید از نوع های ( public و static ) و (private و static) نیز استفاده نمایید.
4- برای مقداردهی و دسترسی به متغیرهای کلاس از نوع static بایستی با رابط "::" و نام متغیر static استفاده کرد.
به مثال هایی که در زیر آمده دقت نمایید.


<?php
// base class with member properties and methods
class Vegetable {

   var $edible;
   var $color;

   function Vegetable($edible, $color="green") 
   {
       $this->edible = $edible;
       $this->color = $color;
   }

   function is_edible() 
   {
       return $this->edible;
   }

   function what_color() 
   {
       return $this->color;
   }
   
} // end of class Vegetable

// extends the base class
class Spinach extends Vegetable {

   var $cooked = false;

   function Spinach() 
   {
       $this->Vegetable(true, "green");
   }

   function cook_it() 
   {
       $this->cooked = true;
   }

   function properties() 
   {
       echo " cooked : ".$this->cooked. "\n";
       echo " Color : ".$this->color. "\n";
       echo " edible : ".$this->edible. "\n";
   }
   
} // end of class Spinach
$A = new Spinach;
$A->cook_it();
$A->properties();
?>

 

در مثال بالا کلاس سبزیجات تعریف شده و کلاس اسفناج به کلاس سبزیجات اضافه شده است.
در تابع سازنده کلاس اسفناج رنگ سبز و خوراکی بودن آن با کلاس سبزیجات تعریف شده است.با تولید شیء از کلاس اسفناج و فراخوانی تابع cook_it خصوصیت قابل پخت بودن به آن را اضافه می کنیم. و در نهایت با فراخوانی تابع properties نتیجه این فراخوانی را خواهیم دید.

 

<?php 
/**
 * Define MyClass
 */
class MyClass
{
    var $var = 'Variant<br />';
    static $static = 'Static<br />';
    public $public = 'Public<br />';
    protected $protected = 'Protected<br />';
    private $private = 'Private<br />';

    function printHello()
    {
        echo $this->var;
        echo $this::$static;
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}

$obj = new MyClass();
echo $obj->var; // Works
echo $obj::$static; // Works
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello(); // Shows Var ,Static ,Public , Protected and Private


/**
 * Define MyClass2
 */
class MyClass2 extends MyClass
{
    // We can redeclare the public and protected method, but not private
    protected $protected = 'Protected2<br />';

    function printHello()
    {
        echo $this->var;
        echo $this::$static;
        echo $this->public;
        echo $this->protected;
    }
}

$obj2 = new MyClass2();
echo $obj2->var; // Works
echo $obj2::$static; // Works
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello(); // Shows Var , Static , Public , Protected2, Undefined
?>

در تعریف کلاس بالا از 4 نوع تعریف متغیر در کلاس استفاده شده است.در شیءهای تولید شده از کلاسها می توانید نتیجه فراخوانی و مجوز دسترسی ها را مشاهده نمایید.
نوع protected فقط از طریق فراخوانی توابع در کلاسها توسط متغیر this قابل دسترسی بوده و سایر موارد از طریق شیء تولید شده هم قابل دسترسی می باشند.
نوع private هم فقط در کلاسی که تعریف شده قابل دسترسی می باشد و از طریق سایر کلاسهای اضافه شده به کلاس اصلی قابل دسترسی نمی باشد.

 

منابع اینترنتی :
http://www.php.net
http://www.w3schools.com

کامپوننت ساز جوملا

کامپوننت ساز جوملا

محسن بزرگی وکیل پایه یک دادگستری

محسن بزرگی وکیل پایه یک دادگستری

عضویت در زرین پال

عضویت در زرین پال

مسکن من

مسکن من

عمومی

علیرضا بلوردی (برنامه نویس PHP)
سیرجان, کرمان
علیرضا بلوردی
ولی عصر, سیرجان, کرمان 7817645939
+989131789658
نمونه کارها و کامپوننتهای نوشته شده توسط علیرضا بلوردی برنامه نویس جوملا و PHP