campaign-edianeh-98

دوره مجازی PHP (جلسه 22): برنامه نویسی شی گرا - مفاهیم پیشرفته



visibility  
mode_comment   ۲۷

در جلسه ی امروز می خوایم در مورد مباحث پیشفرته تر در برنامه نویسی شی گرا صحبت کنیم . در این جلسه در مورد کلاس های abstract و interface ها صحبت می کنیم و بعضی مفاهیم مهم و کاربردی دیگه رو توضیح میدیم .

مطالب مطرح شده در این جلسه عبارتند از :

مفاهیم پیشرفته در برنامه نویسی شی گرای PHP

  • توضیحات تکمیلی در مورد کاربرد های کیورد static
  • افزودن قابلیت شمارش تعداد نمونه های ساخته شده از یک کلاس
  • کپی کردن اشیاء با استفاده از clone
  • عدم کپی شدن اشیاء با عملیات انتساب و رفتار این عملیات
  • تشخیص کلاس یک شئ و نمونه ی ساخته شده با عملگر instanceof
  • تعین نوع پارامترهای ورودی متد ها (type hinting)
  • مقداردهی خصوصیت های خاص فرزندان یک کلاس در متد سازنده ی آن
  • استفاده از متد سازنده ی کلاس پدر/والد در کلاس های فرزند
  • توضیحات تکمیلی در مورد کیورد final
  • جلوگیری از extend شدن یک کلاس با استفاده از کیورد final
  • ثابت های جادویی برای دریافت نام کلاس، متد و فضای نام کنونی
  • دریافت اطلاعات همه ی خصوصیات یک شئ و کلاس
  • دریافت مشخصات همه ی متدهای یک شئ و کلاس
  • آشنایی کلی با زبان UML و مدلسازی ساختار کلاس های یک سیستم
  • کلاس های abstract در PHP و کاربرد آنها
  • متدهای abstract و توضیح آن
  • رابط ها (interfaces) و دلیل استفاده از آن ها
  • آشنایی با مفهوم Object Iteration
  • اصول و مفاهیم برنامه نویسی شئ گرا :
  • مفهوم ارث بری (Inheritance)
  • مفهوم مخفی سازی (Encapsulation)
  • مفهوم چند شکلی (Polymorphism)
  • مفهوم انتزاع/تجرید (Abstraction)
  • Serialization : تبدیل اشیاء و متغیرهای مختلف به رشته و بازیابی آن ها
  • کاربرد مهم تبدیل اشیاء به رشته و ذخیره سازی مستقیم آنها در فایل، سشن و دیتابیس
  • دیدن کاربرد serialization در محبوبترین cms دنیا ، وردپرس
  • دیدن تمام متدها و خصوصیت های  mysqli و PDO و نحوه ی جستجو برای یادگیری کاربرد آنها
  • طراحی ساختار کلاس های وسایل نقلیه
  • مینی پروژه : طراحی و پیاده سازی ساختار کلاس بندی اشیاء هندسی مختلف و تشریح مفاهیم پیشرفته ی شی گرایی در بستر آن
info توجه

این مطلب یک جلسه از آموزش حرفه ای php می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش حرفه ای php

comment دیدگاه کاربران
rezajooni replyپاسخ

عالیه استاد ممنون از شما

لقمان آوند

خواهش می کنم
موفق باشید

منصور جواهر replyپاسخ

استاد منظور از برنامه نویسی 3 لایه یا 3layer چیست ؟

لقمان آوند

اینجا منظور تقسیم بندی نرم افزار به 3 لایه رابط کاربری، منطق برنامه و داده هست …

yazda replyپاسخ

آقای آوند سلام
دارم با یه آموزش یه پلاگین رو می نویسم .. دو تا سوال داشتم
مثلا ببینید کد من اینه :


الان شما توی این ویدئو توضیح دادید که ثابت جادویی کلاس؛ نام همون کلاسی رو میده که این کد داره توش اجرا میشه .. الان اینجا یعنی نام کلاس init رو میده؟ و اینکه اصلا این کلاس init چی هست؟
راستش من دقیقا متوجه کار این ثابت نشدم.
اون دو نقطه هم گفتید برا ارث بری هست و اینکه از کلاس نمونه نسازیم .. ولی نمیدونم چرا اینجا در عمل متوجه نمیشم. 😳
اگه این تکه کد که گذاشتم رو برام توضیح بدید ممنون میشم.

yazda replyپاسخ

بقیشو فهمیدم .. الان مشکلم فقط سر همون تابع init هست .. چیه این؟ از توابع پی اچ پی هست یا وردپرس؟

لقمان آوند

در مورد کدوم کد صحبت می کنید ؟

لقمان آوند

سلام
init یه متد دلخواه هست که خود برنامه نویس نوشته و مال وردپرس نیست . می بینید که در بالا هم اول همین متد رو صدا زده .

yazda replyپاسخ

همین کدی که توی کامنت قبلیم گذاشتم .. تایید نشده هنوز.

میلاد رش replyپاسخ

سلام تو php storm هر کاری میکنم نمیتونم نوشته های فارسی رو تو خروجی درست نشون بدم همش کاراکتر های نامفهوم میاره ؟؟؟؟

لقمان آوند

تو مرورگر یا تو خود phpStorm .
اگر تو خود phpStorm منظورتون هست به علات عدم پشتیبانی صحیح از یونیکد در کدنویسی هست و برای ویرایشش مشکل دارید ولی تو مرورگر نباید مشکلی در نمایشش باشه …

mohamad mohamadi replyپاسخ

سلام ببخشید دونستن همه ی جلساتی که گذاشتید تا حالا 22 جلسشو خوندم
برای اون 3 4 تا پروزه آخری اجباریه؟ من همرو خوندم مهمارو یاد گرفتم ولی مثلا برنامه نویسی شی گرائو قست 2 را خوب نخوندم ندونستنش مشکل پیش میاره؟

لقمان آوند

بهتره که یاد بگیرید و بعد برید سراغ پروژه ها . ولی در عین حال پروژه ها به مشکلی بر نمی خورید اگر اکثر محتوای جلسات قبل رو دیده باشید .

shahriar rad replyپاسخ

با سلام و درود آقای آوند یه سوال داشتم
چرا ما باید از کلاس و … استفاده کنیم؟

لقمان آوند

مگه ویدیوهای مربوط به شی گرایی رو ندیدید ؟ مزایایی که در مورد برنامه نویسی شی گرا گفتیم دلایلی استفاده از اون میشه !

shahriar rad replyپاسخ

ببخشید آقای آوند اگه سوالم ابتدایی
آیا ما از شی گرایی استفاده میکنیم که نظمی به کدها ، حرفه ای تر کردن کارها و دسترسی آسون و …
را داشته باشیم؟
ممنون میشم مستقیم جواب بدین
چون من ویدیوهای شما را هر چی کد میزنین سریع همون و میزنم کمی بی دقت شدم در صحبت ها
عذر خواهی من و بپذیرین

ممنون بابت جوابتون

وحید صالحی

بله یکی از مباحث و اهداف استفاده از شی گرایی همین نظم در کدها و کدنویسی هست در کنار ده ها مزیت دیگه مثل مدیرت راحتتر پروژه ها کدنویسی تمیز تر و سریعتر و مواردی بسیار مفید دیگر هست

Massud Tarekhi replyپاسخ

با سلام
استاد من توابع ()autoload__ و ()call__ رو متوجه نشدم می شه توضیح بدید

لقمان آوند

تابع __call زمانی صدا زده میشه که متدی رو صدا بزنیم که در اون آبجکت قابل دسترسی نباشه!
تابع __autoload رو هم که مثال زدیم در جلسه 23 دوره . ببینید متوجه خواهید شد .

فرهاد replyپاسخ

استاد آوند نمی دونم این مورد رو در جلسه مربوط به شی گرایی اشاره کرده بودید یا نه اما معمولا به این دلیل که ست کردن مستقیم متغیرهای کلاس بدون استفاده از متد های ست و گت مشکل امنیتی به وجود میاره ما از متدهای ست و گت استفاده می کنیم. اما من با متد get_class_vars متغیرهای کلاس مثلا mysqli رو در آوردم ,و دیدم که متغیرهای زیادی از این کلاس به صورت عمومی در دسترس هستند. آیا این مورد مشکلی به وجود نمی یاره و چرا خود php به این روش متغیرها رو در دسترس عموم گذاشته؟ با تشگر از وقتی که می ذارید بابت پاسخگویی

لقمان آوند

سلام
بله این مورد رو در دوره گفتیم.
معمولا متغیر هایی که در این کلاس ها در دسترس هستند قابل نوشتن نیستند و مشکلی بوجود نمیاره … (readOnly هستند)

فرهاد replyپاسخ

استاد آوند عزیز با توجه به اینکه شما در این جلسه در مورد شی گرایی صحبتتون رو تمام کردید ولی در مورد enumeration ها در php صحبتی به میون نیومد من در مورد نوع های شمارشی در اینترنت سرچ کردم و به مطالب زیر برخوردم:
http://www.dreamincode.net/forums/topic/201638-enum-in-php/
اما ظاهرا اونطوری که این مطلب اشاره کرده برای استفاده از enumeration ها باید از pear و pecl استفاده کنیم به همین خاطر من این سوال برام پیش اومد که pear و pecl چی هستند و اگه امکان داره در موردشون توضیح مختصری بدید. با تشکر

لقمان آوند

pear و pecl مجموعه ای از کدها و پکیج های آماده هستند که کدهایی رو در بر دارند. این کدها ممکنه در پروژه های مختلف قالب استفاده باشه و شما می تونید از پیاده سازی شده اونها در این دو مجموعه استفاده کنید. در اینجا هم توضیحات خوبی در موردش داده شده.
php به صورت پیشفرض نداره enum ها رو و اگر چنین چیزی گفته پس باید از همین دو مجموعه استفاده کنید. در عین حال می تونید با یه ترفند ساده شبیه سازی این چنینی از enum ها داشته باشید :

فرهاد replyپاسخ

استاد چرا در php کتابخانه های پیش ساخته اینقدر کم و غیر کافی هستند؟ مثلا در این صفحه کلاس ها و interface های از پیش تعریف شده در پی اچ پی لیست شده که همون طور که می بیند انگشت شمار هستند
http://php.net/manual/en/reserved.interfaces.php
و مثلا در این صفحه exception های پی اچ پی لیست شدند
http://php.net/manual/en/reserved.exceptions.php
که واقعا محدودند و اصلا جوابگوی برنامه نویس ها نیستند. دلیلش چیه که پی اچ پی در مقایسه با زبان هایی مثل .net اینقدر کدهای از پیش تعریف شده کمی دارند؟ و آیا این به این معنی هست که برنامه نویس ها باید از همین کدهای محدود فقط استفاده کنند؟
با تشکر

لقمان آوند

اقا فرهاد این موارد که کتابخانه نیستند!
اگر لیست کتابخانه های php رو می خواید کافیه list of php libraries رو سرچ کنید تا هر نوع کتابخونه ای رو که می خواید پیدا و استفاده کنید. php اپن سورس هست و حجم کتابخانه های تولید شده توسط افراد مختلف در سطح وب خیلی زیاد هست. تقریبا برا هر کاری کتابخونه های خوبی داره.

محمد میرزایی جوینانی replyپاسخ

استاد با استفاده از constractor نمیشد wife رو براش تعریف کرد؟
حتما باید از setwife استفاده کرد؟

لقمان آوند

بله خوب معلومه که میشه
هر مقداری رو توی توابع set قرار میدید میشه با پاس دادنش به کانستراکتور هم ست کنید

ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.