ورود

نسخه کامل مشاهده نسخه کامل : آموزش برنامه نویسی شی گرایی در PHP



Web Design
15-07-2014, 01:23
سلام
دوستان تصمیم گرفتم آموزش شی گرایی PHP رو برای کاربران P30World شروع کنم امیدوارم مفید باشه :n16:.

خیلی کلمات کلیدی رو ترجمه نمی کنم چون آموزش خیلی بهم میریزه .

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

Web Design
15-07-2014, 02:10
برای اکثر برنامه نویس های PHP شروع شی گرایی یک غول مرحله آخر فرض میشه چون باید نصفی از Syntax قبلی رو فراموش کنید و Syntax های جدیدی یاد بگیرید اما بعد از گذشت حتی مدت کمی از یادگیری با دقت به روند و تاثیر OOP (Object Oriented Programming) در سبک کد نویسیشون یک فصل جدیدی از برنامه نویسی رو تجربه می کنند .

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

فهم مفهوم شی گرای

OOP یک سبک کد نویسی است که به برنامه نویس اجازه میده که دستورات و عملکرد های مشابه رو داخل یک Class قرار بده. شما با این کار به عقیده و پایه برنامه نویسی یعنی DRY (Don't Repeat Yourself) احترام ویژه ای گذاشتید.

یکی از مزایای برنامه نویسی DRY این است که اگر یک قسمت از اطلاعات شما در داخل کد تغییر کند معمولا شما فقط باید یک قسمت از آنرا تغییر دهید. یکی از کابوس های یک برنامه نویس این است که یک برنامه را با کد های تکراری دستکاری کند این حتی میتونه از سریال های شبکه یک هم خسته کننده تر باشه . خستگی Function و اطلاعات تکراری از تن برنامه نویس حتی با کلفئین هم خارج نمیشه .

شی گرایی برای شروع ترسناک به نظر می آید اما OOP در واقع یک روش بسیار ساده و در نهایت باز هم ساده تر برای برنامه نویسی است.

فهم Object ها و Class ها


Object = شی

قبل از شروع به آموزش OOPدرک فرق بین Object و Class راباید داشته باشید .

خوب مثال رو اینطوری بیان کنیم که ساختمان ها Class های ما هستند و ساختمان های سطح شهر استفاده های مختلفی دارند اما در نهایت همگی ساختمان هستند . امکان داره تصور این ماجرا یکم براتون سخت باشه ولی به دور و ور خودتون خوب نگاه کنید و یکم تصور کنید .

یک Class, مشابه طرح ساختمان است. طرح برای ما شکل، اتاق ها و ارتباط اجزای ساختمون رو بیان می کند اما دقت کنید طرح ما هنوز روی کاغذ است و این امکان هست که حتی هنوز ساختمانی هم نداشته باشد .

یک object, مشابه یک خانه واقعی است که با توجه به آن طرح قبلی ساخته شده است. اطلاعات ذخیره شده در Object مثل چوب ، سیمان و بتن بدون یک طرح و نقشه برای ساخت خانه کاملا بدون کاربرد هستن مگر اینکه مهندس بازی یک ایرانی گل کنه :n13: نقشه ما یعنی Class و مواد سازنده ما یعنی Object با هم یک ساختمان رو ایجاد می کنند . حالا نوبت تصور شماست .

Class ها استایل و عملکرد ها را تنظیم می کنند که در نهایت ما یک Object درست کنیم . هر Class می تواند بی نهایت Object ایجاد کند . میشه یه مثال جالب بزنم . شما مسکن مهر رو فزض کن ... ما اینجا یک نقشه برای هزاران هزار واحد مسکونی در صد ها موقعیت مکانی و آب و هوایی مختلف داریم ولی در آخر بدون توجه به موقیت مکانی و آب و هوایی و فرهنگی باز هم ما فقط از یک نقشه کاملا ثابت استفاده کردیم :n10:

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

موفق باشید .

Web Design
15-07-2014, 13:47
بخش دوم رو شروع کنیم فقط دوستان لطف کنند همه مثال ها رو با من با دستای خودشون بنویسند .
پیکربندی یک Class اصلا کار مشکلی نیست. ما یک کلاس رو با کلمه کلیدی Class شروع می کنیم و در جلوی آن اسم کلاس رو نوشته و در ادامه از { } استفاده می کنیم .

نمونه یک Class ساخته شده :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

بعد از اتمام ساخت یک Class ما باید اون رو به یک متغیر نسبت بدیم که به شکل زیر می باشد .



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای مشاهده ی تمام اجزای کلاس از تابع Var_dump() استفاده می کنیم .



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


حالا فایل خودتون رو اجرا کنید و نتیجه ای مشابه زیر باید ببینید :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خوب تبریک !! اولین کلاس خودمون رو ساختیم و اون رو به یک متفیر نسبت دادیم !! ساده تر از این نمیشد . اگر باز هم گیج شدین نگران نباشید پدرام اینجاست :n07:

افزودن خواص ( Property ) یه کلاس :

برای افرودن اطلاعات به Class ها از Property که یه جورایی میشه به عنوان Variable ها ازشون اسم برد، استفاده می کنیم .



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خوب مثال بالا توجه کنید، در ابتدا کلاس خودمون رو به اسم MyClass ایجاد کردیم و در داخل اون یک Property به اسم $prop1 ساختیم (Public توجه خاصی نکنید :n13: در ادامه بهش می پردازیم ) . کلاس رو بستیم و با کلمه کلیدی new کلاسمون رو به یک متغیر نسبت دادیم.
با استفاده از echo ما Property داخل کلاس رو اجرا کردیم اما چطوری ؟؟؟!

برای دسترسی به Propery های داخل کلاس از <- استفاده می کنیم و جلوی آن اسم Property رو بدون علامت $ میاریم .

نتیجه کد بالا باید مانند زیر باشد :


I'm a class property!


پس به دوراه کوتاه بکنیم :




ما یاد گرفتیم چطوری کلاس ها رو ایجاد کنیم .
چگونه کلاس خود را به یک متغیر با new نسبت دهیم .
با متغیر var_dump چگونه کار کنیم .
چگونه یک Property بسازیم .
چگونه یک Property را ایجاد کنیم .


تمرین :

یک کلاس به نام myFamily بسازید و داخل آن نام اجزای خانواده را به Property ها نسبت دهید . شی خود را بسازید و Property ها را اجرا کنید .

akpa
15-07-2014, 14:16
سلام تایپیک خیلی خوبی رو شروع کردی امیدوارم ادامه دار باشه و نیمه کاره رها نشه
اینم جواب تمریناتتون استاد:)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Web Design
15-07-2014, 14:34
سلام تایپیک خیلی خوبی رو شروع کردی امیدوارم ادامه دار باشه و نیمه کاره رها نشه
اینم جواب تمریناتتون استاد:)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

