عجایب هفتگانه زبان php – در ساختار و کدنویسی

به نام دانای بر حق

اولین یادداشت ۹۴ رو میزنم به افتخار همه اساتید xmen که ما شاگردشون هستیم، می خوایم در مورد 7 مورد از عجایبی که در زبان php وجود داره صحبت کنیم که برای کسایی که با زبان های دیگه دارن کار می کنند شاید بسیار عجیب باشه.

مقدمه

البته که php علاوه بر عشق یه زبان تحت وب نیز هست ; ) ,  باید به این مورد توجه کرد که php خیلی راه دست هستش و با هیچ زبان دیگه ای نمی تونین مقایسه اش کنین حتی Python من خودم اگر بخوام یه برنامه رو جدا از پلت فرمش بنویسم ۱۰۰٪ پایتون رو انتخاب می کنم چون خیلی راه دست هست و هلو برو تو گلو ولی خوب PHP واقعا یه چیز دیگه است چون اصلا این بچه مظلومه و بلد نیست به کد نویسش سخت بگیره و اذیتش کنه D :  , حالا اینا رو بی خیال شیم بیایم کمی در مورد ساختار این زبان صحبت کنیم چرا که برخی از این عجایب به ساختار این زبان بستگی داره، خب php عزیز یه زبان برنامه نویسی نیست یه زبان اسکریپت نویسی تحت وب هستش هستش که در تقریبا اکثر سیستم عامل های معروف قابل اجراست، حالا این یعنی چی یعنی این که کد های PHP هرگز کامپایل نمیشوند مثل یه برنامه دلفی و فقط و فقط تفسیر میشود، تفاوتی اصلی از اونجا ناشی میشود که وقتی کدی کامپایل میشود اطلاعت نامی و و متنی آن تقریبا از بین میره و فقط آدرس کلاس ها و توابع در برنامه باقی میماند ، اما چون در PHP همچین کاری نمیشه همه چیز به قوت خود باقی هستش که شما لذت ببرید و بعضی جاها هم حرص بخورید که مجبورید اصل سورس کد رو تحویل مشتری عزیز بدین : )

عجب اول – تعریف متغییر و آرایه

چیزی که اول هر برنامه نویسی رو متعجب می کنه این هستش که php چرا تعریف متغییر ندارد!؟ واقعا چرا؟ چراشو نمیدونم ولی خیلی خوبه که نداره شما رو درگیر کد نویسی می کنه نه قواعد سخت گیرانه خودش برای راحتی خودش برنامه نویس رو ناراحت نمی کنه، و نکته بعدی این که از   Associative array هم پشتیبانی می کنه که این خیلی خوبه و اما توضیحات:

تعریف یه متغییر در php :

ببین ما فقط کافی نسبت بدی خودش نوعش هم مشخص می کنه : )

تعریف آرایه :

در خط اول ما به شرایط تعریف کردیم و در قسمت دوم با هر کلیدی دوست داشتیم آرایه رو تعریف کردیم بینیم که بعد از کلید ۰ و ۱ ما 99 استفاده کردیم و مشکل هم نیست

تعریف آرایه Associative (آرایه هایی که به جای عدد از حروف و اعداد به عنوان کلید استفاده می کند)

تازه یکیش هم دو بعدیه دیدی چقدر ساده اس بعد بگین php بده اَسپ ( asp ) خوبه : )

عجب دوم – شناخت زمان

در php یه عجب خیلی خفن وجود داره این که خیلی ساده هر زمانی رو بهش بگی میفهمه مثلا ازش بپرسی من کلاس اول کی املا رو صفر شدم و از بابام کتک خوردم بهت میگه باور کن ; )

میگی نه نگاه کن یه تابع داریم به نام strtotime یعنی تبدیل رشته به زمان باید قبل از این به یه چیزی توجه داشت اونم این که تو php از timestamp استفاده میشه یعنی زمان همیشه یه عدد بزرگ هستش که اون عدد برمیگرده تا شما باهاش کار کنید. این مثلا این شکلی هست1427614759 و تعداد ثانیه هایی که از این اولین لحظه1970/01/01 گذشته رو نشون میده پس ما این عدد رو مدام نیاز داریم حالا ببینم چطور این رو تحویل ما میده:

دیگه کامنت هاش مشخصه توضیح ندم، انصافا ازش بپرسی کی نونوایی خلوته هم بهت میگه ها : )

عجب سوم – نمایش آرایه ها و کلاس ها

یکی از چیزهایی که در PHP بسیار واسم جالب بودش نحوه نمایش آرایه ها و کلاس ها بودش که دو مورد وجود داره یکی print_r هست و بعدی var_dump هستش به نمونه کد زیر نگاه کنین چقدر تمیز برمیگردونه:

 

و اما نتیجه:

این هم در مورد یه کلاس:

نتیجه:

 

عجب چهارم – محصور کردن string

یکی از چیزهایی که تو اکثر زبان ها ها اذیت میکنه محصور کردن رشته ها هستش وقتی شما داخل C مثلا میخوای از ” استفاده کنید دابل کوتیشن رو نمیتونین مستقیم استفاده کنید باید حتما کارکتر رو ببرید مثل ولی فقط میتونین از دابل کوتیشن برای محصور کردن استفاده کنید و برای رفت به خط بعدی مصیبت دارین اما در PHP این مشکلات نیست شما اول از همه میتونین هم از سینگل و دابل کوتیشن استفاده کنین البته هر کدوم ویژگی های خاص خودش رو داره و هر جا اراده کنین برین خط بعدی نیازی به بستن کوتیشن و اضافه کردن کارکتر های امثال n\ نیست به سادگی امکان پذیر هست این ببینید:

نتیجه:

خب حالا یه نکته وجود داره اگر شما یه متن داشتین پر از ‘ و ” بودش ترکیبی باید چه کار کنید آیا php راهی برای شما در نظر گرفته؟

به کد زیر توجه کنید:

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

اما نتیجه:

اینم از این جالب بود؟ :‌ )

عجب پنجم – بلاک های متفاوت – Alternative syntax for control structures

یکی از چیزهایی که توز زبان های وابسته به syntax معروف C وجود داره استفاده از آکولاد برای تفکیک بلاک های کد ها با هم است خوب این خوبه ها ولی بعضی جا ها خیلی اعصاب خورد کن میشه خصوصا تو PHP که شما ممکنه کد های HTML رو وسط کدهاتون داشته باشین اون موقع بین آکولاد ها گم خواهید شد به کد زیر دقت کنید

 

خب آیا پیدا کردن این آکولاد ساده اس؟ حالا آکولاد همیشه برای هم if , هم برای for و هم برای foreach و هم برای while و هم برای dowhile برای switch هم که هست پس اینجا این چند تا با هم قاطی بشند کد نا خوانا میشه برای حل این مشکل یه راهی پیش رو ما گذاشتن بسیار جالب هستش حالا به syntax اینها دقت کنین:

پر واضح هستش که چطور آکولاد رو حذف کردیم و به جاش از کلامات کلیدی دیگه استفاده کردیم مثل endif , else: ,.endforeach و سایر موارد نیز اینچنین هست مثلا while(): endwhile;

این ها هم در نوع خودشون بی نظیر و عجیب هست.

 

عجب ششم – متغییر های با نام متغیر و توابع متغییری

یکی از چیز هایی که در php شما رو به کد زیر توجه کنید:

به نظر شما اینجا نتیجه چی نمایش داده میشه بله Mahdiam نمایش داده میشه چون داخل var کلمه take نوشته و دنبال متغییر $take میگرده و نمایش میده اتش.

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

کد زیر تابع phpinfo را اجرا می کند و شما میتوانید از کدنویسی خود لذت ببرید.

 

عجب هفتم – همه چیز به عنوان متغییر

به کد بالا تجوه کنید ما ابتدا کلاس myclass ور تعریف کردیم سپس اسمش رو ریختیم تو یه متغییر و بعد ازش مشتق کردیم و بعد تابع test رو ریختیم تو یه متغییر و ازش اجرا گرفتیم زیر مجموعه cls و در آخر از تابع call_user_func استفاده کرده و یه بار دیگه تابع رو اجرا کردیم

 

بحث آخر

باور نکردنی این انعطاف اگر یه بار با یه زبان native کار کرده باشید متوجه میشم چی میگم.

همین ویژگی ها باعث میشه شما تو معماری نرم افزار اتون راحت باشید آیا تا حالا به این فکر کردین این انعطاف چقدر مناسب معماری MVC هستش؟ آیا نمیشه یه Bootstrap ناز با این ویژگی ها نوشتش که خودش خودکار کلاس ها و توابع مورد نظر ما رو فراخونی کنه؟ : )

شاید آموزش های بعدی در همین مورد باشه ; )

با ما همراه باشید – 4xmen –  فروردین 1394

 

 

‌A1Gard

اول از همه کوچک ترین عضو مجموعه 4xmen بنده حقیر هستم. در ثانی یک توسعه دهنده هستم زمینه های تخصصی کارم :‌ Delphi, PHP, C++ ,Python, JavaScript, Unity game engine, C#, asm و علاقه مند به لینوکس، RCE ، کریپتوگرافی هستم. تا الان حضرت حق اینا رو به ما داده و هر وقت که بخواد ازمون میگیره دست خودشه. یا حق، با حق، تا حق

More Posts

3 thoughts on “عجایب هفتگانه زبان php – در ساختار و کدنویسی”

  1. یکی دیگه از مواردی که من اوایل کار با php همیشه تعجب میکردم این بود که :
    ؛ هر کار معمولی روی data که تو زبان های دیگه با کلی شرط و حلقه حل میشه تو php جزو توابع native‌هست:

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *