PHP

PHP Cheat Sheet

This PHP cheat sheet provides a reference for quickly looking up the correct syntax for the code you use most

Miscellaneous

Runtime defined Constants

define("CURRENT\_DATE", date('Y-m-d'));
// One possible representation
echo CURRENT_DATE;   # => 2021-01-05
# => CURRENT\_DATE is: 2021-01-05
echo 'CURRENT\_DATE is: ' . CURRENT_DATE; 

fopen() mode

- -
r Read
r+ Read and write, prepend
w Write, truncate
w+ Read and write, truncate
a Write, append
a+ Read and write, append

Regular expressions

$str = "Visit Quickref.me";
echo preg\_match("/qu/i", $str); # => 1

See: Regex in PHP

Nullsafe Operator

// As of PHP 8.0.0, this line:
$result = $repo?->getUser(5)?->name;
// Equivalent to the following code:
if (is\_null($repo)) {
    $result = null;
} else {
    $user = $repository->getUser(5);
    if (is\_null($user)) {
        $result = null;
    } else {
        $result = $user->name;
    }
}

See also: Nullsafe Operator

Custom exception

class MyException extends Exception {
    // do something
}

Usage

try {
    $condition = true;
    if ($condition) {
        throw new MyException('bala');
    }
} catch (MyException $e) {
    // Handle my exception
}

Exception in PHP 8.0

$nullableValue = null;
try {
    $value = $nullableValue ?? throw new InvalidArgumentException();
} catch (InvalidArgumentException) { // Variable is optional
    // Handle my exception
    echo "print me!";
}

Basic error handling

try {
    // Do something
} catch (Exception $e) {
    // Handle exception
} finally {
    echo "Always print!";
}

PHP Classes

Interface

interface Foo 
{
    public function doSomething();
}
interface Bar
{
    public function doSomethingElse();
}
class Cls implements Foo, Bar 
{
    public function doSomething() {}
    public function doSomethingElse() {}
}

Magic Methods

class MyClass
{
    // Object is treated as a String
    public function \_\_toString()
 {
        return $property;
    }
    // opposite to \_\_construct()
    public function \_\_destruct()
 {
        print "Destroying";
    }
}

Classes variables

class MyClass
{
    const MY\_CONST       = 'value';
    static $staticVar    = 'static';
    // Visibility
    public static $var1  = 'pubs';
    // Class only
    private static $var2 = 'pris';
    // The class and subclasses
    protected static $var3 = 'pros';
    // The class and subclasses
    protected $var6      = 'pro';
    // The class only
    private $var7        = 'pri';  
}

Access statically

echo MyClass::MY\_CONST;   # => value
echo MyClass::$staticVar; # => static

Inheritance

class ExtendClass extends SimpleClass
{
    // Redefine the parent method
    function displayVar()
 {
        echo "Extending class\n";
        parent::displayVar();
    }
}
$extended = new ExtendClass();
$extended->displayVar();

Constructor

class Student {
    public function \_\_construct($name) {
        $this->name = $name;
    }
      public function print() {
        echo "Name: " . $this->name;
    }
}
$alex = new Student("Alex");
$alex->print();    # => Name: Alex

PHP Functions

Arrow Functions

$y = 1;

$fn1 = fn($x) => $x + $y;
// equivalent to using $y by value:
$fn2 = function ($x) use ($y) {
    return $x + $y;
};
echo $fn1(5);   # => 6
echo $fn2(5);   # => 6

Default parameters

function coffee($type = "cappuccino")
{
    return "Making a cup of $type.\n";
}
# => Making a cup of cappuccino.
echo coffee();
# => Making a cup of .
echo coffee(null);
# => Making a cup of espresso.
echo coffee("espresso");

Recursive functions

function recursion($x)
{
    if ($x < 5) {
        echo "$x";
        recursion($x + 1);
    }
}
recursion(1);  # => 1234

Anonymous functions

$greet = function($name)
{
    printf("Hello %s\r\n", $name);
};
$greet('World'); # => Hello World
$greet('PHP');   # => Hello PHP

Variable functions

function bar($arg = '')
{
    echo "In bar(); arg: '$arg'.\n";
}
$func = 'bar';
$func('test'); # => In bar(); arg: test

Void functions

// Available in PHP 7.1
function voidFunction(): void
{
    echo 'Hello';
    return;
}
voidFunction();  # => Hello

Nullable return types

// Available in PHP 7.1
function nullOrString(int $v) : ?string
{
    return $v % 2 ? "odd" : null;
}
echo nullOrString(3);       # => odd
var\_dump(nullOrString(4));  # => NULL

See: Nullable types

Return types

// Basic return type declaration
function sum($a, $b): float {/\*...\*/}
function get\_item(): string {/\*...\*/}
class C {}
// Returning an object
function getC(): C { return new C; }