تمام سعی خودم رو می کنم .
ممنون که دنبال می کنید . :n12:

Web Design
16-07-2014, 13:51
متد ها همان Function های خودمون ولی در Class ها هستند پس به فانکشن ها درون یک کلاس میگن Method .

در واقع تمامی اقدامات و عملکرد هایی که یک شی انجام میدهد به وسیله Method ها صورت گرفته و به وسیله آنها دستورات را اجرا می کند .

خوب کمترین توقعی که از شما توی این بخش هست اینه که Function ها رو بلد باشید وگرنه شی گرایی که چیزی نداره .

اولین مثال رو اینطوری شروع کنیم که یک متغیر به نام prop1 ایجاد کردیم و حالا باید آنرا درون یک Method به نام setProperty اجرا می کنیم. اگر دقت کنید روند کار هیچ فرقی با ساخت فانکشن ها نخواهد نداشت .

کد زیر رو با دقت بررسی کنید و هرچیزی که تا به اینجا یاد گرفتید رو یکبار دوره کنید .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

نکته : برای دسترسی به یک متغیر یا یک شی خارج از کلاس یا درون یک کلاس از $this-> استفاده می کنیم و بعد از آن فقط نام متغیر بدون $ را می آوریم .

برای چاپ کردن Method ها خیلی عادی و به روش همیشگی که برای فراخوانی Function عمل می کنیم ولی دقت کنید ما یک شی ساختیم و باید از طریق آن شی Method رو چاپ کنیم .












به کد زیر دقت کنید :




برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

کد بالا رو بررسی کنید و نتیجه اون رو کمی تغییر بدید .

قدرت OOP وقتی نمایان می شود که یک کلاس چند بار استفاده مختلف کنید .
بیاین یه تمرین برای قدرت نمایی بریم .



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


نتیجه کد بالا باید چیزی شبیه زیر باشد



I'm a classproperty!I'm a class property!
I'm a new property value!
I belong to the second instance!


تمرین : یک کلاس با نام forum بسازید و درون آن یک پیغام خوش آمد گویی برای هر نام کاربری ای که به متد خود می دهید بنویسید .
2 شی مختلف ایجاد کرده و 2 پیغام خوش آمد گویی یکی برای من و یکی هم برای خودتون بنویسید .

akpa
16-07-2014, 14:45
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این جواب سوال ها البته اگه صورت سوال رو درست متوجه شده باشم
یه نکته هم جا داره اشاره کنم که (البته فک کنم در ادامه بحث خودتون میخاستید توضیح بدید) بهتره متغییر ها رو به صورت خصوصی تعریف کنیم و تنها توسط متد ها و یا سازنده کلاس اونا رو مقدار دهی کنیم به همبن دلیل به جای public بنده از private استفاده کردم

Mr.Pooya
16-07-2014, 15:11
سلام

با تشکر از دوست خوبمون بابت آموزش شون.

البته نکته ای که جا داره اینجا بگم اینه که از یک کلاس چند تا ( بقول زبان برنامه نوسی ) Instance ساختن مهم نیست البته خب خیلی کارایی می تونه داشته باشه اما Design Pattern هایی رو داریم که فقط از هر کلاس یک Instance ساخت مثل Singleton البته این که فقط یک Instance بسازیم مثلا بیشتر بدرد Database می خوره که فقط یکبار وصل بشه.

موفق باشید

Web Design
16-07-2014, 15:26
سلام

با تشکر از دوست خوبمون بابت آموزش شون.

البته نکته ای که جا داره اینجا بگم اینه که از یک کلاس چند تا ( بقول زبان برنامه نوسی ) Instance ساختن مهم نیست البته خب خیلی کارایی می تونه داشته باشه اما Design Pattern هایی رو داریم که فقط از هر کلاس یک Instance ساخت مثل Singleton البته این که فقط یک Instance بسازیم مثلا بیشتر بدرد Database می خوره که فقط یکبار وصل بشه.

موفق باشید
مثالی که من آوردم تنها برای درک این بود که میشه از یک کلاس چند شی مختلف به صورت جدا ساخت .
اما ممنون

Mr.Pooya
16-07-2014, 15:30
مثالی که من آوردم تنها برای درک این بود که میشه از یک کلاس چند شی مختلف به صورت جدا ساخت .
اما ممنون

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

اما فقط برای کامل تر شدن موضوع عرض کردم. البته Singleton فعلا نیازی نیست که کاربرانی که تازه OOP رو شروع می کنند روش وقت بزارند.

roya.rashidi
17-07-2014, 23:22
اره دوستان خواهشا خیلی ساده بگید تا همه بفمیم.
هر تمرینی که کردیم باید حتما اینجا بزاریم ؟؟؟

Web Design
17-07-2014, 23:53
اره دوستان خواهشا خیلی ساده بگید تا همه بفمیم.
هر تمرینی که کردیم باید حتما اینجا بزاریم ؟؟؟


نه فقط تمرین هارو حتما انجام بدید

از این ساده تر :( نمیشه دیگه به خدا من همرو معادل سازی هم می کنم :n16:

roya.rashidi
18-07-2014, 00:16
نه فقط تمرین هارو حتما انجام بدید

از این ساده تر :( نمیشه دیگه به خدا من همرو معادل سازی هم می کنم :n16:
درسته شما ساده میگین .
اخه اقا پوریا چندتا اصطلاح بکار بردن که هیچی نفهمیدم . البته مشکل از دانش کمه منه نه اقا پوریا . ازتونم ممنونم که این تایپیکو ایجاد کردید.
..
واسه نصبه پی اپ پی روی لینکوس باید اینجا بپرسم یا تایپیک کالی ؟

Rossin
18-07-2014, 00:20
خیلی خوبه این تاپیک
برام دوره شد چیزایی که بلد بومو یادم رفته بود! یادمه زمانی که برنامه نویسی با PHP داشتم خیلی علاقمند بودم بهش اما نمیدونم چی شد ولش کردم و یادم رفت.
امیدوارم این تاپیک رها نشه وسط راه و ادامه پیدا کنه.
ممنون از شما:n16:

Web Design
18-07-2014, 00:49
درسته شما ساده میگین .
اخه اقا پوریا چندتا اصطلاح بکار بردن که هیچی نفهمیدم . البته مشکل از دانش کمه منه نه اقا پوریا . ازتونم ممنونم که این تایپیکو ایجاد کردید.
..
واسه نصبه پی اپ پی روی لینکوس باید اینجا بپرسم یا تایپیک کالی ؟

نگران نباشید آقا پئریا استاد ماس بیشتر با من بودن :n11:

تاپیک جدید لطفا جواب بهتری هم می گیرید

Web Design
18-07-2014, 12:28
سلام دوستان
بخش جدید آموزش رو آماده کردم . یکم جالبه این بخش ، یکسری متد خاص داریم که یه سری کارای جالب برامون انجام می دهند :n13:

شروع کنیم .

برای راحتی OOP زبان PHP برای ما Magic Methods ها را تدارک دیده ، و یا متد هایی ویژه که زمانی اجرا می شود که در شی زمان اجرای آنها برسد .

استفاده از Constructors ها و Destructor ها

از اسم این دو متد معلوم می شود که یکی سازنده و دیگری پابان بخش و خرابکننده کار است . خیلی از زمان ها ما نیاز داریم تا ایتدا و انتهای کلاس یک عملیات انجام دهیم .

متد __Constructor() وقتی شی ایجاد می شود به صورت اتوماتیک اجرا می شود .
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


نکته : __CLASS__ یک Constant می باشید که نام کلاسی که متد در آن قرار دارد را به نمایش در می آورد . شما میتوانید Constant های بیشتری را در این لینک ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])تمرین کنید .

خب ما در ابتدا یک کلاس ایجاد کردیم و در همان ابتدا یک متغیر تعریف مردیم و بعد از آن یک Magic Method که نام کلاس رو در همان ابتدای ساخت شی به صورت اتوماتیک و بدون اجازه ما :n13: چاپ می کته .

نتیجه بابد چیزی شبیه به زیر باشد .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای اجرای یک متد در آخر یک کلاس از Magic Method ای به نام __destruct() استفاده می کنیم . خیلی متد کارآمدی برای پاکسازی کلاس شما می باشد مثلا برای از بین بردن کانکشن ها دیتابیس و یا استفاده یک کلاس در چند شی .

در کد زیر ما یک پیغام هنگام تمام شدن کلاس در شی خود چاپ می کنیم .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

و این هم از خروجی کد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


هنگامی که انتهای کد می رسد PHP به طور خودکار تمام منابع آزاد می کند.

