it.vsesobe.ru

Web-технологии.

Php ООП Классы, наследование, пример.

Пример создания и наследования классов
<?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>';