زبان برنامه نویسی PHP، زبانی انعطاف پذیر و پویا است که از تکنیکهای برنامهنویسی مختلفی پشتیبانی میکند. طی سالها تغییرات زیادی در آن ایجاد شده است که میتوان به موارد زیر اشاره کرد
در این مقاله سعی شده مقداری اندک از قابلیت ها و الگوریتم های مورد استفاده در این زبان بیان شود.
ویژگهای بسیاری از مدل برنامهنویسی شیگرا در PHP پشتیبانی میشوند از جمله کلاسها (Classes)، کلاسهای انتزاعی (Abstract Classes)، رابطها (Interfaces)، وراثت (Inheritance)، سازندهها (Constructors)، کپیکردن (Cloning)، استثناها (Exceptions) و بسیاری دیگر.
زبان PHP از توابعی پشتیبانی میکند که میتوانند به متغیرها انتساب داده شوند. چه توسط کاربر تعریف شده باشند چه داخلی باشند، میتوانند توسط یک متغیر فراخوانی شوند. توابع میتوانند به عنوان یک آرگومان به سایر توابع فرستاده شوند (قابلیتی که به آن توابع مرتبه-بالا گفته میشود) و هر تابعی میتواند توابعی دیگری را به عنوان خروجی بازگرداند.
بازگشت (Recursion)، قابلیتی که به یک تابع اجازه میدهد خود را فراخوانی کند، توسط زبان پشتیبانی میشود اما بیشتر کد PHP روی تکرار (Iteration) تاکید دارد.
توابع بینام جدید (که از Closure پشتیبانی میکنند) از PHP 5.3 به بعد (۲۰۰۹) وجود دارند.
نسخهی 5.4 از PHP قابلیت اتصال Closure به قلمرو شی (Object’s Scope) را اضافه کرده و همچنین پشتیبانی از فراخوانیهایی با توابع بینام را بهبود بخشیده است.
قابلیت ساخت کلاس بدون نام (Programmer Declared Name) یا کلاس ناشناخته (که در نسخه ۷ ارايه شد) با استفاده از کلمه کلیدی new که می توان آن را در یک متغیر قرار داد. عملکرد آن متغیر نسبت به یک متغیر دیگر که از یک کلاس با نام new شده است تفاوتی ندارد.
انواع Union (که در نسخه ۸ ارايه شد) با توجه به ماهیت دینامیک انواع در زبان PHP، موارد زیادی وجود دارند که انواع Union میتوانند مفید واقع شوند. انواع Union به مجموعههایی از دو یا چند نوع گفته میشود که مشخص شده فقط یکی از این دو نوع میتواند مورد استفاده قرار گیرد.
دربارهی فراخوانیها در برنامه نویسی تابعی بیشتر بدانید
از طریق مکانیسمهایی مانند Reflection API و Magic Meghods است که PHP از این سبک برنامهنویسی پشتیبانی میکند. متدهای مختلفی مانند ()get__ و ()set__ و ()clone__ و ()toString__ و ()invoke__ وجود دارند که به توسعهدهندگان اجازه میدهند رفتار داخلی یک کلاس را تغییر دهند. توسعهدهندگان Ruby اغلب میگویند PHP از نبود ‘method_missing’ رنج میبرد در حالی که این عملکرد توسط ()call__ و ()callStatic__ قابل دسترسی است.