سلام خدمت اساتید عزیز
دوستان یه سوال در رابطه با پروژه های شی گرایی داشتم :
میخواستم بدونم هر کدوم از دایرکتوری های زیر که نام میبرم دقیقا چی هستند و چه مواردی باید داخلشون قرار بگیره :
۱ - دایرکتوری Services ( دقیقا شامل چه مواردی میشه ؟ چه چیزی رو میتونیم به عنوان یک سرویس بهش نگاه کنیم ؟ )
۲ - دایرکتوری Helpers ( تفاوتش با Service چیه ؟ چه مواردی باید داخل اینجا قرار بگیره ؟ چه چیزی رو میتونیم بهش به عنوان یک helper نگاه کنیم ؟ )
۳ - دایرکتوری Utility ( تفاوت این با دو دایرکتوری بالایی چیه ؟ چه مواردی باید داخل اینجا قرار بگیره ؟ چه چیزی رو میشه به عنوان یک Utility بهش نگاه کرد ؟ )
من چند تا پروژه که ساختارشون رو دیدم تو یکیشون مثلا کلاس مربوط به لود کردن View ها داخل سرویس نوشته شده بود ولی اون یکی یک کلاسی به این شکل با کمی تفاوت رو به عنوان یک Utility بهش نگاه کرده بود کدوم یکی از اینا درسته ؟
با تشکر
ببینید هیچ استاندارد کلی نیست که بگه شما باید این فایلها رو حتما در جای خاصی قرار بدید .. این مواردی که بهتون گفتم شامل یه سری قراردادهای بین برنامهنویس هاست که بعد از کار روی پروژههای مختلف به این نتیجه رسیدند که چنین ساختاری معقولتره اما. ... چنانچه شما ازش پیروی هم نکنید کار اشتباهی انجام ندادید
مثلا شما در پروژهتون یه XML Parser دارید یا حتی یه سیستم Captcha .. در چنین حالتی خوب اینها بهتره داخل Utilities قرار بگیرند
برای Service ها مثال بهتری از Service Provider ها به ذهنم نمیرسه.. مستندات لاراول رو در مورد Service Provider چک کنید:
https://laravel.com/docs/6.0/providers
باز هم میگم هیچ اجباری در کار نیست که شما از این روشها پیروی کنید اما بهتره این کارو بکنید.. مقالات زیر رو بخونید، کلیت موضوع رو بهتر درک میکنید
https://blog.nikolaposa.in.rs/2017/01/16/on-structuring-php-projects/
https://www.sitepoint.com/pds-skeleton-by-example-a-standard-for-file-and-folder-structure/
موفق باشید
هیچ درست و غلطی وجود نداره.. نه که بیقاعده باشه اما نهایتا شما از یه کانونشن پیروی میکنید.
Services میتونه شامل فایلها و کلاسهایی باشه که به عنوان یه سرویس خودشون رو در اپلیکیشن رجیستر میکنند (مثل ServiceProvider ها در لاراول)
Helpers هم که مشخصه .. مواقعی در اپلیکیشن باید از یه تابع گلوبال استفاده کرد که همه جا قابل دسترس باشه. به این گونه توابع Helper میگن. (مثلا ()app در لاراول)
Utitlity خیلی کلیه ..خیلی موارد هستند که میشه به عنوان یه Utitlity بهشون نگاه کرد.
اگر دنبال استانداردی در این زمینه میگردید.. پیشنهاد میکنم ساختار دایرکتوری ها در فریمورک لاراول رو بررسی کنید
@ali.bayat
خب حالا Service و Utility بزاریم کنار Helper فقط باید شامل توابع باشه ؟؟
Helper ها نمیتونن شامل کلاس های کلی باشند ؟ ینی یک کلاسی داشته باشیم که توی کل پروژمون ازشون استفاده میکنیم ؟
خیر کلاسها بر اساس نوعشون در فولدرهای مختلفی میتونند باشند.. اما نه در Helper ..
برای مثال در لاراول یه فولدر app داریم که داخلش فولدرهای زیر موجودند
در تمام این فولدرها کلاس های مختلف هستند که بر اساس کارآییشون از هم جدا شدند اما این ساختار میتونه متفاوت هم باشه
توابعی که متعلق به کلاس خاصی نیستند و گلوبال هستند و در همه جای اپلیکیشن میشه بهشون دسترسی داشت رو هلپر میگند.
@ali.bayat
لطف میکنید یکم در مورد service و utility ها هم بگید ؟
"Services میتونه شامل فایلها و کلاسهایی باشه که به عنوان یه سرویس خودشون رو در اپلیکیشن رجیستر میکنند (مثل ServiceProvider ها در لاراول)" خب چه چیزی رو به عنوان سرویس بهش نگاه کنیم ؟ اینکه میگید به عنوان یک سرویس خودشون رو در اپلیکیشن رجیستر میکنند دقیقا یعنی چی ؟
"Utitlity خیلی کلیه ..خیلی موارد هستند که میشه به عنوان یه Utitlity بهشون نگاه کرد." میشه چند تا مورد از utility ها نام ببرید ؟ از کجا تشخیص بدیم کلاسی که داریم میشه بهش گفت Utility ها نه !
ببخشید خیلی با جزییات میخوام بپرسم آخه هیچوقت نفهمیده بودم اینا دقیقا چی هستند و گاها به جای همدیگه استفاده میکردم ولی الان میخوام کاملا تفاوتشونو بدونم
ببینید هیچ استاندارد کلی نیست که بگه شما باید این فایلها رو حتما در جای خاصی قرار بدید .. این مواردی که بهتون گفتم شامل یه سری قراردادهای بین برنامهنویس هاست که بعد از کار روی پروژههای مختلف به این نتیجه رسیدند که چنین ساختاری معقولتره اما. ... چنانچه شما ازش پیروی هم نکنید کار اشتباهی انجام ندادید
مثلا شما در پروژهتون یه XML Parser دارید یا حتی یه سیستم Captcha .. در چنین حالتی خوب اینها بهتره داخل Utilities قرار بگیرند
برای Service ها مثال بهتری از Service Provider ها به ذهنم نمیرسه.. مستندات لاراول رو در مورد Service Provider چک کنید:
https://laravel.com/docs/6.0/providers
باز هم میگم هیچ اجباری در کار نیست که شما از این روشها پیروی کنید اما بهتره این کارو بکنید.. مقالات زیر رو بخونید، کلیت موضوع رو بهتر درک میکنید
https://blog.nikolaposa.in.rs/2017/01/16/on-structuring-php-projects/
https://www.sitepoint.com/pds-skeleton-by-example-a-standard-for-file-and-folder-structure/
موفق باشید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