برای تخریب یک شی که هنوز به اتمام نرسیده می توانید از Unset() استفاده کنیم . با این کار می توان شی ای که هنوز تمام نشده را در همان وسط کار به Unset() و اجرای __destruct برسانیم .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

خروجی کد بالا رو دقیق بررسی کنید .

برای تمرین یک کلاس به نام کلاس درس برای بچه های P30world اجرا کنید و در شروع کلاس کتاب های خود را باز کنید و درآخر کلاس کتاب های خود را ببندید .

امیدوارم براتون مفید باشه آموزش ها .
موفق باشید


پدرام

Web Design
19-07-2014, 00:23
دوستان یک سری ویدئو براتون آپلود کردم برای دوره آموخته هاتون و تمرین بیشتر حتما این هارو ببینید .
از سری Lynda Byond The Basic هستش
حجم : 24 مگابایت
دانلود :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

roya.rashidi
19-07-2014, 03:30
سلام اقا پدارم . چون سطحم پایین مجبور شدم خودم از صقر یخونم. میشه وقتی مشکل داشتم اینجا بگم . اگه اره بی زحمت علت مشکل زیرو میگید؟ ممنون.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ارورشم اینه

Notice: Undefined variable: _post in C:\xampp\htdocs\prev2~.php on line 2

Fatal error: Function name must be a string in C:\xampp\htdocs\prev2~.php on line 2

Web Design
19-07-2014, 09:49
سلام اقا پدارم . چون سطحم پایین مجبور شدم خودم از صقر یخونم. میشه وقتی مشکل داشتم اینجا بگم . اگه اره بی زحمت علت مشکل زیرو میگید؟ ممنون.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ارورشم اینه

Notice: Undefined variable: _post in C:\xampp\htdocs\prev2~.php on line 2

Fatal error: Function name must be a string in C:\xampp\htdocs\prev2~.php on line 2

رویا خانم تاپیک جدا بسازید و کد رو کامل بزارید :n01:

behnamy01
20-07-2014, 16:14
میشه لطف کنید بگید شی گرایی چه موقعی به کار میاد؟ یعنی کاربردهاش کجاس مثلا؟

Web Design
20-07-2014, 16:57
میشه لطف کنید بگید شی گرایی چه موقعی به کار میاد؟ یعنی کاربردهاش کجاس مثلا؟

ببینید ما در پروژه های بزرگ کد های تکراری و مشابه زیادی داریم برای مثال شاید 10 ها بار از ثبت اطاعات در دیتابیس استفاده کنیم و یا چندین بار مقدار یک آرایه را تغییر دهیم و .....

شعار شی گرایی DRY یعنی تکرار نکن هست و از تکرار کردن کد ها با شمایل و کاربرد برابر جلوگیری می کند .

پست اول رو بخونید :n12:

Web Design
21-07-2014, 11:20
سلا م
بابت تاخیر یک روزه شرمنده سر پروژه تیم خودمون بودم :n20: حالا تو بخش نمونه کار میزارم .

خوب امروز بریم سراغ ارث بری یا Inheritance که خیلی کاربرد داره و با یک مثال ساده شروع می کنیم .

در نظر بگیرید که هر وسیله نقلیه نه موتورسیکلت ها :n15: دارای 4 چرخ و دارای یک اتاق و موتور می باشند ولی شکل های مختلقی دارند اما همه 4 چرخ یک اتاق و موتور را دارند و ما الگویی برابر با مقادیر مختلف داریم . پس برای ساخت یک RD از روی پیکان مهندسین ایران موفق شدند که کاملا از 2 کلاس مختلف پژو 405 و پیکان عزیز استفاده کنند و هیچ متغیری رو جابجا نکنند .


خوب برای شروع Inheritance ما در ابتدا یک کلاس و یک متد طبق روال همیشگی ایجاد می کنیم .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در مثال بالا ما یک کلاس به نام car ساختیم و مقادیر wheels و doors را در داخل آن قرار دادیم و در ادامه یک متد ساختیم که تعداد چرخ و در های ماشین ما را با هم جمع می کند .

