<?php

class Node {
    
    // always initialize properties
    public mixed $data = null;
    public ?Node $next = null;
    
    public function __construct(mixed $data) {
        $this->data = $data;        
    }
}

class Queue {
    
    // always initialize properties
    public ?Node $head = null; 
    public ?Node $tail = null;
    public int $size = 0;
    
    public function enqueue(mixed $data) : void {       
        $node = new Node($data);          
        if ($this->size === 0) {
            $this->head = $node;            
        } else {
            $this->tail->next = $node;
        }
        $this->tail = $node;
        $this->size++;   
        
    }

    public function dequeue() : mixed {
        if ($this->size === 0) {
            return 'Queue empty';
        }
        $data = $this->head->data;
        $this->head = $this->head->next;
        $this->size--;
        if ($this->size === 0) {
            $this->tail = null;
        }
        return $data;
    }
}

$ll = new Queue();
echo 'dequeue(): ' . $ll->dequeue() . PHP_EOL;
for ($i = 1; $i < 4; $i++) { $ll->enqueue($i); }
var_dump($ll);
echo 'dequeue(): ' . $ll->dequeue() . PHP_EOL;
echo 'dequeue(): ' . $ll->dequeue() . PHP_EOL;
echo 'dequeue(): ' . $ll->dequeue() . PHP_EOL;
echo 'dequeue(): ' . $ll->dequeue() . PHP_EOL;
var_dump($ll);

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: