انتخاب یک IDE مناسب php و سازگاری آن با symfony (قسمت اول)
اگر به پستهای قبلی که راجع به توسعه وب توسط php و البته فریمورک بسیار قدرتمند symfony بود علاقهای داشته باشید و آنها رو دنبال کنید، صد در صد برای ویرایش کدها از یک ادیتور همچون gedit، kedit و یا شاید notepad استفاده کرده باشید. و در اینصورت متوجه شدید که دیگر نمیتوان کار با سیمفونی رو روی این قبیل ویرایشگرها ادامه داد.
اینجاست که واجب میشود تا برای ادامه کار از یک IDE خوب استفاده کنید. البته انتخاب IDE مناسب کار راحتی نیست و البته در عین حال راحته!!! یعنی دامنه انتخاب زیاده و شما باید برای انتخاب بهترین IDE، این دامنه رو کوچکتر کنید.
برای کوچک کردن این دامنه باید توقع خود را از IDE بالا ببرید. در ادامه مطلب به بررسی این توقعات میپردازیم.

رنگبندی کدها – Syntax highlighting
رنگبندی درست کدها خوانایی آن را تا حد بسیاری بالا میبرد. البته این ویژگی روی تمامی IDEها و حتی editorها وجود داره. (جز Notepad ویندوز که بدرد یادداشت نوشتن هم نمیخوره!!!)
اتمام خودکار کد – Code completion
این ویژگی به سرعت کدنویسی خیلی کمک میکنه، همونطور که خیلیها میدونند مثلاْ برای نوشتن قطعه کد مربوط به مقصد یک لینک تنها حرف h را تایپ میکنید و IDE مقادیر href=”" و hreflang=”" رو به شما پیشنهاد میکنه.
البته این ویژگی روی کدهای php هم به همین صورتی که در تصویر زیر مشاهد میکنید اعمال میشود.

پس تا اینجا تمام ادیتورها از دامنه بزرگی که مورد بحث بود حذف شدن. (قابل توجه افرادی که گیر دادن به gedit و Kedit و emEditor و Notepad++ و همین قسم ویرایشگرها)
ناوبری – Navigation
خیلی اوقات پیش میآید که شما داخل کدها گم میشوید (مخصوصاْ به هنگام توسعه برنامههای نوشته شده در گذشته و یا کارهای گروهی) و نیاز دارید تا برنامه شما رو به محل مورد نظر هدایت کنه. برای اینکار میتوانید از امکان search یا Find که توی هر ویرایشگری پیدا میشه استفاده کنید. اما اگر پروژه کمی بزرگ باشد، دچار مشکل میشوید و آن زمان است که به امکانات بیشتری برای جستجو و ناوبری احتیاج پیدا میکنید. امکاناتی از قبیل Goto که میتونه شما رو به سطر، متد و یا کلاس خاصی هدایت کند (بر حسب کلمه کلیدی و یا تعریف از قبل). و یا پنلی که فایل شما را بر حسب کلاسها و توابع موجود در آن بخش بندی و لیست میکند و …
راستش این قسمت خیلی قابل توضیح دادن نیست و به قول معروف : حلوای تن تنانی، تا نخوری ندانی!!!
نمایش خطاها و اخطارها
اشتباهات نحوی syntax و یا حتی غلطهای املایی برنامهنویسی (منظورم از این واژه اختراعی اشتباهاتی همچون جا انداختن آکولاد و امثال این است) مشکلی است که به وفور پیش میآید. پس یک IDE خوب باید آنها را تشخیص داده و به شما اعلام کند و گیر خود را تا زمان تصحیح پابرجا نگه دارد.
دوباره سازی و سازندگی کد – Refactoring and code generation
این ویژگی، از آن ویژگیهایی است که به هیچ شکلی نمیشه از آن گذشت! بعضی اوقات پیش میآید که مجبور به دوباره نویسی و یا تغییر مکان کلاسها، توابع و یا شاید فایلها هستیم و اینکار در پروژههای کوچک هم کار راحتی به حساب نمیآید. چه برسد به …
سه امکان refactoring که بیشتر به کار میآید رو در زیر لیست کردم:
- Move که تمام includeها و requireها را به هنگام انتقال فایلی از جایی به جای دیگر بروز میکند تا مشکلی در روند اجرای پروژه پیش نیاد.
- Rename که این اطمینان را میدهد که از تغییر نام هر چیزی هیچ مشکلی برای پروژه پیش نخواهد آمد.
- Safe delete که شما را مطمئن میکند که حذف یک فایل پروژه آسیبی به سایر قسمتها وارد نمیکند.
علاوه بر این برخی IDEها امکان ایجاد کدهای مربوط به ساخت توابع سازنده، گیرندهها و … را نیز فراهم میکنند.
اشکالزدایی – Debugging
معمولاْ کدنویسان php برای اشکالزدایی کدها از دستور echo و die استفاده میکنند. اما این شیوه هرگز جای اشکالزدایی خطبهخط را برای برنامهنویس نمیتواند پر کند. مخصوصاْ در برنامههای بزرگتر. یک IDE خوب این امکان را برای کدنویس مهیا میکند.
سیستم کنترل نسخه – Versioning system
این سیستم میتواند در هر دو شیوه توسعه فردی و گروهی مفید باشد. این ویژگی امکان مقایسه کد فعلی را با نسخههای پیشین بصورت تصویری ایجاد میکند. همچنین امکان کپی کردن تغییرات به سایر ورژنها و برگشتن به وضعیت قبلی و ادغام تغییرات ایجاد شده توسط سایر اعضاء تیم را هم برای ما مهیا میکند.

هنگامی که شما تغییرات را چک کرده و آنها را اعمال نمودید، یکی کردن IDE با سیستمهای کنترل نسخهای همچون CVS، SVN و … بسیار بهتر از اجرای یک برنامه جدا برای کار با آنها میباشد.
خصوصیات سمت مشتری – Client-side features
کمتر پیش میآید تا کدهای php بصورت جدا نوشته شوند و معمولاْ به همراه کدهای HTML و همچنین CSS و java script میآیند. در نتیجه امکان Code complation برای این قسم کدها در فایلهای php میتواند بسیار سودمند و پرکاربرد باشد.
کدام IDE تمام این ویژگیها را شامل میشود؟
همانطور که میدانید در دنیای متنباز برنامههای بسیار پر قدرت و مفیدی یافت می شوند. در زمینه IDEها هم میتوان به جرات گفت که بهترین IDEها OpenSource هستند.
با اندکی دیکتاتوری و بدون هیچ توضیحی ۲ دسته را اینجا نام میبریم:
IDEهای مبتنی بر Eclipse
فکر میکنم پلتفرم Eclipse معرف حضور بیشتر دوستان باشد، افزونههای بسیاری نیز برای کار با php روی Eclipse وجود دارند که برخی از آنها عبارتند از: PDT، Zend Studio، Aptana PHP و همچنین Aptana Studio Pro .
نکته: Aptana را میتوان بصورت مجزا از Eclipse هم نصب کرد
NetBeans
این IDE تقریباْ نو ظهور هم، بسیار مناسب میباشد و البته برای کار روی Eclipse ساخته نشده است. بیشتر ویژگیهای سایر IDEها را دارد و خوشبختانه OpenSource هم میباشد. با توجه به توسعه سریع، روان و جالب آن آینده بسیار روشنی را پیش روی دارد.
نتیجه اخلاقی
آقای الکساندر ماکارو (Alexander Makarov) در مجله Smashing، بررسی جالبی بین این IDEها انجام دادند که به شما پیشنهاد میکنم حتماْ آن را از این آدرس مطالعه کنید.
بنده شخصاْ بعد از مشاهده این مقایسه و تست کردن دو افزونه Aptana و PDT به این نتیجه رسیدم که با همون PDT کار کنم. چون اگر حقیقت را بخواهید همین PDT هم کلی از سرم زیاده و خیلی امکانات دارد که هنوز نشناختهام، اما فکر میکنم Aptana امکانات جانبی بیشتری نسبت به PDT دارد. امکانات و ویژگیهای Zend Studio هم که غیر قابل انکار است، اما من پول ندارم. NetBeans هم مطمئناْ چیز خوبی است چون توی یکی از توییتهای مرتضی الوانی خوندم که از اون استفاده میکنه.
در هر صورت انتخاب من، فعلاْ Eclipse و پلاگین PDT است و با آن راحتم. بهترین شیوه برای نصب آن هم استفاده از بسته PDT All In One است. با حجم تقریبی 140mb که بعد از Extract کردن آماده استفاده است. بروی کلیه پلتفرمهای لینوکس ۳۲ و ۶۴، مکینتاش و ویندوز هم قابل اجرا میباشد. (از این آدرس میتوانید نسخه مناسب با سیستم خود را دریافت کنید)
و اما ادامه ماجرا
تا کنون به نتیجه نسبتاْ خوبی برای قسمت اول عنوان این پست رسیدیم، یعنی IDE خود را برای کار با php انتخاب کردیم. اما برای کار با سیمفونی باید تا حدودی IDE را با خواستههای خود سازگار کنیم. اینکار را به بخشهای مختلفی همچون symfony code completion در PDT، ایجاد رنگبندی برای فایلهای YAML و استفاده از پلاگین Subclipse برای کار با SVN تقسیم میکنیم که در قسمت دوم این مقاله به شرح آن خواهیم پرداخت.
بیشتر راجع به مقدمات Eclipse در الوانوب
پن : این نیمچه مقاله رو با الهام و ادقام این نوشته از مجله Smashing و مطلبی در ویکی symfony نوشتم.



فرید در تاریخ 13 ژوئن , 2009 @ 12:55 ب.ظ
دستت درد نکنه مهدی خان
خوندن این مقاله به زبان فارسی لطف دیگه ای داشت