با سلام خدمت شما دوستان گرامی ، امیدوارم که شاد باشید.با اموزشی دیگر در زمینه php با شما همراه هستیم .امیدوارم که این مطالب برای شما مفید واقع شود.می توان PHP را تفسیر شده ی زبان برنامه نویسی C تصور کرد، که آن را در HTML داکیومنت جای گذاری می کند. خود زبان شباهت زیادی به C دارد، با این تفاوت که متغیرها تایپ نمی شوند و کتابخانه های مختص وِب توکار و داخلی هستند و همه چیز اتوماتیک وار وصل به سِروِر وِب مورد علاقه می باشد.
گرامر {syntax} دستورها {statement} و تعریف توابع {function definition} باید مانوس باشند، با این تفاوت که متغیرها به دنبال یا پس از $ می آیند و توابع به نمونه ی اولیه {prototype} جداگانه و مخصوص به خود نیاز ندارند.
اکنون شباهت ها و تفاوت های بین این دو زبان را تشریح می کنیم.
شباهت ها
syntax {دستور نحوی} : به طور کلی، دستور نحوی PHP و زبان C یکی هست :Code نسبت به جای خالی {blank} بی تفاوت است، دستورها به {؛} =semicolon {نقطه ویرگول} ختم می شوند، فراخوانی تابع {function call} در هر دو زبان ساختار یک شکلی دارند، my_function expression1، expression2، علامت ({}) دستورها را به بلوک {block} تبدیل می کنند. PHP زبان C و کامنت های سبک C++ {C++-style comments}(/**/ علاوه بر //) و همچنین Perl و سبک shell-script {shell-script style}(#) را پشتیبانی می کند.
operators {عملگرها} : عملگرهای جایگزین {assignment operator} =، +=، *=، and so on، جایگزین Boolean {Boolean operators} &&، ||، !)، جایگزین های مقایسه ای >، <=، >=، < ==، ! و عملگرهای حسابی پایه ای {arithmetic operator}+، -، *، /، % و همان طوری که در C رفتار می کنند در PHP نیز همان طور رفتار می کنند.
Control structure {ساختار های کنترلی} : رفتار ساختارهای کنترلی پایه ای if، switch، while، forدر هر دو زبان یکی هستند که شامل پشتیبانی از ادامه دادن {continue} و متوقف کردن {break} نیز می شود. تفاوت قابل توجه بین این دو زبان این است که سویچ {switch} در PHP رشته ها {string} را به عنوان شناسه های حالت و کوچک بزرگی حروف {case identifier} می پذیرد، در حالی که در C چنین نیست.
function names {اسم تابع ها} : هنگامی که داکیومنت را دارید مطالعه می کنید به اسم توابع زیادی برمی خورید که شباهت بسیار زیادی به توابع یا function هایِ C دارند.
تفاوت ها
dollar sign {علامت دلار} : تمام متغیرها با علامت $ آغازین علامت گذاری می شوند. نیازی نیست متغیر ها را پیش از جایگزینی {assignment} معرفی کنیم و هیچ نوع ذاتی {intrinsic type} هم ندارند.
types {انواع} : PHP فقط دو نوع عددی {numerical type} دارد : integer {عدد صحیحی})در C به عنوان long است) و double (به عنوان یک double در C ). طول رشته ها اختیاری هست. هیچ نوع کاراکتر {character type} جداگانه ای وجود ندارد.
Type conversion {تبدیل نوع} : انواع {types} به هنگام ترجمه یا کامپایل شدن {compile time} بررسی و چک نمی شوند، خطا های نوع {type errors} هم هنگام زمان-اجرا {run-time} رخ نمی دهند. در عوض، متغیرها و مقدارها خودکار {variable و values} بسته به نیاز در سرتاسر نوع ها {types} تبدیل می شوند.
Arrays {آرایه ها} : گرچه آرایه ها به لحاظ دستور نحوی ظاهراً مشابه دستور نحوی آرایه ی C هستند، شیوه ی به اجرأ درآوردن در این دو کاملاً متفاوت است. در واقع، آرایه های شرکت پذیر {associative array} یا hash هستند و شاخصِشان {index} هم می تواند یک عدد یا رشته باشد. نیازی نیست که از قبل معرفی یا اختصاص داده شوند.
No structure type {نوع بدون ساختار} : در PHP هیچ ساختاری وجود ندارد و آن تا حدی به دلیل وجود آرایه و شی {object} هست که با هم نیاز به ساختار را از میان بر می دارد.عناصر آرایه ی PHP نیاز نیست که همگام و نا متناقض باشد.
No pointer {بدون نشانه رو} : در PHP هیچ نشانه رو ای وجود ندارد، گرچه متغیر بدون نوع {typeless variable} هم همین نقش{کار نشانه رو} را ایفا می کنند. PHP ارجاع متغیر {variable reference} را پشتیبانی می کند. تا حدی می توان کارکرد تابع نشانه رو را تقلید یا شبیه سازی کرد، به این معنا که می توان اسم تابع ها را در متغیرها ذخیره کرد و آن را با خود متغیر فراخواند نه با یک اسم لیترال.
No prototype {بدون نمونه ی اولیه} : تا زمانی که تعریف تابع {function definition} در فایل کد جاری {code file} یا فایل های مشمول یافت شود، نیازی نیست که تابع ها پیش از معرفی اجرا شان تعریف شوند.
memory management {مدیریت حافظه} : موتور PHP در واقع یک محیط پر از چیز های دور ریخته شده(با مرجع شمارش شده).در پردازه {script} های کوچک نیازی به deallocate یا بازگرداندن حافظه ی تخصیص یافته به RAM نیست.شما می توانید آزادانه ساختارها را {به هر چه میل دارید} اختصاص دهید، از جمله نمونه های شی و رشته {string، object instances}. در PHP 5، امکان تعریف مخرب {destructor} برای شی {object} وجود دارد ولی این امکان برای پاک کردن {delete یا free} وجود ندارد. مخرب ها زمانی که آخرین ارجاع و اشاره به یک شی ناپدید گشته و قبل از این که حافظه بازیابی شود، فراخوانده می شوند.
Compilation و linking {ترجمه کردن و پیوند دادن} : مرحله ی کامپایل کردن جداگانه ای برای پردازه {script} وجود ندارد.
permissiveness {آسان گیری} :به طور کلی، PHP آسان گیرتر از زبان C است(به خصوص در مورد سیستم نوع {type system}) و به همین دلیل هم درمورد اشتباهاتی که یک تازه وارد می کند زیاد سخت گیر نیست. نتایج پیش بینی نشده از پیغام خطا بسیار معمول تر است.