برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

مقدمه ای بر php (قسمت اول)

 

قبل از هر چیز یه نگاه کوتاه و جزئی بر تاریخچه php می کنیم. نویسنده php اولین بار این زبان رو برای کار های شخصی خودش و اثری برای Resume کاریش که باید تحویل می داده نوشته بوده. اولین بار این زبان بصورت یک CGI در زبان Perl نوشته شده بود. ولی سروری که روش php نصب شده بود یکسری مشکل در اجرای صفحات داشت. به همین دلیل php رو دوباره بازنویسی کرد و با زبان ‍C نوشت. در همین اثنا بعضی از کاربران سرور مربوطه هم شروع به کار با نسخه نوشته شده و درخواست به افزودن feature های بیشتر کردند. این روال ادامه پیدا کرد تا اولین نسخه جمع و جور شده php رو همراه با راهنما، Mailing-List و FAQ بیرون داد. اولین نام این زبان Personal Home Page Tools بوده که در آینده به Personal Home Page Construction Kit تغییر کرد.  در همین مدت که داشت php پامی گرفت نویسنده اون شروع به نوشتن یه CGI دیگه برای کارکردن با بانک های اطلاعاتی و ارسال SQL Query کرد. خوب بقیه تارخچه باشه برای بعد حالا به خود php بپردازیم ;-).

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

خوب تا الان نصب php رو گفتیم و گفتیم که 2 جور php رو میشه نصب کرد. یکی بصورت CGI و دیگری بصورت یک Module برای سرورتون. مطلبی که جاش بود ذکر کنم یه توضیح کوچکی برای فرق این دو بود.زمانی که php بصورت یک CGI برروی سرور نصب میشه، هرگاه که سرور  به فایل های php بر می خوره php رو اجرا میکنه و این فایل رو بهش ارسال میکنه. ولی وقتی بصورت Module برای سرور نصب میشه، php جزئی از خود سرور میشه و زمانی که سرور شروع به کار میکنه همیشه هست و منتظر صفحات و اجراشون هست. طبیعتا معلومه که نصب بصورت Module بهتر از نصب بصورت CGI هست. چون اگر بصورت CGI نصب بشه با هر Request باید php اجرا بشه و بعد هم بسته بشه! البته وقتی php بصورت Module نصب میشه به این معنی نیست که از CGI دیگه نشه استفاده کرد. یه موقع ها میشه که ما لازم داریم بصورت CGI از php استفاده کنیم. به عنوان مثال می خواهیم سرور ما هر هفته توسط یکی از اسکریپت های نوشته شده ما از Database ما یک Backup بگیره. برای انجام این منظور ما اسکریپت رو بصورت جداگانه و CGI اجراش می کنیم. خیلی حاشیه رفتم، حالا بیایم سر اصل مطلب.

اسکریپت های نوشته شده php همگی باید در فایل های متنی ساده ویا به عبارتی بهتر بصورت UNIX-Style نوشته شوند. به عنوان مثال یک فایل php هیچ وقت نباید با Word Pad یا MS-Word ساخته شود! چون موقع اجرا php رو دچار مشکل میکنه. در محیط Windows ساده ترین ادیتور برای انجام اینکار Note-Pad هست. اگر از ویندوز 2000 یا XP استفاده می کنید که چه بهتر چون می تونید به راحتی یک فایل php و با کدپیج Unicode ذخیره کنید. فایل های php معمولا از پسوند php. تشکیل می شوند. زمانی که browser شما یک درخواست به سرور شما میفرستد برای مشاهده یک فایل php، سرور شما فایل مربوطه رو به php Engine میفرسته تا فایل اجرا بشه. کار php Engine اجرای فایل php شما و ارسال نتیجه بصورت HTML به browser شما هست. php یک زبان اسکریپت نویسی سمت سرور است. یعنی اسکریپت شما در سرور اجرا شده و نتیجه برای شما ارسال می شود.

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

  • بصورت SGML

 

  • بصورت XML

 

  • بصورت اسکریپت های نوشته شده در فایل های HTML

  

  • بصورت تگ های ASP، البته در این حالت باید در فایل php.ini تعریف کنید که این حالت رو بشناسه. برای اینکار asp_tags =off رو به on تغییر بدید. یادتون نره Apache یاهر سروری که دارید رو restart کنید یا تغییرات رو مشاهده کنید. نحوه نوشتن ASP Style هم اینگونه هست:

