پی اچ پی PHP

پی‌اچ‌پی (PHP) یه زبان برنامه‌نویسیِ شیءگرا هست که برای طراحی وب توسعه یافته، اما میشه از اون به عنوان یک زبان عمومی هم استفاده کرد.  این زبان در سال ۱۹۹۵ میلادی توسط راسموس لِردورف ساخته شد و در حال حاضر توسعهٔ آن بر عهدهٔ گروه پی‌اچ‌پی هست.

کدهای PHP توسط یک سرور وب که نرم‌افزار PHP روی آن نصب باشه، تفسیر میشه. دستورهای این زبان می‌تونن به صورت مستقیم داخل کدهای HTML قرار بگیرند. زبان پی‌اچ‌پی از نسخهٔ ۴٫۳ به بعد قابلیت پشتیبانی از واسط خط فرمان را هم به امکانات خودش اضافه کرده. این قابلیت میتونه برای ایجاد نرم‌افزارهای غیر وبی یا نرم‌افزارهایی با واسط گرافیکی کاربر مورد استفاده قرار بگیره.

PHP یک نرم‌افزار آزاد است که تحت مجوز پی اچ پی منتشر شده. این مجوز به دلیل قرار دادن محدودیت روی استفاده از عنوان PHP، با مجوز همگانی گنو (GPL) سازگار نیست. پی‌اچ‌پی را میشه روی اکثر سرورهای وب نصب کرد. همچنین قابلیت نصب آن به صورت یک شل جداگانه روی تقریباً تمامی سیستم‌های عامل و پلت‌فرم‌ها (یا سکوها) وجود داره. همه این استفاده‌ها رایگان هست.

آشنایی با زبان PHP

آشنایی با زبان PHP

ساختار

برنامه Hello World زیر با استفاده از زبان PHP که در درون کدهای HTML قرار گرفته‌است، نوشته شده:

  1. <!DOCTYPE html>
  2. <meta charset="utf-8">
  3. <title>PHP Test</title>
  4. <?php
  5. echo 'Hello World';
  6. ?>

از اونجایی که PHP نیازی نداره که در داخل کدهای HTML قرار بگیره یا روی سرور وب اجرا بشه، کوتاه‌ترین برنامه Hello World پی اچ پی به این صورته:

 

  1. <?= 'Hello world';

 

مفسر پی اچ پی فقط کدهایی رو که در داخل جداکننده‌های PHP باشن رو تفسیر میکنه. به این ترتیب شما میتونید با استفاده از جداکننده های PHP کدهای PHP خودتون رو از کدهای غیرPHP مثل HTML جداکنید و مطمئن باشید که مفسر پی اچ پی به کدهای خارج از جداکننده ها کاری نداره.

معروف‌ترین جداکننده‌های PHP علامت <?php و ?> هست.

جداکننده‌های دیگه ای هم هستند مثل:

<script language=”php”> و </script>

<? یا <?= (که برای خروجی دادن متن یا متغیر استفاده می‌شود)

<% یا <%= و %>

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

 

نام متغیرها در زبان PHP حتماً باید با نماد دلار ($) شروع بشه و نیازی به مشخص کردن نوع متغیر نیست. برخلاف نام توابع و کلاس‌ها، نام متغیرها به بزرگی و کوچکی حروف حساس هستند. خطوط جدید و فاصله‌ها نادیده گرفته شده (به جز فاصله‌هایی که در درون رشته‌ها قرار داشته باشن) و تمامی دستورهای این زبان با علامت سمی‌کولن (;) تموم میشه.[۶۷] در زبان PHP به ۳ صورت متفاوت می‌توان کامنت گذاشت.

از علامت‌های /* */ برای کامنت‌های چندخطی و از علامت‌های // یا # برای کامنت‌های یک خطی استفاده میشه.

از نظر ساختار کلی و کلمات کلیدی، PHP مثل خیلی از زبان‌های سطح بالا از قواعد زبان C پیروی میکنه. اما برای تمام ساختارهای کنترلی قواعد نوع دومی هم وجود داره که میشه از اونها مثل ساختار اصلی بهره برد. این قواعد نوع دوم مثل زبان‌های خانوادهٔ بیسیک هست.

 

توابع

زبان PHP صدها تابع پایه و هزاران تابع افزونه دارد. بیشتر این توابع به‌خوبی روی وب‌گاه پی اچ پی مستندسازی شدن. نام‌گذاری توابع پایهٔ این زبان از قوانین یکسانی و مشخصی پیروی نمکنه.

توابع جدید می‌توانند به شکل زیر تعریف شوند:

  1. function myNameFunction() { // تابع را تعریف می‌کند
  2. return 'John Doe'; // مقداری را بازمی‌گرداند
  3. }
  4. echo 'My name is ' . myNameFunction() . '!';
  5. // خروجی متن مقابل خواهد بود: 'My name is John Doe!'

از نسخهٔ ۵٫۳ به بعد می‌توان با استفاده از قابلیت بستار (Closure)، توابع بدون‌اسم را به صورت زیر تعریف کرد:

  1. function getAdder($x) {
  2. return function($y) use ($x) {
  3. return $x + $y;
  4. };
  5. }
  6.  
  7. $adder = getAdder(۸);
  8. echo $adder(۲); // خروجی عدد ۱۰ خواهد بود

توی تکه‌کد بالا، تابع getAdder به کمک متغیر $x یه بستار تعریف می‌کند که متغیر $y را به‌عنوان ورودی میگیره. این نوع تابع یک شیء دست اول هست به این معنی که میشه اون رو داخل یه متغیر نگه داشت و میشه به‌عنوان ورودی اون رو به توابع دیگه داد و استفاده‌های دیگه ای ازش کرد.

 

نمونه کد به زبان PHP

نمونه کد به زبان PHP

اشیاء

قابلیت برنامه نویسی شیء گرایی بصورت ابتدایی تو نسخهٔ ۳ به زبان پی‌اچ‌پی اضافه و تو نسخهٔ ۴ بهتر شد. این قابلیت که در نسخهٔ ۵ کاملاً بازنویسی شده‌بود، با افزایش قابلیت‌ها و بهبود عملکرد داخل زبان قرار گرفت. تو نسخه‌های قبلی PHP، با أشیاء مثل یک نوع داده برخورد می‌شد. بنابراین، باید در هر بار مقداردهی یا ارسال شیء به یه تابع، کل محتویات شیء تو یه فضای حافظه جدید کپی میشد، اما تو نسخهٔ ۵ نحوهٔ مدیریت اشیأ تغییر کرد. از این پس، أشیاء با یک اشاره‌گر به فضای حافظه مشخص میشن، نه با مقادیرشان.

در کنار این بهبودها، مفاهیم جدیدی مثل متغیرهای شخصی (Private member variables) و عمومی (Public member variables) و همچنین کلاس‌های انتزاعی (Abstract Class)، کلاس‌های نهایی (Final Class) و بسیاری موارد دیگر نیز معرفی شد. نحوهٔ تعریف متدهای سازنده (Constructors) و تخرب‌کننده (Destructors) نیز مثل زبان سی++ استانداردسازی شد و راه حلی برای مدیریت خطاها و استثناها ارائه شد. علاوه‌بر این موارد، پی‌اچ‌پی ۵ قابلیت استفاده از اینترفس‌ها (Interface) را نیز معرفی و از پیاده‌سازی چندین اینترفیس در یک کلاس پشتیبانی کرد. در این میان، اینترفیس‌های خاصی برای برقرار کردن رابطه با ساختارهای زبان به‌وجود آمدند. مثلاً، با کلاس‌هایی که اینترفیس ArrayAccess را پیاده‌سازی کنند، می‌توان مانند آرایه‌ها برخورد کرد.

اگر شخص برنامه‌نویس با استفاده از کلمهٔ کلیدی clone سعی کنه که یک شیء را کپی کنه، موتور زند ابتدا بررسی میکنه که متد __clone در درون کلاس تعریف شده یا خیر. در صورتی که تعریف نشده باشه، متد پیش‌فرض __clone فراخوانی میشه که تمامی خصوصیات کلاس را کپی میکنه. اما اگر این متد در کلاس وجود داشته باشه، مسئولیت کپی کردن و مقداردهی توی کلاس کپی‌شده به عهدهٔ این متد خواهد بود.

یه نمونه‌ کد ابتدایی از برنامه‌نویسی شیءگرا به زبان PHP به‌شکل زیر هست:

  1. class Person {
  2. public $firstName;
  3. public $lastName;
  4.  
  5. public function __construct($firstName, $lastName = '') {
  6. $this->firstName = $firstName;
  7. $this->lastName = $lastName;
  8. }
  9.  
  10. public function greet() {
  11. return "Hello, my name is " . $this->firstName . " " . $this->lastName . ".";
  12. }
  13.  
  14. public static function staticGreet($firstName, $lastName) {
  15. return "Hello, my name is " . $firstName . " " . $lastName . ".";
  16. }
  17. }
  18.  
  19. $he = new Person('John', 'Smith');
  20. $she = new Person('Sally', 'Davis');
  21. $other = new Person('iAmine');
  22.  
  23. echo $he->greet(); // prints "Hello, my name is John Smith."
  24. echo '{{سخ}}';
  25. echo $she->greet(); // prints "Hello, my name is Sally Davis."
  26. echo '{{سخ}}';
  27. echo $other->greet(); // prints "Hello, my name is iAmine."
  28. echo '{{سخ}}';
  29. echo Person::staticGreet('Jane', 'Doe'); // prints "Hello, my name is Jane Doe."
زبان برنامه نویسی پی اچ پی

زبان برنامه نویسی پی اچ پی

دیدگاهتان را بنویسید

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