Returning values

function square($x)
{
    return $x * $x;
}
echo square(4);  # => 16

PHP Loops

foreach

$a = ['foo' => 1, 'bar' => 2];
# => 12
foreach ($a as $k) {
    echo $k;
}

See: Array iteration

continue

# => 1235
for ($i = 1; $i <= 5; $i++) {
    if ($i === 4) {
        continue;
    }
    echo $i;
}

break

# => 123
for ($i = 1; $i <= 5; $i++) {
    if ($i === 4) {
        break;
    }
    echo $i;
}

for i

# => 12345
for ($i = 1; $i <= 5; $i++) {
    echo $i;
}

do while

$i = 1;
# => 12345
do {
    echo $i++;
} while ($i <= 5);

while

$i = 1;
# => 12345
while ($i <= 5) {
    echo $i++;
}

PHP Conditionals

Match expressions

$age = 23;
$result = match (true) {
    $age >= 65 => 'senior',
    $age >= 25 => 'adult',
    $age >= 18 => 'young adult',
    default => 'kid',
};
echo $result; # => young adult

Match

$statusCode = 500;
$message = match($statusCode) {
  200, 300 => null,
  400 => 'not found',
  500 => 'server error',
  default => 'known status code',
};
echo $message; # => server error

See: Match

Ternary operator

# => Does
print (false ? 'Not' : 'Does');
$x = false;
# => Does
print($x ?: 'Does');
$a = null;
$b = 'Does print';
# => a is unset
echo $a ?? 'a is unset';
# => print
echo $b ?? 'b is unset';

Switch

$x = 0;
switch ($x) {
    case '0':
        print "it's zero";
        break; 
    case 'two':
    case 'three':
        // do something
        break;
    default:
        // do something
}

If elseif else

$a = 10;
$b = 20;
if ($a > $b) {
    echo "a is bigger than b";
} elseif ($a == $b) {
    echo "a is equal to b";
} else {
    echo "a is smaller than b";
}

PHP Operators

Bitwise

- -
& And
| Or (inclusive or)
^ Xor (exclusive or)
~ Not
<< Shift left
>> Shift right

Logical

- -
and And
or Or
xor Exclusive or
! Not
&& And
|| Or

Comparison

- -
== Equal
=== Identical
!= Not equal
<> Not equal
!== Not identical
< Less than
> Greater than
<= Less than or equal
>= Greater than or equal
<=> Less than/equal/greater than

Assignment

- -
a += b Same as a = a + b
a -= b Same as a = a – b
a *= b Same as a = a * b
a /= b Same as a = a / b
a %= b Same as a = a % b

Arithmetic

- -
+ Addition
- Subtraction
* Multiplication
/ Division
% Modulo
** Exponentiation

PHP Arrays

Splat Operator

function foo($first, ...$other) {
    var\_dump($first); # => a
      var\_dump($other); # => ['b', 'c']
}
foo('a', 'b', 'c' /\*, ...\*/ );
// or
function foo($first, string ...$other){}

Into functions

$array = [1, 2];
function foo(int $a, int $b) {
    echo $a; # => 1
      echo $b; # => 2
}
foo(...$array);

Concatenate arrays

$a = [1, 2];
$b = [3, 4];
// PHP 7.4 later
# => [1, 2, 3, 4]
$result = [...$a, ...$b];

Key iteration

$arr = ["foo" => "bar", "bar" => "foo"];
foreach ( $arr as $key => $value )
{
      echo "key: " . $key . "\n";
    echo "val: {$arr[$key]}\n";
}

Value iteration

$colors = array('red', 'blue', 'green');
foreach ($colors as $color) {
    echo "Do you like $color?\n";
}

Indexing iteration

$array = array('a', 'b', 'c');
$count = count($array);
for ($i = 0; $i < $count; $i++) {
    echo "i:{$i}, v:{$array[$i]}\n";
}

Multi type

$array = array(
    "foo" => "bar",
    42    => 24,
    "multi" => array(
         "dim" => array(
             "a" => "foo"
         )
    )
);
# => string(3) "bar"
var\_dump($array["foo"]);
# => int(24)
var\_dump($array[42]);    
# => string(3) "foo"
var\_dump($array["multi"]["dim"]["a"]);

Multi array

$multiArray = [ 
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];
print\_r($multiArray[0][0]) # => 1
print\_r($multiArray[0][1]) # => 2
print\_r($multiArray[0][2]) # => 3

Defining

$a1 = ["hello", "world", "!"]
$a2 = array("hello", "world", "!");
$a3 = explode(",", "apple,pear,peach");

#Mixed int and string keys

$array = array(
    "foo" => "bar",
    "bar" => "foo",
    100   => -100,
    -100  => 100,
);
var\_dump($array);

#Short array syntax

$array = [
    "foo" => "bar",
    "bar" => "foo",
];

PHP Strings

Manipulation

$s = "Hello Phper";
echo strlen($s);       # => 11
echo substr($s, 0, 3); # => Hel
echo substr($s, 1);    # => ello Phper
echo substr($s, -4, 3);# => hpe
echo strtoupper($s);   # => HELLO PHPER
echo strtolower($s);   # => hello phper
echo strpos($s, "l");      # => 2
var\_dump(strpos($s, "L")); # => false

See: String Functions

Multi-line

$str = "foo";
// Uninterpolated multi-liners
$nowdoc = <<<'END'
Multi line string
$str
END;
// Will do string interpolation
$heredoc = <<<END
Multi line
$str
END;

String

# => '$String'
$sgl\_quotes = '$String';
# => 'This is a $String.'
$dbl\_quotes = "This is a $sgl\_quotes.";
# => a tab character.
$escaped   = "a \t tab character.";
# => a slash and a t: \t
$unescaped = 'a slash and a t: \t';

PHP Types

Iterables

function bar(): iterable {
    return [1, 2, 3];
}
function gen(): iterable {
    yield 1;
    yield 2;
    yield 3;
}
foreach (bar() as $value) {
    echo $value;   # => 123
} 

Null

$a = null;
$b = 'Hello php!';
echo $a ?? 'a is unset'; # => a is unset
echo $b ?? 'b is unset'; # => Hello php
$a = array();
$a == null    # => true
$a === null   # => false
is\_null($a)   # => false

Float (Double)

$float1 = 1.234;
$float2 = 1.2e7;
$float3 = 7E-10;
$float4 = 1\_234.567;  // as of PHP 7.4.0
var\_dump($float4);    // float(1234.567)
$float5 = 1 + "10.5";   # => 11.5
$float6 = 1 + "-1.3e3"; # => -1299

Integer

$int1 = 28;    # => 28
$int2 = -32;   # => -32
$int3 = 012;   # => 10 (octal)
$int4 = 0x0F;  # => 15 (hex)
$int5 = 0b101; # => 5 (binary)
# => 2000100000 (decimal, PHP 7.4.0)
$int6 = 2\_000\_100\_000;

See also: Integers

Boolean

$boolean1 = true;
$boolean2 = TRUE;
$boolean3 = false;
$boolean4 = FALSE;
$boolean5 = (boolean) 1;   # => true
$boolean6 = (boolean) 0;   # => false

Boolean are case-insensitive

Getting Started

Classes

class Student {
    public function \_\_construct($name) {
        $this->name = $name;
    }
}
$alex = new Student("Alex");

See: Classes

Constants

const MY\_CONST = "hello";
echo MY_CONST;   # => hello
# => MY\_CONST is: hello
echo 'MY\_CONST is: ' . MY_CONST; 

Comments

# This is a one line shell-style comment
// This is a one line c++ style comment
/\* This is a multi line comment
 yet another line of comment \*/

Functions

function add($num1, $num2 = 1) {
    return $num1 + $num2;
}
echo add(10);    # => 11
echo add(10, 5); # => 15

See: Functions

Include

#vars.php

<?php // begin with a PHP open tag.
$fruit = 'apple';
echo "I was imported";
return 'Anything you like.';
?>

#test.php

<?php
include 'vars.php';
echo $fruit . "\n";   # => apple
/\* Same as include,
cause an error if cannot be included\*/
require 'vars.php';
// Also works
include('vars.php');
require('vars.php');
// Include through HTTP
include 'http://x.com/file.php';
// Include and the return statement
$result = include 'vars.php';
echo $result;  # => Anything you like.
?>

Operators

$x = 1;
$y = 2;
$sum = $x + $y;
echo $sum;   # => 3

See: Operators

Arrays

$num = [1, 3, 5, 7, 9];
$num[5] = 11;
unset($num[2]);    // Delete variable
print\_r($num);     # => 1 3 7 9 11
echo count($num);  # => 5

See: Arrays

Strings

$url = "quickref.me";
echo "I'm learning PHP at $url";
// Concatenate strings
echo "I'm learning PHP at " . $url;
$hello = "Hello, ";
$hello .= "World!";
echo $hello;   # => Hello, World!

See: Strings

Variables

$boolean1 = true;
$boolean2 = True;
$int = 12;
$float = 3.1415926;
unset($float);  // Delete variable
$str1 = "How are you?";
$str2 = 'Fine, thanks';

See: Types

hello.php

<?php // begin with a PHP open tag.
echo "Hello World\n";
print("Hello quickref.me");
?>

PHP run command

$ php hello.php