من توی نوشته هام فقط بصورت XML می نویسم. مابین این تگ ها هر چند تا دستور که بخواهیم می تونیم بنویسیم. هر دستوری که تموم میشه باید بعدش این علامت رو بزاریم ";" هرگاه Engine زبان php به این ویرگول نقطه دار رسید فرض میکنه که دستور شما تموم شده. اگر در آخر هر دستور خود اینو نزارید برنامتون با مشکل برمیخوره. در اینجا یک مثال می زنم که نمایانگر پایان یک دستور هست.

این عبارت دقیقا مساوی این عبارت هست:

php تا زمانی که به ";" نرسه دستور رو تموم شده فرض نمیکنه. هردوی این عبارات حاصل ضرب 14 در 5 رو برروی صفحه نشون می دهند.

گاهی اوقات میشه که ما می خواهیم خطی یا خطوطی رو در فایل php خود غیر فعال کنیم تا اجرا نشن. یا گاهی اوقات هست که ما می خواهیم در کد های خود مطلبی رو بنویسیم. مثلا می خواهیم بگیم این کد فلان کار رو انجام میده. این کار رو می توان به 3 صورت انجام داد. راحت ترین راه برای انجام این کار گذاشتن 2 تا slash " //" در آغاز هر خط است. به عنوان مثال ما می خواهیم یه نوشته روی صفحه نمایش بدیم و در خود کد هم می خواهیم توضیح بدیم که این چیه:

اگر // رو در اول خط میزاشتیم، این دستور دیگه اجرا نمیشد و به اصطلاح Ignore میشد. به جای // می توان از # هم استفاده کرد. ولی گاهی اوقات هست که شما می خواهید چند خط رو غیر فعال کنید. برای انجام این کار نوشته هارو داخل /* ...*/ قرار می دهیم. به عنوان مثال هر اسکریپتی که نوشته میشه، در آغاز فایل یه توضیح کوتاهی از اسکریپت نوشته شده، می نویسند.

به همین روال اگر شما یکسری کد جای این نوشته ها قرار بدید، کد های شما Igone میشن و اجرا نمیشن.

خوب حالا بپردازیم به نحوه نمایش عبارات برروی صفحه! نوشته های متنی و عبارات متنی رو میشه به 3 مدل نوشت و نمایش داد. نحوه اول بصورت double quote هست. اگر شما نوشته های خود رو درون "..." قرار بدهید، زمان اجرا، php متن شمارو تا تگ های HTML و متغیر های استفاده شما رو پیدا کنه و نتیجه رو برروی صفحه نشون بده. در زبان php نوشته های ما توسط دستور echo نمایش داده می شوند. به این مثال برای نمایش متن هایی که درون double quote هستند دقت کنید.

در این مثال چون کلمه salam بین تگ های هست بصورت bold یا توپور نمایش داده میشه. بنابراین نتیجه salam می باشد. در ادمه نوشته می بینید که اگر یک متغیر هم نامش دورن "..." قرار داده شده باشده، مقدار یا ارزش اون در صفحه نشون داده میشه.

نحوه بعدی نمایش عبارات، بصورت single quote هست. یعنی نوشته های ما میان '...' قرار می گیرند. وقتی نوشته های شما میان '...' قرار بگیرند، دیگه توسط php مورد بررسی قرار داده نمیشه که آیا متغیری میانشون هست یا نه:

 

حاصل این دستور عبارت salam درست مانند قبلی برروی صفحه است. ولی اگر ما متغیری در این نوشته قرار بدیم، مقدار و ارزشش نشون داده نمیشه و فقط اسمش نشون داده میشه. آخرین روش برای نمایش عبارات استفاده از Here Document است که من تا حالا زیاد ندیدم جایی استفاده داشته باشه. در این روش هم اگر شما از دستورات html استفاده کنید، نوشته های شما برروی صفحه به همان صورت نشون داده می شوند. به عنوان مثال:

در متغیر hereTex$ ما این نوشته هارو ذخیره می کنیم. هنگام نمایش برروی صفحه ما این نتایج رو میگیریم:

 

کلا زیاد از Here Document استفاده نمیشه. اعداد رو هم میشه بصورت عددی که هستند نمایش بدیم و هم بصورت مقادیر آن ها در سیستم های Octal و Hexa.  به عنوان مثال این عبارات همگی عدد 110 رو نشون می دهند:

 

برای نمایش اعداد Hexadecimal باید در شروع آن 0x و برای نمایش اعداد Octal باید درشورع آنها یک صفر قرار دهیم.

 نمی دونم تاحالا برنامه نویسی کارکردید یا نه! در برنامه نویسی ما همیشه با مقداری به نام بولین (Boolean) سروکار داریم. متغیری که از نوع بولین تعریف میشه یا مقدار True میگیره یا False. میشه اینو به یه چراغ تشبیه کرد. یه چراغ یا خاموشه یا روشن. وقتی روشنه True هست وقتی هم که خاموش هست False.

php هم مانند تمامی زبان های برنامه نویسی دیگه از انواع مختلف متغیر ها پشتیبانی می کنه. در این زبان متغیر ها با علامت $ نامشون شروع میشه. به عنوان مثال اگر ما بخواهیم متغیری داشته باشیم که درونش نامی رو نگهداری کنیم می تونیم name$ تعریفش کنیم. php نسبت به نام متغیر ها Case Sensitive هست. یعنی متغیر m4s$ و M4s$ و M4S$ هر 3 با همدیگه فرق می کنند. پس توی نامگذاری همیشه دقت کنید. در php نیاز نیست که حتما یه متغیر رو قبل از اینکه استفادش کنیم تعریفش کنیم و نوعش رو مشخص کنیم. دربعضی از زبان های برنامه نویسی برای استفاده از یک متغیر حتما باید تعریفش کنیم. زمانی که یه متغیر مقداری رو میگیره همون موقع درست میشه و تازمانی که برنامه هنگام کارکردن هست وجود داره. برای مقدار دهی به متغیر ها مانند خیلی از زبان های برنامه نویسی عمل می کنیم:

 

برای نمایش یک متغیر برروی صفحه می توان از دستور echo استفاده کرد. به عنوان مثال می خواهیم متغیر WebSiteName$ رو بروی صفحه بصورت Bold نشون بدیم. برای انجام این کار از این دستور استفاده می کنیم:

 

نتیجه این دستور عبارت Welcome to M4S.Net می باشد. اگر شما این عبارات رو در Single Quote قرار می دادید عبارت Welcome to $WebSiteName برروی صفحه نمایش داده میشد!

گاهی اوقات میشه که ما می خواهیم مقدار ثابت (Constant) تعریف کنیم و در برنامه ازش استفاده کنیم. درست مانند کاری که phpNuke برای فایل های زبان کرده. مقادیر ثابت درطول برنامه نه عوض میشن و نه مقداری می گیرند. نحوه تعریف مقادیر ثابت اینگونه است:

این دستور 3 تا پارامتر میگیره، ولی معمولا 2 تاش برای تعریف مقادیر ثابت لازم است. پارامتر اول نام مقدار ثابت و پارامتر دوم مقداری هست که ما می خواهیم بهش بدهیم. پارامتر سوم از نوع بولین و دلخواه است که برای تعیین Case In-Sensitive بودن مقدار ثابت ما هست. اگر مقدار True بدیم دیگه مقدار ثابت ما ‍Case Sensitive نیست. به مثال زیر توجه کنید:

 

در این مثال چون ما تعیین کردیم که مقدار ثابت ما ‍Case In-Sensitive هست می تونیم مثل تمامی موارد فوق بخونیمش. مقدار پیشفرض پارامتر سوم همیشه False هست. بنابر این اگر شما True رو مشخص نکنید مقدار ثابت شما Case Sensitive تعریف میشه. و اگر دقیقا عین نامش رو ننویسید مقدار اون نشان داده نمیشه.

همچنین تابعی هست به نام defined اینو از عمد اینجوری نوشتم که با خود define اشتباه نشه. این تابع مشخص میکنه که آیا مقدار ثابتی تعریف شده یا نه. اگر تعریف شده بود مقدار True بر میگردونه، اگر تعریف نشده بود، مقدار False بر میگردونه. True همیشه 1 است و False همیشه 0. به این مثال توجه کنید.

 

