Toggle theme

PHP Snippets

Modern PHP programming patterns and features

Array Functions

php

Common PHP array operations

<?php

$fruits = ['apple', 'banana', 'orange', 'grape'];

// Array mapping
$upperFruits = array_map(function($fruit) {
    return strtoupper($fruit);
}, $fruits);

// Array filtering
$longFruits = array_filter($fruits, function($fruit) {
    return strlen($fruit) > 5;
});

// Array reduction
$fruitString = array_reduce($fruits, function($carry, $fruit) {
    return $carry . ', ' . $fruit;
}, 'Fruits: ');

// Array manipulation
$slicedFruits = array_slice($fruits, 1, 2);
$mergedArrays = array_merge($fruits, ['mango', 'kiwi']);
$uniqueFruits = array_unique($mergedArrays);

Classes and Objects

php

Object-oriented programming in PHP

<?php

class User {
    private $name;
    private $email;
    
    public function __construct(string $name, string $email) {
        $this->name = $name;
        $this->email = $email;
    }
    
    public function getName(): string {
        return $this->name;
    }
    
    public function setName(string $name): void {
        $this->name = $name;
    }
    
    public function getEmail(): string {
        return $this->email;
    }
    
    public static function fromArray(array $data): self {
        return new self($data['name'], $data['email']);
    }
}

Database Operations

php

PDO database interactions

<?php

class Database {
    private $pdo;
    
    public function __construct() {
        $this->pdo = new PDO(
            'mysql:host=localhost;dbname=myapp',
            'username',
            'password',
            [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
        );
    }
    
    public function getUser(int $id): ?array {
        $stmt = $this->pdo->prepare(
            'SELECT * FROM users WHERE id = :id'
        );
        $stmt->execute(['id' => $id]);
        return $stmt->fetch(PDO::FETCH_ASSOC) ?: null;
    }
    
    public function createUser(array $data): int {
        $stmt = $this->pdo->prepare(
            'INSERT INTO users (name, email) VALUES (:name, :email)'
        );
        $stmt->execute([
            'name' => $data['name'],
            'email' => $data['email']
        ]);
        return $this->pdo->lastInsertId();
    }
}

Error Handling

php

Exception handling and custom errors

<?php

class ValidationException extends Exception {}

class UserService {
    public function createUser(array $data): User {
        try {
            $this->validateData($data);
            
            $user = User::fromArray($data);
            $this->saveUser($user);
            
            return $user;
        } catch (ValidationException $e) {
            // Log validation error
            error_log('Validation failed: ' . $e->getMessage());
            throw $e;
        } catch (Exception $e) {
            // Log general error
            error_log('Error creating user: ' . $e->getMessage());
            throw new RuntimeException(
                'Could not create user',
                0,
                $e
            );
        }
    }
    
    private function validateData(array $data): void {
        if (empty($data['email'])) {
            throw new ValidationException('Email is required');
        }
        
        if (!filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
            throw new ValidationException('Invalid email format');
        }
    }
}