حالا نوبت به ساخت کلاس وارث ماست .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

نکته : برای ساخت ارث بری ایتدا کلاس را ساخته و نام آنرا انتخاب می کنیم و بعد از نام کلاس کلمه کلیدی extends را آورده و نام کلاس والد که قرار است از آن مقادیر را ارث ببریم وارد می کنیم .

در کد بالا کلاس compactCar تمام مقادیر خود را از car به ارث برده اما این بار ماشین ما 2 در دارد .

نکته : می توانیم مقادیر را در ارث بری تغییر دهیم و مقادیر جدیدی قرار دهیم .

در کد زیر ما 2 شی ساختیم و مقادیر خود را چاپ کردیم .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نتیجه بالا باید چیزی شبیه به زیر باشد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


خوب این هم از ارث بری ما در آموزش بعدی به خصوصی سازی متد ها و متغیر ها می پردازیم .

پدرام مرندی

atiishpare
11-09-2014, 10:53
سلام .ممنونم از شما. خیلی مفیده مطالبتون:n16:
جواب تمرین دوم منو میشه لطفا ببینید درسته یا نه؟ البته جواب میده ها ولی نمیدونم اصولیه یا نه.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Web Design
11-09-2014, 13:42
کارتون خیلی خوب بود آفرین اما بهتره به جای اینکه از echo داخل خود method های استفاده کنیم یک مقدار رو Return کنیم و وقتی متد رو اجرا میکنیم اون رو Echo کنیم .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

atiishpare
13-09-2014, 09:22
کارتون خیلی خوب بود آفرین اما بهتره به جای اینکه از echo داخل خود method های استفاده کنیم یک مقدار رو Return کنیم و وقتی متد رو اجرا میکنیم اون رو Echo کنیم .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

بله .سپاسگزارم از راهنماییتون:n16:

atiishpare
13-09-2014, 10:15
سلام آقاپدرام. اینم تمرین بعدی:n26:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

behnamy01
14-09-2014, 15:47
ببینید ما در پروژه های بزرگ کد های تکراری و مشابه زیادی داریم برای مثال شاید 10 ها بار از ثبت اطاعات در دیتابیس استفاده کنیم و یا چندین بار مقدار یک آرایه را تغییر دهیم و .....

شعار شی گرایی DRY یعنی تکرار نکن هست و از تکرار کردن کد ها با شمایل و کاربرد برابر جلوگیری می کند .

پست اول رو بخونید :n12:

ببینید، این رو متوجه هستم ولی میخوام کاربرد در عمل شی گرایی رو یاد بگیرم، البته فکر میکنم بهش میگن الگو برنامه نویسی :n13: که یعنی چه جوری یک اسکریپت رو ساختاردهی بکنم مثلا. الان نگاه کنید من شی گرایی رو یاد گرفتم ولی نمیدونم چرا یاد گرفتم! یعنی کامل بلدم یک کلاسی رو مثلا توی فولدر includes بسازم و بعد توی صفحات اسکریپت مثل index.php هر جا گه لازم بود با autoload کلاس فراخوانی بشه، ولی دقیق نمیدونم باید کی از کلاس استفاده کنم و چی رو بذارم توی کلاس ها و چرا، و چی رو بذارم توی خود صفحات اسکریپت، نه توی کلاس !؟ اگر بخوام مثلا یک نمونه از منظورم رو بگم مثلا تا اونجا که دیدم یک کلاس دیتابیس میسازن و اونجا توی constructer اون کلاس، به دیتابیس کانکت میشه با هر بار فراخوانی کلاس، و توی متود های مختلف اون کلاس، انواع کارهایی که با دیتابیس انجام میدیم رو تعریف میکنیم که توی صفحات اسکریپتمون فقط اون اسم کلاس و این متود هاش رو صدا بزنیم و دیگه توی هر صفحه ای از اسکریپت کد های کار با دیتابیس رو از اول ننویسم. حالا من میخوام بدونم دیگه مثلا کی استفاده میکنیم از کلاس، اصلا کی باید خودمون بفهیم که باید این رو کلاس کنیم، کلا ساختار اسکریپت ها رو چجوری اول فکرش رو توی ذهنشون انجام میدن که یک دفعه وسط کار نگن آخ کاشکی این رو کلاس میکردم و اینجور چیزا...