نتیجه ای که برروی صفحه نمایش داده میشه 1 است. چون ما گفتیم که WebSiteName یک مقدارثابت (Constant) هست که Case Sensitive نیست. بنابر این، با نام websitename هم برای سیستم تعریف شده است. ولی اگر ما اون مقدار true رو برداریم. حاصلی که می بینیم 0 است. چون این بار WebSiteName بصورت Case Sensitive تعریف شده و تا همانند نامش صداش نکنیم جواب نمیده :-) (دیگه کامپیوتر هم برا آدم کلاس میزاره).

php شکر خدا مثل بعضی زبون های برنامه نویسی درگیری نداره به آدم هم گیر نمیده و با متغیر ها خیلی flexible رفتار می کنه. در php میشه از این 8 نوع متغیر استفاده کرد:

  • string
  • integer
  • double
  • array
  • boolean
  • object
  • resource
  • unknown

در زبان php از متغیر های double به عنوان همون floating-point استفاده میشه. برای اینکه بینید متغیر های شما از چه نوع هستند می تونید از تابع ()gettype استفاده کنید مثال زیر یه مثال خوبی برای نشون دادن نوع متغیر ها هست:

 

نتیجه ای که برروی صفحه نشون داده میشه این هست:

 

اینجا یه نکته هست. اگر ما عدد 18 رو داخل "..." قرار دهیم، php متغیر age$ رو به عنوان یک متغیر string حساب می کنه. اگر بخواهیم نوع متغیری را تغییر دهیم از تابع ()settype استفاده می کنیم. به عنوان مثال این مرتبه عدد 18 رو در "..." قرار می دهم و توسط تابع ()settype میعن می کنیم که این متغیر یک integer هست.

 

اگر ما از تابع ()settype استفاده نمی کردیم php متغیر age$ رو یک string حساب می کرد، ولی حالا به عنوان یک integer حساب می کنه.

همچنان در php می توان از عملگر های Casting هم استفاده کرد. درست مانند توابع ()int و ()str در زبان های برنامه نویسی دیگه مانند VB و ++‍C. توسط عملگرهای Casting می توانید بصورت موفقت نوع متغیر رو تغییر داد. فهرست زیر، لیست عملگرهای ‍Casting زبان php می باشد:

(string)

(integer)

(double)

(boolean)

البته میشه از نام اختصاری (int) و (bool) برای عملگر های (integer) و (boolean) استفاده کرد. طریقه استفاده از این عملگر های اینگونه می باشد:

 

به عنوان مثال ما متغیری داریم که توش عدد Π رو ذخیره کرده ایم. ولی وضعیتی در برناممون پیش اومده که می خواهیم این متغیر رو به عنوان یک عدد صحیح (integer) برروی صفحه نمایش دهیم. بنابر این اینگونه برروی صفحه نمایش می دهیم:

 

بصورت پیشفرض php متغیر pie$ رو به عنوان یک متغیر double حساب میکنه. ولی ما با دستور (int)($pie) مقدار این متغیر رو به عنوان یک عدد صحیح نشون میده بنابر این خروجی برنامه عدد 3 هست.

در php عملگر های دیگه هم هستند. بعضی عملگر ها در php باید بین 2 عبارت عملی انجام دهند و بعضی عملگرها هم در php وضیفه انجام عملی برروی یک عبارت دارند. به عنوان مثال عملگر های جمع (+) و یا تفریق (-)  برروی 2 عبارت باید عملی انجام دهند. مثال عملگر هایی که برروی یک عبارت عمل می کنند، عملگر Casting یا عملگر Increment (++) می باشد. در ادامه متن بیشتر بهشون توضیح می دهم.

در php عملگر های ریاضی مانند عملگر ها در همه زبان ها می باشد. همچنین  عملگر دیگه ای هم هست در php که ترجمش میشه "عملگر 3 گانه" (Ternary Operator) که در بخش های بعدی هنگام معرفی دستورات شرطی مثل If و Switch بهش می پردازیم.

نظرات 1 + ارسال نظر
رها یکشنبه 5 اردیبهشت‌ماه سال 1389 ساعت 18:08 http://www.bluesky7.blogfa.com

کامل و عالی بود . مرسی آقا مصطفی

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد