PHP چیست؟ آموزش کامل و جامع PHP

PHP چیست؟

PHP (Hypertext Preprocessor) یک زبان برنامه‌نویسی سمت سرور است که برای توسعه وب‌سایت‌های پویا و برنامه‌های تحت وب استفاده می‌شود. این زبان می‌تواند با HTML ادغام شود و به راحتی با پایگاه‌های داده ارتباط برقرار کند.

PHP یکی از محبوب‌ترین زبان‌های برنامه‌نویسی وب است و بیش از 80% وب‌سایت‌های دنیا از آن استفاده می‌کنند.
مثال ساده PHP
<?php
  echo "سلام دنیا!";
  
  $name = "کاربر";
  echo "خوش آمدید " . $name;
?>

تاریخچه PHP

PHP در سال 1994 توسط راسموس لردورف ایجاد شد. در ابتدا مخفف Personal Home Page بود، اما بعداً به PHP: Hypertext Preprocessor تغییر نام داد. از آن زمان تاکنون، نسخه‌های مختلفی از PHP منتشر شده که آخرین نسخه پایدار آن PHP 8.3 می‌باشد.

PHP 8 قابلیت‌های جدیدی مانند JIT Compiler، Named Arguments، Match Expression و انواع داده جدید را معرفی کرده است.

ساختار پایه PHP

یک فایل PHP می‌تواند شامل HTML، CSS، JavaScript و کد PHP باشد. کد PHP باید درون تگ‌های قرار گیرد.

ساختار پایه PHP
<!DOCTYPE html>
<html>
<head>
    <title>صفحه PHP من</title>
</head>
<body>
    <h1>
    <?php 
        $greeting = "سلام دنیا!";
        echo $greeting;
    ?>
    </h1>
</body>
</html>

سینتکس PHP

سینتکس PHP ساده و انعطاف‌پذیر است. هر دستور با سمی‌کالن (;) پایان می‌یابد و متغیرها با علامت دلار ($) شروع می‌شوند.

نمونه‌های سینتکس PHP
<?php
// تعریف متغیر
$message = "سلام دنیا";

// شرط‌ها
if ($age >= 18) {
    echo "شما بزرگسال هستید";
} else {
    echo "شما کودک هستید";
}

// حلقه‌ها
for ($i = 0; $i < 5; $i++) {
    echo "شماره: $i <br>";
}

// آرایه‌ها
$colors = array("قرمز", "آبی", "سبز");
foreach ($colors as $color) {
    echo $color . "<br>";
}
?>
PHP از انواع مختلف کامنت‌گذاری پشتیبانی می‌کند: // برای تک خطی و /* */ برای چند خطی.

متغیرها و انواع داده در PHP

PHP از انواع داده مختلفی پشتیبانی می‌کند و نیازی به تعریف نوع داده هنگام تعریف متغیر نیست (loosely typed).

انواع داده اصلی:

مثال انواع داده در PHP
<?php
// String
$name = "علی";

// Integer
$age = 25;

// Float
$height = 1.75;

// Boolean
$isStudent = true;

// Array
$fruits = array("سیب", "پرتقال", "موز");

// Null
$var = null;

// Object
class Person {
    public $name;
    public $age;
}
$person = new Person();

// نمایش نوع متغیر
var_dump($name);
var_dump($age);
?>

توابع در PHP

توابع در PHP بلوک‌های کد قابل استفاده مجدد هستند که می‌توانند پارامتر دریافت کرده و مقداری را برگردانند.

نمونه توابع در PHP
<?php
// تابع ساده
function sayHello($name) {
    return "سلام " . $name;
}

// تابع با پارامتر پیش‌فرض
function calculateDiscount($price, $discount = 10) {
    return $price - ($price * $discount / 100);
}

// تابع با Type Hinting (PHP 7+)
function addNumbers(int $a, int $b): int {
    return $a + $b;
}

