<?php
function exception_handler($exception) {
echo "Неперехваченное исключение: " , $exception->getMessage(), "\n";
}
set_exception_handler('exception_handler');
class User
{
protected $name,
$login,
$password;
public static $user_count = 0;
function __construct($name ,$login, $password)
{
$this->name = $name;
$this->login = $login;
$this->password = $password;
++self::$user_count;
/*echo "Класс - ". static::class ."<br>";*/
}
public function showInfo()
{
echo "Имя: {$this->name}<br>";
echo "Логин: {$this->login}<br>";
echo "Пароль: ******<br>";
}
public function __get($name)
{
if($name=='name') echo $this->name;
if($name=='login') echo $this->login;
}
public function __set($name, $value)
{
if($name=='name') $this->name=$value;
else if($name=='password') $this->password=$value;
else throw new Exception("Нет такого свойства", 1);
}
}
class SuperUser extends User
{
private $role;
public static $super_user_count = 0;
function __construct($name ,$login, $password, $role)
{
$this->role = $role;
parent::__construct($name ,$login, $password);
--static::$user_count;
++self::$super_user_count;
}
public function showInfo()
{
echo "Роль: {$this->role}<br>";
parent::showInfo();
}
public function getInfo()
{
echo'<pre>';
print_r(get_object_vars($this));
echo"</pre>";
}
}
$user = new SuperUser('Вася','Vasya','123','admin');
$user2 = new SuperUser('Маша','Masha','1234','manager');
$user->name = "Петя";
$user->showInfo();
$user->getInfo();
$user1 = new User('Вася','Vasya','123','admin');
echo 'Количество User '. User::$user_count . '<br>';
echo 'Количество SuperUser '. SuperUser::$super_user_count . '<br>';