tabriz-info
14-09-2014, 17:39
ببینید، این رو متوجه هستم ولی میخوام کاربرد در عمل شی گرایی رو یاد بگیرم، البته فکر میکنم بهش میگن الگو برنامه نویسی :n13: که یعنی چه جوری یک اسکریپت رو ساختاردهی بکنم مثلا. الان نگاه کنید من شی گرایی رو یاد گرفتم ولی نمیدونم چرا یاد گرفتم! یعنی کامل بلدم یک کلاسی رو مثلا توی فولدر includes بسازم و بعد توی صفحات اسکریپت مثل index.php هر جا گه لازم بود با autoload کلاس فراخوانی بشه، ولی دقیق نمیدونم باید کی از کلاس استفاده کنم و چی رو بذارم توی کلاس ها و چرا، و چی رو بذارم توی خود صفحات اسکریپت، نه توی کلاس !؟ اگر بخوام مثلا یک نمونه از منظورم رو بگم مثلا تا اونجا که دیدم یک کلاس دیتابیس میسازن و اونجا توی constructer اون کلاس، به دیتابیس کانکت میشه با هر بار فراخوانی کلاس، و توی متود های مختلف اون کلاس، انواع کارهایی که با دیتابیس انجام میدیم رو تعریف میکنیم که توی صفحات اسکریپتمون فقط اون اسم کلاس و این متود هاش رو صدا بزنیم و دیگه توی هر صفحه ای از اسکریپت کد های کار با دیتابیس رو از اول ننویسم. حالا من میخوام بدونم دیگه مثلا کی استفاده میکنیم از کلاس، اصلا کی باید خودمون بفهیم که باید این رو کلاس کنیم، کلا ساختار اسکریپت ها رو چجوری اول فکرش رو توی ذهنشون انجام میدن که یک دفعه وسط کار نگن آخ کاشکی این رو کلاس میکردم و اینجور چیزا...

بستگی به کارتون داره دیگه

اگر یک پروژه عملی انجام بدید کارایی این موارد رو بهتر درک میکنید

مثلا اگر قراره شما یک صفحه php داشته باشید دیگه نیازی به کلاس نیست

ولی وقتی قراره پروژه شما یه صورت مدیریت محتوا باشه مدیر و کاربر داشته باشه در صفحات مختلف کارای مختلف قرار انجام بگیره مسلما لازمه که یک سری کلاس ها رو تعریف کنید

یه مثال ساده در مورد همین دیتابیس ها که خودتون گفتید بگم که البته برا خودمم پیش اومده بود

فرضا من اولش برای دیتابیس ها اصلا کلاس جدا تعریف نکردم

اون موقع از mysql شروع کرده بودم
بعدا مجبور شدم mysqli و بعد pdo تغییر بدم

تازه بعد از اینا مثلا میخوای از یک سیستم کش استفاده کنی دوباره باید همه ای کوئری ها رو پیدا کنی و دستی تغییر بدی

اما الان دیگه هر کاری بکنم حتما یک فایل کلاس دم دستم باز هست و حتی اگر کدی قراره کلا 1 بار تو سایت استفاده بشه اونو هم تو کلاس میارم

اینطوری وقتی یک روش خوب به فکرم میاد و ممکنه برای توابع دیگه هم کارا باشه همونجا راحت برای تمام توابع اعمال میکنم