// استفاده از توابع
echo sayHello("علی"); // خروجی: سلام علی
echo calculateDiscount(1000); // خروجی: 900
echo addNumbers(5, 3); // خروجی: 8
?>
از PHP 7 به بعد، می‌توانید از Type Hinting برای مشخص کردن نوع پارامترها و مقدار برگشتی استفاده کنید.

شی‌گرایی در PHP

PHP از برنامه‌نویسی شی‌گرا (OOP) پشتیبانی کامل می‌کند و شامل ویژگی‌هایی مانند کلاس‌ها، وراثت، چندریختی و غیره است.

مثال شی‌گرایی در PHP
<?php
class Car {
    // ویژگی‌ها
    private $brand;
    private $model;
    
    // سازنده
    public function __construct($brand, $model) {
        $this->brand = $brand;
        $this->model = $model;
    }
    
    // متد
    public function getInfo() {
        return "خودرو: {$this->brand} مدل {$this->model}";
    }
}

// کلاس فرزند
class ElectricCar extends Car {
    private $batteryLife;
    
    public function __construct($brand, $model, $batteryLife) {
        parent::__construct($brand, $model);
        $this->batteryLife = $batteryLife;
    }
}

// استفاده از کلاس‌ها
$car = new Car("بنز", "2023");
echo $car->getInfo();
?>

کار با پایگاه داده در PHP

PHP قابلیت‌های قدرتمندی برای کار با پایگاه‌های داده مختلف، به‌ویژه MySQL، دارد.

مثال اتصال به پایگاه داده MySQL
<?php
// اتصال با PDO
try {
    $pdo = new PDO(
        "mysql:host=localhost;dbname=mydb;charset=utf8mb4",
        "username",
        "password"
    );
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // اجرای کوئری
    $stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
    $stmt->execute([1]);
    $user = $stmt->fetch(PDO::FETCH_ASSOC);
    
} catch(PDOException $e) {
    echo "خطا در اتصال: " . $e->getMessage();
}
?>
همیشه از PDO یا MySQLi با Prepared Statements برای جلوگیری از حملات SQL Injection استفاده کنید.

امنیت در PHP

امنیت در برنامه‌نویسی PHP بسیار مهم است. برخی از نکات امنیتی مهم عبارتند از:

مثال‌های امنیتی در PHP
<?php
// پاکسازی ورودی‌های کاربر
$userInput = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);

// رمزنگاری رمز عبور
$password = password_hash($userInput, PASSWORD_DEFAULT);

// بررسی رمز عبور
if (password_verify($userInput, $hashedPassword)) {
    echo "رمز عبور صحیح است";
}

// جلوگیری از XSS
$safeOutput = htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');
?>
همیشه از توابع امنیتی PHP مانند password_hash() برای ذخیره رمزهای عبور استفاده کنید.

فریم‌ورک‌های PHP

فریم‌ورک‌های PHP ابزارهایی قدرتمند برای توسعه سریع‌تر و مطمئن‌تر برنامه‌های وب هستند:

فریم‌ورک‌های محبوب:

  • Laravel - محبوب‌ترین فریم‌ورک PHP
  • Symfony - فریم‌ورک قدرتمند برای پروژه‌های enterprise
  • CodeIgniter - فریم‌ورک سبک و سریع
  • Yii - فریم‌ورک با کارایی بالا
Laravel به دلیل مستندات عالی و جامعه فعال، بهترین انتخاب برای شروع است.

بهترین شیوه‌های کدنویسی PHP

رعایت اصول و استانداردهای کدنویسی در PHP بسیار مهم است:

اصول مهم:

  1. استفاده از PSR (PHP Standards Recommendations)
  2. نام‌گذاری معنادار متغیرها و توابع
  3. مستندسازی کد با PHPDoc
  4. استفاده از Dependency Injection
  5. نوشتن تست‌های واحد
مثال کد تمیز در PHP
<?php
/**
 * کلاس مدیریت کاربران
 */
class UserManager
{
    private $db;

    /**
     * سازنده کلاس
     * @param PDO $database اتصال پایگاه داده
     */
    public function __construct(PDO $database)
    {
        $this->db = $database;
    }

