PDA

View Full Version : (تجربه شخصی): اولین برنامه php که نوشتم



shaniaki
دوشنبه 31 فروردین 1383, 19:35 عصر
با عرض ادب:
تا یه ماه پیش کلی برنامه php راه انداخته بودم و حتی تو سورس بعضی هاش هم یه سیخ هایی زده بودم و چیز هایی اضافه و کم کرده بودم ولی هیچ وقت خودم هیچ پروژه ای رو از اول ساختارش رو نریخته بودم و شروع نکرده بودم ببینم چطوریه.
حدود یکی دو ماه پیش می خواستم روی یه سری html و فایل هایی که روی یه وب سروری آپلود می کردم رمز عبور بذارم. با کلی این ورو اون ور کردن دیدم بهتره این کار رو با htaccess های خود apache انجام بدم. نیاز به یه چیزی داشتم که خودش یه واسطی(interfaceی) داشته باشه که به سادگی با کاربر ها و گروه های apache کار کنه و htaccess های مختلفی رو بنویسه و ویرایش کنه به اضافه یه سری کارهای خورده ریز دیگه. برخلاف تصورم چیز کاملی که تمام نیازهای من رو برآورده بکنه پیدا نکردم. به این نتیجه رسیدم که بهتره خودم یه interface بر اساس وب بنویسیم که بتونم این کار رو باهاش انجام بدم و دیدم بهترین انتخاب php هست و فرصت خوبیه که با یه پروژه کوچیک script نویسی صفحات وب (از اول) رو تجربه کنم.

اول یه کم فکر کردم و به کشف و شهود پرداختم و کار رو از اول تا آخر برانداز کردم(شرمنده؛ اینجاشو نمی تونم توضیح بدم که چطوری انجام می دم) بعد PHPED رو باز کردم و شروع کردم به نوشتن.
اولین کاری که کردم یه صفحه php باز کردم و شروع کردم به نوشتن کلاس های مورد نیازم. برای هر چیزی که نیاز داشتم یه کلاس با چند تا متد و متغیر عضو نوشتم. خیلی syntax ساده ای داشت و این قسمت رو با اینکه خسته کننده بود بدون مشکل خاصی انجام دادم. خیلی ها رو می بینم که این قسمت رو انجام نمی دن یا نیمه کاره ول می کنن شروع می کنن به کارهای دیگه ولی برای من نتیجه این قسمتش بعدا خیلی به دردم خورد.
بعد یه فایل درست کردم که include هایی که لازم دارم رو توی اون انجام بدم و توی تمام صفحات فقط این صفحه رو include کنم. فایل کلاس هایی که نوشتم رو توش include کردم.
بعد یه فایل درست کردم به اسم farsi.php و گفتم تمام رشته هایی که قراره تو صفحاتم چاپ شن رو این تو با یه متغیر php اضافه می کنم(Internationalization و Localization با هم). شاید این برنامه مو فقط خودم استفاده می کردم ولی گفتم بذار یه جوری بنویسمش که اصولی باشه و تبدیل زبانش ساده باشه و همینطور هم شد. برنامه من الآن یه english.php هم داره که به راحتی می تونید کلش رو با تغییر یه متغیر انگلیسی کنید.طبعا این فایل هم توی اون فیل قبلی include کردم.
مرحله بعدی تکمیل ساختار برنامه انتخاب ساختار تولید خروجی بود. برای این کار گفتم logic برنامه از interfaceش باید کاملا جدا باشه. قبلا کدهای برنامه هایی مثل phpbb(همین فروم) رو دیده بودم و می دونستم که از template ها استفاده می کنند و در قلب اون فایل های tpl قرار داره. تصمیم گرفتم از همین سیستم استفاده کنم. smarty رو دانلود کرده بودم و help کوچیکی که همراهش بود رو قبلا خونده بودم. همین کار رو با استفاده از کلاس هایی آماده براتون انجام می ده. به این ترتیب که شما یه نمونه(instance) ازش تو صفحاتتون می سازید بعد یه سری متغیر رو که همون چیزهاییه که می خواهید تو صفحتون نشون داده بشه توش تنظیم( set ) می کنید. بعد یه فایل tpl رو که در واقع ساختار پایه html خروجی تون رو دربر داره و از قبل نوشتیدش با یکی از متد های کلاس smarty صدا می زنید و نتیجه این می شه که خروجیتون که حاوی اطلاعاتیه که قبلا با استفاده از متغیر ها تعیین کردید در ساختار html که توی فایل tplتون نوشتید نمایش داده می شه. اگر علاقه مند به استفاده از این شیوه شدید یه سر به http://smarty.php.net بزنید.
در این مرحله شروع به ساختن صفحاتم کردم در تمام مدت یه phpED و یه Dreamweaver تو صفحه ام باز بود که تو اولی منطق و ساختار برنامه مو می نوشتم و تو دومی فایل های tplم رو می نوشتم. نو شتن این قسمت خیلی ساده و سریع بود چون کارهای مهم رو قبلا در کلاس هایی که اول کار نوشته بودم انجام داده بودم و کار من تو این قسمت بیشتر جنبه طراحی صفحات وب داشت تا برنامه نویسی. البته بهتر بود این دو تا کار رو موازی انجام نمی دادم و اول قسمت برنامه نویسی شو انجام می دادم و بعد ساختن tpl ها رو؛ ولی اینطوری بیشتر حال می داد! :wink:
آخر سر هم یه سری کارهای بسته بندی انجام دادم. چیز هایی که ممکن بود در کاربرد های مختلف تغییر کنند(مثل نام فایل حاوی رشته های زبان یا نام فایل هایی که حاوی اطلاعات کاربران و ... بود) رو از توی صفحاتم جمع کردم و به جاشون یه متغیر گذاشتم و این متغیر ها رو تو یه config.php نوشتم که توی همون فایلی که اول کار گفتم include کردم. دو تا tpl هم به عنوان header و footer نوشتم و توی اول و آخر خروجی هام چاپشون کردم.
بعدشم همه شونو برای آزمایش توی یه linux گذاشتم و شروع کردم به امتحان کردنشون. یه چند تا سوتی داشتم که اصلاحشون کردم. آخر سر هم UPLOAD!
بله! کار می کرد. خیلی هم خوب. البته هنوز خیلی ناقص هست ولی نگاه که می کنم برای شروع نوشتن php از اول کار باحالی بود.

امیدوارم به دردتون بخوره.

یه عشق برنامه نویسی خفن

oxygenws
دوشنبه 31 فروردین 1383, 23:05 عصر
سلام،
خیلی عالی :)
دوست دارم بدونم قبل از این با چه زبونهای برنامه نویسی کار کرده بودی و اینکه PHP رو نسبت به اونها چطور دیدی؟؟ کلا به نظرت PHP چطوره؟؟!
مرسی،
موفق باشید، امید

shaniaki
دوشنبه 31 فروردین 1383, 23:36 عصر
با عرض ادب:
بنده از اسمبلی (به ترتیب Z80,8051,80196,) کار کردم تا GWBASIC و PASCAL و Borland C تا برسه به شاه ابزارهای برنامه نویسی DELPHI البته با J2SE هم چند تا اپلت آموزشی نوشته ام و می نویسم. با ++VC و BCB هم ور رفتم و با ASP(قدیمی) هم سرو کله زدم( البته با اسمبلی 80196 و GWBASIC پروژه انجام نداده ام). در حال حاضر هم در مواقعی که فرصت بشه GCC و NET. مطالعه می کنم.

نظر من شاید زیاد قابل استناد نباشه ولی اینطور که من تجربه کردم در مورد برنامه های وبی برای نوشتن پروژه های ساده و متوسط web based مثل همین فروم یا phpnuke یا فروشگاه های مجازی ویا بقیه چیز های مشابه که 90% چیزهایی که روزانه تو اینترنت می بینید رو تشکیل می دن اگر حوصله شو داشته باشید و از اول با PHP بنویسیدشون خیلی به نفعتونه.هم ساده است و هم حشو و اضافاتی نداره. اگر از اون تریپ آدم هایی هستید که یه سفارش از مشتری می گیرید(مثل برنامه انبارداری و ...) و با کمی بزک و غیره و ذلک می خواهید سریع یه چیزی سر هم کنید احتمالا NET. دوای درد شماست. ضمنا اونطوری که من فهمیدم برای کارهای عظیم تر مثل اتوماسیون یه اداره بزرگ یا چیزهایی مشابه اون عقلانیه که سختی J2EE رو به جان بخرید و قید NET. رو بزنید، اما بعید می دونم php به عنوان یه زبون اسکریپتی تنها( و نه یه پلتفرم کامل) اینجا جایگاهی داشته باشه(این آخری رو با کمی شک گفتم).

یه عشق برنامه نویسی خفن

oxygenws
سه شنبه 01 اردیبهشت 1383, 06:44 صبح
:) موفق و پیروز باشید :)

JavanSoft
سه شنبه 01 اردیبهشت 1383, 10:47 صبح
اول یه کم فکر کردم و به کشف و شهود پرداختم و کار رو از اول تا آخر برانداز کردم
فوت کوزه گری رو جا انداختید :flower:

nematia
چهارشنبه 02 اردیبهشت 1383, 00:58 صبح
این smarty خیلی دنگ و فنگ داره. من که ترجیح میدم مثل phpbb از کلاس هایی که خودم نوشتم استفاده کنم. تازه یه حسن دیگه اش هم اینه که tpl هاش تو سربرگ design ماکرومدیا دریم ویور هم دیده میشن و اینطوری سرعت کار بالا میره.

shaniaki
چهارشنبه 02 اردیبهشت 1383, 16:32 عصر
با عرض ادب:

این smarty خیلی دنگ و فنگ داره. من که ترجیح میدم مثل phpbb از کلاس هایی که خودم نوشتم استفاده کنم. تازه یه حسن دیگه اش هم اینه که tpl هاش تو سربرگ design ماکرومدیا دریم ویور هم دیده میشن و اینطوری سرعت کار بالا میره.
یهchm همراه خودش بود وقتی خوندمش به راحتی باهاش کار کردم. به نظرم ساده اومد. کجاهاش دنگ و فنگ داره؟
در ضمن ببخشید... منظور شما از «tplهاش تو سربرگ design ماکرومدیا دریم ویور هم دیده میشن» چیه؟

یه عشق برنامه نویسی خفن

nematia
پنج شنبه 03 اردیبهشت 1383, 00:50 صبح
کجاهاش دنگ و فنگ داره؟
روی کامپیوتر خودم که هیچ مشکلی نیست . ولی از اینکه باید php.ini رو در سرور تغییر بدم (یا از ini_set استفاده کنم) خوشم نیومد. و دیگر اینکه کلی فایل الکی هم باید کنارش داشته باشه. و از همه بدتر هم این templates_c که همش گیر میده میگه وجود نداره!

منظور شما از «tplهاش تو سربرگ design ماکرومدیا دریم ویور هم دیده میشن» چیه؟
این مورد رو دوباره بررسی کردم. اسمارتی هم با این قضیه مشکلی نداره. نمیدونم قبلا چرا تو سربرگ design چیزی نمیدیدم! به هر حال ببخشید که اشتباه شد.

shaniaki
پنج شنبه 03 اردیبهشت 1383, 09:39 صبح
با عرض ادب:
با تشکر از جواب شما...
هر چند که مشکلاتی که شما در سرورتون داشتید رو من در سرورم نداشتم و به templates_cهم گیری نمی ده ولی به این اعتقاد دارم که اگر آدم از چیزی که خودش نوشته و بهتر ازش سر در می آره استفاده کنه به نفعشه.

یه عشق برنامه نویسی خفن

nematia
جمعه 04 اردیبهشت 1383, 00:52 صبح
اگر آدم از چیزی که خودش نوشته و بهتر ازش سر در می آره استفاده کنه به نفعشه
من هم زیاد تجربه کردم. بارها شده که میخواستم یه برنامه آماده رو با کمی تغییر برای یه کار دیگه استفاده کنم. ولی آخرش به این نتیجه رسیدم که از اول خودم طراحی و کد نویسی کنم. البته مطالعه شیوه سایر برنامه ها (به خصوص برنامه های معروفی مثل phpbb و phpnuke ) کمک خیلی بزرگی هست.