🐘 PHP Basics
<?php
// Output
echo "Hello World!";
print "Hello Again";
// Variables
$name = "Alice";
$age = 25;
// Constants
define("SITE_NAME", "MaxonCodes");
// Data Types
$int = 42;
$float = 3.14;
$string = "Hello";
$bool = true;
$array = [1, 2, 3];
?>
🔀 Control Structures
<?php
// If Else
if ($age >= 18) {
echo "Adult";
} else {
echo "Minor";
}
// Switch
switch ($day) {
case "Mon": echo "Start of week"; break;
case "Fri": echo "Weekend soon"; break;
default: echo "Midweek";
}
// Loops
for ($i = 0; $i < 5; $i++) {
echo $i;
}
$nums = [10,20,30];
foreach ($nums as $n) {
echo $n;
}
?>
⚡ Functions
<?php
function greet($name) {
return "Hello $name!";
}
echo greet("Alice");
// Default Args
function add($a, $b = 10) {
return $a + $b;
}
echo add(5); // 15
?>
🏗️ OOP (Object-Oriented PHP)
<?php
class Car {
public $brand;
function __construct($brand) {
$this->brand = $brand;
}
function drive() {
echo "Driving $this->brand";
}
}
$car = new Car("Tesla");
$car->drive();
?>
📩 Handling Forms
<form method="post">
<input type="text" name="username">
<input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$user = $_POST['username'];
echo "Hello, " . htmlspecialchars($user);
}
?>
💾 MySQL with PDO
<?php
$dsn = "mysql:host=localhost;dbname=testdb";
$user = "root";
$pass = "";
try {
$pdo = new PDO($dsn, $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Insert
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->execute(["Alice", "alice@email.com"]);
// Fetch
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch()) {
echo $row['name'] . "<br>";
}
} catch (PDOException $e) {
echo "DB Error: " . $e->getMessage();
}
?>
🔒 Security Tips
<?php
// Prevent SQL Injection (use prepared statements)
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$email]);
// XSS Protection
echo htmlspecialchars($_POST['input']);
// Password Hashing
$hash = password_hash("mypassword", PASSWORD_BCRYPT);
if (password_verify("mypassword", $hash)) {
echo "Password match";
}
?>
🚀 Advanced PHP
<?php
// Namespaces
namespace MyApp;
class Utils {
static function hello() {
return "Hello World";
}
}
// Anonymous Functions
$square = function($n) { return $n * $n; };
echo $square(5);
// Type Declarations
function add(int $a, int $b): int {
return $a + $b;
}
// JSON Handling
$data = ["name" => "Alice", "age" => 25];
$json = json_encode($data);
echo $json;
// Composer Autoload (PSR-4)
// composer.json
{
"autoload": {
"psr-4": { "App\\": "src/" }
}
}
?>
🛠️ Sessions & Cookies
<?php
// Start Session
session_start();
// Set Session
$_SESSION['user'] = "Alice";
// Get Session
echo $_SESSION['user'];
// Destroy Session
session_unset();
session_destroy();
// Cookies
setcookie("username", "Alice", time() + 3600, "/");
// Read Cookie
if(isset($_COOKIE['username'])) {
echo $_COOKIE['username'];
}
?>
📂 File Handling
<?php
// Write File
$file = fopen("data.txt", "w");
fwrite($file, "Hello World!");
fclose($file);
// Read File
$file = fopen("data.txt", "r");
echo fread($file, filesize("data.txt"));
fclose($file);
// File Upload
if (isset($_FILES['file'])) {
$target = "uploads/" . basename($_FILES['file']['name']);
if(move_uploaded_file($_FILES['file']['tmp_name'], $target)) {
echo "File uploaded!";
}
}
?>
<form method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">Upload</button>
</form>
📧 Sending Email
<?php
$to = "user@example.com";
$subject = "Welcome!";
$message = "Thanks for joining MaxonCodes!";
$headers = "From: admin@maxoncodes.com";
if(mail($to, $subject, $message, $headers)) {
echo "Email sent!";
} else {
echo "Email failed!";
}
?>
🌐 APIs (cURL)
<?php
// cURL GET Request
$ch = curl_init("https://jsonplaceholder.typicode.com/posts/1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo $data['title'];
// cURL POST Request
$ch = curl_init("https://jsonplaceholder.typicode.com/posts");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
'title' => 'MaxonCodes',
'body' => 'Learning PHP APIs',
'userId' => 1
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
🔄 JSON Handling
<?php
// Encode
$user = ["name" => "Alice", "age" => 25];
$json = json_encode($user);
echo $json;
// Decode
$data = '{"name":"Bob","age":30}';
$obj = json_decode($data);
echo $obj->name; // Bob
?>
⚠️ Error Handling
<?php
// Try-Catch
try {
$pdo = new PDO("mysql:host=localhost;dbname=wrongdb", "root", "");
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
// Custom Error Handler
function customError($errno, $errstr) {
echo "Error [$errno]: $errstr";
}
set_error_handler("customError");
echo $undefinedVar; // triggers custom error
?>
💻 CLI (Command Line PHP)
# Run PHP script from CLI
php script.php
# Read arguments
<?php
echo $argv[1]; // first argument
?>
# Example: php script.php hello
# Output: hello
🛣️ Laravel Routes
// Basic Route
Route::get('/hello', function () {
return "Hello Laravel!";
});
// Route with Controller
Route::get('/users', [UserController::class, 'index']);
// Route with Params
Route::get('/user/{id}', function ($id) {
return "User ID: " . $id;
});
// Named Route
Route::get('/profile', [UserController::class, 'profile'])
->name('user.profile');
🧑💻 Controllers
// Create Controller
php artisan make:controller UserController
// Example Controller
class UserController extends Controller {
public function index() {
return User::all();
}
}
📦 Models & Migrations
// Create Model + Migration
php artisan make:model Post -m
// Migration Example
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
// Eloquent Example
Post::create(['title' => 'Hello', 'content' => 'Laravel!']);
$posts = Post::where('title', 'Hello')->get();
🔑 Authentication
// Laravel Breeze (Simple Auth)
composer require laravel/breeze --dev
php artisan breeze:install
// Socialite (Google, GitHub, Facebook)
composer require laravel/socialite
// Example in Controller
use Laravel\Socialite\Facades\Socialite;
public function redirectToGoogle() {
return Socialite::driver('google')->redirect();
}
public function handleGoogleCallback() {
$user = Socialite::driver('google')->user();
// Save user to DB
}
🌐 API Routes & JSON
// api.php
Route::get('/posts', [PostController::class, 'index']);
// Controller
public function index() {
return response()->json(Post::all());
}
// API Resource
php artisan make:resource PostResource
// Example Resource
class PostResource extends JsonResource {
public function toArray($request) {
return [
'id' => $this->id,
'title' => $this->title,
];
}
}
🛡️ Middleware
// Create Middleware
php artisan make:middleware CheckAdmin
// Example
public function handle($request, Closure $next) {
if(auth()->user()->role !== 'admin') {
return redirect('/');
}
return $next($request);
}
// Register in Kernel.php
protected $routeMiddleware = [
'admin' => \App\Http\Middleware\CheckAdmin::class,
];
// Use in Routes
Route::get('/admin', fn() => 'Admin Page')->middleware('admin');
📬 Queues & Jobs
// Create Job
php artisan make:job SendEmailJob
// Example Job
class SendEmailJob implements ShouldQueue {
public function handle() {
Mail::to("user@example.com")->send(new WelcomeMail());
}
}
// Dispatch Job
SendEmailJob::dispatch();
💡 Pro Tips
// Debugging
dd($variable); // Dump & Die
dump($variable); // Dump
// Artisan Shortcuts
php artisan tinker // interactive shell
php artisan migrate:fresh --seed // reset DB
// Caching
php artisan config:cache
php artisan route:cache
// Hashing with Argon2 (your project setup)
use Illuminate\Support\Facades\Hash;
$password = Hash::make('secret', ['memory' => 1024, 'time' => 2, 'threads' => 2]);