public function __construct()
    {
        if (self::$instancesCount++ >= 5) {
            throw new Exception(sprintf('Only %d instances of ' . __CLASS__ . ' are allowed', self::MAX_INSTANCES));
        }
    }
    /* public function getInstancesCount()
    	{
    		return self::$instancesCount;
    	} */
    public static function getInstancesCount()
    {
        return self::$instancesCount;
    }
}
$i1 = new InstanceCounter();
//echo $i1->getInstancesCount(), PHP_EOL;
echo InstanceCounter::getInstancesCount(), PHP_EOL;
$i2 = new InstanceCounter();
//echo $i2->getInstancesCount(), PHP_EOL;
echo InstanceCounter::getInstancesCount(), PHP_EOL;
$i3 = new InstanceCounter();
// echo $i3->getInstancesCount(), PHP_EOL;
echo InstanceCounter::getInstancesCount(), PHP_EOL;
$i4 = new InstanceCounter();
//echo $i4->getInstancesCount(), PHP_EOL;
echo InstanceCounter::getInstancesCount(), PHP_EOL;
$i5 = new InstanceCounter();
//echo $i5->getInstancesCount(), PHP_EOL;
echo InstanceCounter::getInstancesCount(), PHP_EOL;
var_dump([$i1->getInstancesCount(), $i2->getInstancesCount(), $i3->getInstancesCount(), $i4->getInstancesCount(), $i5->getInstancesCount()]);
<?php

class InstanceCounter
{
    const MAX_INSTANCES = 5;
    private static $instacesCount = 0;
    public function __construct()
    {
        if (self::getInstancesCount() >= self::MAX_INSTANCES) {
            throw new Exception('Max instances count reached');
        }
        self::$instacesCount++;
    }
    public static function getInstancesCount()
    {
        return self::$instacesCount;
    }
}
new InstanceCounter();
new InstanceCounter();
new InstanceCounter();
new InstanceCounter();
new InstanceCounter();
var_dump(InstanceCounter::getInstancesCount());