hamedarian2009
14-09-2014, 18:54
ببینید، این رو متوجه هستم ولی میخوام کاربرد در عمل شی گرایی رو یاد بگیرم، البته فکر میکنم بهش میگن الگو برنامه نویسی :n13: که یعنی چه جوری یک اسکریپت رو ساختاردهی بکنم مثلا. الان نگاه کنید من شی گرایی رو یاد گرفتم ولی نمیدونم چرا یاد گرفتم! یعنی کامل بلدم یک کلاسی رو مثلا توی فولدر includes بسازم و بعد توی صفحات اسکریپت مثل index.php هر جا گه لازم بود با autoload کلاس فراخوانی بشه، ولی دقیق نمیدونم باید کی از کلاس استفاده کنم و چی رو بذارم توی کلاس ها و چرا، و چی رو بذارم توی خود صفحات اسکریپت، نه توی کلاس !؟ اگر بخوام مثلا یک نمونه از منظورم رو بگم مثلا تا اونجا که دیدم یک کلاس دیتابیس میسازن و اونجا توی constructer اون کلاس، به دیتابیس کانکت میشه با هر بار فراخوانی کلاس، و توی متود های مختلف اون کلاس، انواع کارهایی که با دیتابیس انجام میدیم رو تعریف میکنیم که توی صفحات اسکریپتمون فقط اون اسم کلاس و این متود هاش رو صدا بزنیم و دیگه توی هر صفحه ای از اسکریپت کد های کار با دیتابیس رو از اول ننویسم. حالا من میخوام بدونم دیگه مثلا کی استفاده میکنیم از کلاس، اصلا کی باید خودمون بفهیم که باید این رو کلاس کنیم، کلا ساختار اسکریپت ها رو چجوری اول فکرش رو توی ذهنشون انجام میدن که یک دفعه وسط کار نگن آخ کاشکی این رو کلاس میکردم و اینجور چیزا...

سلام من نمیدونم شما در چه سطح تحصیلات هستین و اصلا رشته تون کامپیوتره یا نه
اما اگه در مورد مهندسی نرم افزار و UML کمی مطالعه کنید متوجه میشین چجوری باید کلاس ایجاد کنیم
میتونم یه راهنمایی بکنم که هر شی مستقل توی یک برنامه که دارای یکسری رفتارها و خصوصیات مختص به خودش هست رو میتونید به کلاس تبدیل کنید مثلا توی سیستم دانشگاه کلاس ها میشن دانشجو ، استاد، درس و ...

Web Design
15-09-2014, 09:46
خوب منم به یاری دوستان بیام یه توضیحات تکمیلی بدم

ببینید ما در 99% پروژه هامون اتصال به دیتابیس داریم و همیشه خدا ما isnet , Select داریم به نظر شما همیشه لازمه یه کد تکراری بنویسیم ؟ برای همه کوئری ها یه درخواست جدید بنویسیم ؟

این میشه استفاده از شی گرایی و برنامه نویسی DRY یعنی ما دیگه خودمونو تکرار نمی کنیم ... این میشه استفاده از شی گرایی اما دوستمون حامد یکم اشتباه کرد مهندسی UML ربطی به ساختار شی گرایی نداری و بیشتر مربوط به مدل های برنامه نویسی هستش مثل MVC .



پدرام

hamedarian2009
15-09-2014, 17:35
اما دوستمون حامد یکم اشتباه کرد مهندسی UML ربطی به ساختار شی گرایی نداری و بیشتر مربوط به مدل های برنامه نویسی هستش مثل MVC .

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

الا من میخوام بدونم دیگه مثلا کی استفاده میکنیم از کلاس، اصلا کی باید خودمون بفهیم که باید این رو کلاس کنیم،
اگه UML آشنا باشن چون میای entity ها رو از یه سیستم در میاری و تجزیه و تحلیل میکنی هم کار برای طراحی دیتابیست آسون میشه و هم با نمودار کلاس میتونی همون کلاس هارو در برنامت پیاده سازی کنی
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]