PDA

View Full Version : سوال: پروژه ماژول نویسی



misaghcj
سه شنبه 17 اسفند 1389, 18:35 عصر
با سلام خدمت تمامی برنامه نویسان محترم.

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

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

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

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

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

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

با سپاس از همه عزیزان.

misaghcj
پنج شنبه 19 اسفند 1389, 11:58 صبح
سلامی مجدد.

دوستان هیچ کدام تجربه ای در این زمینه ندارید ؟؟ لطفا بفرمایید بنده کجا باید این سوال را مطرح کنم. فکر می کردم حداقل در این سایت به جواب خودم برسم. لطفا بنده را راهنمایی بفرمایید. به شدت نیازمندم.

MMSHFE
پنج شنبه 19 اسفند 1389, 12:07 عصر
با سلام، توي سايت phpnuke.org مستنداتش رو مطالعه كنيد. در مورد روش ماژول نويسي خوب توضيح داده. كدش رو هم بررسي كنيد. من خودم مدتي هست كه در اين زمينه شروع به كار كردم و خوشحال ميشم بتونيم با هم تبادل ايده كنيم.
موفق و مؤيد باشيد.

misaghcj
پنج شنبه 19 اسفند 1389, 19:46 عصر
دوست عزیز سلام. ممنون از اینکه پاسخ بنده را دادید.

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

با تشکر فراوان

misaghcj
جمعه 20 اسفند 1389, 14:18 عصر
دوست عزیز بالاخره مستندات را پیدا کردم و مطالعه نمودم اما مسئله که اینجا وجود دارد، اینست که نیوک بر پایه شی گرایی نوشته نشده است و بنده می خواهم پروژه ماژول نویسی را بر پایه شی گرایی شروع کنم. نظر شما چیست؟

amir001
جمعه 20 اسفند 1389, 23:59 عصر
کار جالبی هست.

الانه اکثر سیستم ها به صورت ماژولار هستند. من بیشتر با وردپرس کار کرده ام. دقیقا نمیدونم وردپرس چطوری کار میکنه اما با تجربیاتی که پیدا کردم یکسری چیزهایی به ذهنم میرسه که با اجازه اینجا ذکر میکنم تا شما دوستان نظریاتتون را بفرمایید.

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

حالا ماژولها به چه صورت عمل میکنند؟
هسته باید یک امکان برای ایجاد ماژولها را داشته باشه.
اول اینکه یکسری توابع برای دسترسی به بانک اطلاعاتی ، قالب ها و منابع را فراهم کنه (یک چیزی مثل API ها در سیستم عامل)
و همچنین امکاناتی برای اضافه کردن توابع خاص به توابع و کتابخانه های موجود.

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

همچنین اگر توابعی برای اضافه کردن مقادیر به بانک داده باشیم ، یک ماژول میتونه مقادیر مورد نظر خودش را در قسمت اجزای منو قرار بده تا متد ما آنها را همراه دیگر اجزاء به خروجی بده.

نمیدونم این ایده ی من چطور باشه. لطفا نظرتون را در این مورد بگید و اگر روش های بهتری هم وجود داشته باشه روشون کار کنیم.

misaghcj
شنبه 21 اسفند 1389, 14:21 عصر
با تشکر فراوان از دوست عزیز جناب امیر...

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

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

اما در یکی از انجمن های خارجی این موضوع را با چند کاربر در میان گذاشتم و آنها به ینده مطالعه روی سیستم مدیریتی Drupal را پیشنهاد دادند. بنده تا کنون این سیستم را بررسی نکرده ام و قصد دارم این کار را انجام بدهم تا ببینم چه اطلاعاتی می توان از آن به دست آورد.

سوال دیگری که برای من به وجود آمده است اینست که آیا فیم ورک ها مانند Zend یا CakePHP در این گونه پروژه ها مفید خواهند بود یا خیر؟

mtchabok
شنبه 21 اسفند 1389, 19:52 عصر
از نظر من فریم ورکها رو میتونید به عنوان هسته مرکزی پروژتون در نظر بگیرید چونکه اکثر فریم ورکها دارای کلاسها و توابع نسبتا کاملی هستن که با در نظر گرفتن توانایی اونها خیلی در وقت صرفه جویی میشه .
البته باید در مورد فریم ورکها کمی تحقیق کنید که ببینید با کدومشون خودتون راحتتر کار میکنید ...

UnnamE
شنبه 21 اسفند 1389, 22:13 عصر
سوال دیگری که برای من به وجود آمده است اینست که آیا فیم ورک ها مانند Zend یا CakePHP در این گونه پروژه ها مفید خواهند بود یا خیر؟

در تمام عمر دو رقمي خودم، خوش دس تر از ZF نديدم واسه كار با پروژه هاي ماژولار ( در زبان php )
cakephp كه خط بكش روش :قهقهه:
در مورد هسته و فلان و اينا تماما با ZF قابل پياده سازي هست.
چيزي كه نياز داريد Data Mapper واسه مديريت داده ها در هر سطحي هست

misaghcj
شنبه 21 اسفند 1389, 22:26 عصر
چيزي كه نياز داريد Data Mapper واسه مديريت داده ها در هر سطحي هست

بسیار ممنون از شما.

میشه در این مورد توضیحاتی را مرقوم بفرمایید؟

سپاسگزارم.

UnnamE
شنبه 21 اسفند 1389, 22:34 عصر
من قبلا تو بخش زند سوال كرده بودم (http://barnamenevis.org/showthread.php?271885-DataMapper-%D8%AF%D8%B1-%D8%B2%D9%86%D8%AF-%D9%81%D8%B1%D8%A7%D9%85%D9%88%D8%B1%D9%83)
كه رفيقمون لينك martin flower داد كه بخوبي logic رو توضيح داده.

Army.Hidden
دوشنبه 23 اسفند 1389, 04:42 صبح
روی معماری MVC کار کنید.



الگوهای طراحی صرفا روشهایی برای نظم دادن و ساختار بخشیدن به Applicationها هستند. وجودشون به هیچ وجه الزامی نیست ولی مفید هستند مگر اینکه روش ما روش بهتری برای خودمون و Applicationامون باشه.
MVC یکی از الگوهای پرکاربرد PHP هست که تقریبا جوابگوی هر نوع Applicationای می تونه باشه و مخفف سه کلمه View ، Model و Controller هست.
مفهوم MVC براساس جداسازی بخشهای اساسی تعریف شده. به این صورت که کدها رو به سه بخش View، Model و Controller تقسیم کنیم تا کنترل و توسعه کدها به بهترین شکل ممکن انجام بشه....


http://hosseinsarlak.com/1389/12/15/mvc/

misaghcj
دوشنبه 23 اسفند 1389, 17:05 عصر
روی معماری MVC کار کنید.
http://hosseinsarlak.com/1389/12/15/mvc/

دوست عزیز بسیار ممنون.

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

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

سپاسگزارم.

Army.Hidden
پنج شنبه 18 فروردین 1390, 18:32 عصر
دوستان شرمنده خیلی کم وقت میکنم بیام توی این سایت
دوست عزیز توی ویلاگم بزودی یه آموزش کوچیک میزارم که توی پروژه ها بدرد بخوره.

موفق باشید

yakouza
پنج شنبه 18 فروردین 1390, 23:14 عصر
تو سایت iranphp مطالب خوبی تو این زمینه پیدا میشه...