آموزش برنامه نویسی شی گرا در php

با نام و یاد خدا
در این جلسه قصد داریم به آموزش برنامه نویسی شی گرا در php بپردازیم. شی گرایی مفهومی است که در تمام زبان ها از جمله C#، جاوا از اهمیت بالایی برخوردار است. در php الزامی به استفاده از شی گرایی نیست ولی مطمئن باشید هیچ پروژه مهمی نیست که بدون شی گرایی پیاده سازی شده باشد.

پیشنهاد می کنم یک نگاهی به تعریف مفاهیم شی گرایی در آموزش C# و اندروید داشته باشید تا در ادامه به آموزش نحوه استفاده از شی گرایی در php بپردازیم.

نکته: یکی از مزایای استفاده از شی گرایی این است که در تیم های برنامه نویسی به راحتی می توانید از کدهای دیگران استفاده کنید و نگران هم نام بودن متغیرها و توابع نباشید.

تعریف کلاس(class)

برنامه نویسی شی گرا یا OOP یک روشی است که در آن تمام متغیرها و توابعی که در کنار هم یک وظیفه واحدی انجام می دهند در ساختاری به نام  کلاس (class) قرار می گیرند بنابراین محور اصلی برنامه نویسی شی گرا ، کلاس (class) می باشد.

برای تعریف کلاس هم از کلمه کلیدی class استفاده می شود:

<?php
        class  نام کلاس  {

        تعریف متغیر ها و توابع      

        }
?>

تعریف متغیر های داخل کلاس (property)

به متغیر هایی که داخل بدنه کلاس (نه توابع) تعریف می شوند property گویند. توجه داشته باشید قبل از متغیر ها علامت $ قرار می دهیم.

نکته: برای اینکه به متغیرهای property در خارج کلاس (مثلا در کلاس دیگر) دسترسی داشته باشیم باید سطح دسترسی آن ها را public قرار دهیم.

 مثال:

<?php

        class  car
     {
       public  $name;
        public $color=”red”;

      }

?>

تعریف متد در کلاس

داخل کلاس علاوه بر متغیرها یک سری توابع تعریف می شوند که هر کدام عملیاتی انجام می دهند به این توابع، متد گویند. برای تعریف تابع از کلمه کلیدی function استفاده می شود.( مثل برنامه نویسی های دیگر متدها می توانند یک یا چند ورودی داشته باشند که در اینجا ما تعریف نکردیم)

نکته: همانطور که گفتیم اگر بخواهیم از بیرون کلاس به متغیر یا متدی دسترسی داشته باشیم باید سطح دسترسی آن را از نوع public تعریف کنیم. توابع به صورت پیش فرض public هستند و نیاز به کلمه کلیدی public نمی باشد.

<?php

class  car{

       public  $name;

        public $color=”red”;

         // تابع اول

        function t1()

                {
                  مجموعه دستورات
                }

        //تابع دوم

         function t2()

                {
                  مجموعه دستورات
                }

}

?>

دسترسی به متغیر داخل یک متد 

سوال: فرض کنید داخل متد t1 یک متغیر (با نام دلخواه a) تعریف می کنیم و به آن مقدار می دهیم. چگونه داخل متد t2 آن متغیر را صدا بزنیم ؟؟؟

ابتدا باید متغیر a را داخل متد t1 از نوع global تعریف کنیم . وقتی global یا جهانی شد در خارج تابع هم قابل دسترسی است ولی داخل تابع دیگر نه!
برای اینکه در تابع t2 متغیر a را صدا بزنیم ابتدا لازم است یک بار دیگر متغیر a را با سطح دسترسی global در t2 هم تعریف کنیم .اینجوری متد t1 و t2 هر دو به یک متغیر به نام a که در ظرف جهانی قرار دارد اشاره می کنند.

مثال: در مثال زیر متغیر a را با سطح دسترسی global تعریف کردیم تا جهانی شود و به آن مقدار 1000 را دادیم. سپس در متد t2 یک بار دیگر آن را تعریف کردیم تا بتوانیم به همان متغیر دسترسی داشته باشیم. تابع t1 را با کلید واژه this$ صدازدیم تا اجرا شود و مقداری دهی a را انجام دهد. در نهایت با دستور print متغیر a را چاپ کردیم.

نکته: برای صدا زدن  property ها و متدهای کلاس جاری از داخل خود کلاس از کلید واژه this$ استفاده می شود. همانطور که در کدهای زیر هم می بیند بعد از this$ از عملگر <-  برای اشاره به متد یا متغیر استفاده می کنیم. بنابراین برای صدا زدن متد t1 در متد t2 از کلیدواژه this$ استفاده کردیم .

<?php
class car {

                //تعریف property
public $color=”red”;
                public $name;

                //تعریف متدها
                function t1()
                {
                                //تعریف متغیر با سطح دسترسی جهانی
                                global $a;

                               //مقداردهی متغیر
$a=1000;
                }             

                function t2()
                {
                                // تعریف مجدد همان متغیر با سطح دسترسی جهانی برای دسترسی به آن

                                global $a;
                                //اشاره به متد داخل کلاس جاری 
                                $this->t1();
                                print $a;
                }
}
?>

حالا برای اجرای این کلاس باید یک شی بسازیم تا متد t2  آن را فراخوانی کنیم و مقدار a چاپ شود.

ایجاد شی از روی کلاس:

همانطور که در آموزش های گذشته گفتیم می توان کلاس (class) را به یک نقشه تشبیه کرد که می توان از روی این نقشه یک یا چند شی ایجاد کرد.

برای ساخت شی از کلمه new استفاده می شود.

نکته: تابعی که هم نام با نام کلاس باشد تابع سازنده است. برای یک کلاس می توانیم تابع سازنده تعریف کنیم.

آموزش برنامه نویسی شی گرا در php-تعریف شی

حالا با شی ای که ایجاد کردیم می توانیم با دستور زیر به  property دسترسی داشته باشیم مثلا name:

نکته: در اینجا علامت $ قبل از متغیر نیازی نیست.

آموزش برنامه نویسی شی گرا در php-فراخوانی property

برای دسترسی به متدها می توان به شکل زیر عمل کرد مثلا متد t2:

آموزش برنامه نویسی شی گرا در php- فراخوانی متد

خب تمام کدهایی که تا الان توضیح دادیم را به صورت زیر در یک فایل php در دریم ویور می نویسیم و با نام index.php ذخیره می کنیم:

آموزش برنامه نویسی شی گرا در php-کدها و توضیحات

حالا xampp را اجرا کنید تا خروجی برنامه را ببنیم.

آموزش برنامه نویسی شی گرا در php-خروجی

همانطور که در تصویر دیدید مقدار 1000 چاپ شد.

خب در این جلسه ما با نحوه نوشتن کلاس ،تعریف property ها و متدها ، نحوه دسترسی به متغیرها و متدها در داخل کلاس، دسترسی به متدها و property ها توسط شی آشنا شدیم. امیدواریم آموزش برنامه نویسی شی گرا در php زمینه خوبی باشد برای آموزش های بعدی.

در جلسه بعد با نحوه اتصال با دیتابیس آشنا می شویم . با همراه باشید
لطفا نظرات و سوالات خود را در قسمت دیدگاه ها با ما در میان بگذارید.

مدرسمدرس: مهندس مهدی نیکخواه

 

به این مقاله چند تا ستاره میدی؟
[تعداد رای: 7 امتیاز: 4.9]