    /**
     * افزودن کاربر جدید
     * @param string $username نام کاربری
     * @param string $email ایمیل
     * @return bool
     */
    public function addUser(string $username, string $email): bool
    {
        // کد افزودن کاربر
    }
}
?>

سرورهای توسعه محلی

  • XAMPP - محیط توسعه محلی شامل Apache, MySQL, PHP
  • WAMP - نسخه ویندوزی سرور محلی
  • MAMP - نسخه مک سرور محلی
  • Docker - کانتینرسازی برای محیط توسعه
مثال استفاده از Composer
# نصب یک پکیج جدید
composer require monolog/monolog

# نصب تمام وابستگی‌ها
composer install

# به‌روزرسانی وابستگی‌ها
composer update

موضوعات پیشرفته PHP

Namespaces و Autoloading

مثال استفاده از Namespace
<?php
namespace App\Controllers;

use App\Models\User;
use App\Services\AuthService;

class UserController
{
    private $authService;

    public function __construct(AuthService $authService)
    {
        $this->authService = $authService;
    }

    public function login(string $username, string $password): bool
    {
        return $this->authService->authenticate($username, $password);
    }
}
?>

Traits و Interfaces

مثال استفاده از Trait و Interface
<?php
interface LoggerInterface {
    public function log(string $message);
}

trait Timestampable {
    private $createdAt;

    public function setCreatedAt() {
        $this->createdAt = new DateTime();
    }
}

class FileLogger implements LoggerInterface {
    use Timestampable;

    public function log(string $message) {
        $this->setCreatedAt();
        file_put_contents('app.log', "[{$this->createdAt->format('Y-m-d H:i:s')}] $message\n", FILE_APPEND);
    }
}
?>

Exception Handling

مدیریت خطاها در PHP
<?php
class CustomException extends Exception {
    public function errorMessage() {
        return "خطای سفارشی: " . $this->getMessage();
    }
}

try {
    $file = fopen("test.txt", "r");
    if (!$file) {
        throw new CustomException("خطا در باز کردن فایل");
    }
} catch (CustomException $e) {
    echo $e->errorMessage();
} catch (Exception $e) {
    echo "خطای عمومی: " . $e->getMessage();
} finally {
    echo "این بخش همیشه اجرا می‌شود";
}
?>

بهینه‌سازی عملکرد PHP

بهینه‌سازی عملکرد در PHP برای ساخت برنامه‌های سریع و کارآمد ضروری است:

نکات کلیدی بهینه‌سازی:

  • استفاده از OPcache برای کش کردن کدهای کامپایل شده
  • بهینه‌سازی کوئری‌های پایگاه داده
  • استفاده از سیستم‌های کش مانند Redis یا Memcached
  • بهینه‌سازی تصاویر و فایل‌های رسانه‌ای
مثال استفاده از کش
<?php
// اتصال به Redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// ذخیره داده در کش
$redis->set('user:1', json_encode($userData), 3600); // کش برای یک ساعت

// بازیابی از کش
if ($redis->exists('user:1')) {
    $userData = json_decode($redis->get('user:1'), true);
} else {
    $userData = $database->getUserData(1);
    $redis->set('user:1', json_encode($userData), 3600);
}
?>

استقرار برنامه‌های PHP

استقرار صحیح برنامه‌های PHP نیازمند رعایت نکات مهمی است:

مراحل استقرار:

  1. تنظیم سرور وب (Apache/Nginx)
  2. پیکربندی PHP و تنظیمات php.ini
  3. تنظیم SSL و امنیت
  4. پیکربندی پایگاه داده
  5. تنظیم Cron Jobs
همیشه قبل از استقرار در محیط تولید، برنامه را در محیط Staging تست کنید.

کلمات کلیدی:

PHP برنامه‌نویسی PHP PHP 8 آموزش PHP برنامه‌نویسی سمت سرور توسعه وب پایگاه داده امنیت وب

جمع‌بندی:

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

Leave a Reply

Your email address will not be published. Required fields are marked *