Skip to content

Instantly share code, notes, and snippets.

@autumned
Created May 20, 2013 08:40
Show Gist options
  • Save autumned/5611086 to your computer and use it in GitHub Desktop.
Save autumned/5611086 to your computer and use it in GitHub Desktop.
test
<?php
class nameExp extends Exception{
function __construct($msg){
$msg .= " name!<br />";
parent::__construct($msg);
}
}
class loginExp extends Exception{
function __construct($msg){
$msg .= " login!<br />";/
parent::__construct($msg);
}
}
class passExp extends Exception{
function __construct($msg){
$msg .= " password!<br />";
parent::__construct($msg);
}
}
class User{
public $name;
public $login;
public $password;
function __construct($name = "", $login = "", $password = ""){
try{
if($name == "")
throw new nameExp("Вы не ввели");
$this->name = $name;
if($login == "")
throw new loginExp("Вы не ввели");
$this->login = $login;
if($password == "")
throw new passExp("Вы не ввели");
$this->password = $password;
}catch(nameExp $e){
echo "Error ", $e->getMessage();
}catch(loginExp $e){
echo "Error ", $e->getMessage();
}catch(passExp $e){
echo "Error ", $e->getMessage();
}
}
function __destruct(){
// echo "<br />Object deleted!<br />";
}
function __clone(){
$this->name = "Guest";
$this->login = "guest";
$this->password = "qwerty";
echo "<br />Object cloned!<br />";
}
function showInfo(){
echo "Name: $this->name <br />";
echo "Login: $this->login <br />";
echo "Password: $this->password <br /><br />";
}
}
class SuperUser extends User{
public $role;
function __construct($name, $login, $password, $role){
parent::__construct($name, $login, $password);
$this->role = $role;
}
function showInfo(){
parent::showInfo();
echo "Role: $this->role <br /><br />";
}
}
$user1 = new User("Guest 1", "username1", "qwerty1");
// $user1->showInfo();
$user2 = new User("Guest 2", "username2", "qwerty2");
// $user2->showInfo();
$user3 = new User("Guest 3", "username3", "qwerty3");
// $user3->showInfo();
$user4 = clone $user1;
// $user4->showInfo();
$user5 = new SuperUser("Guest 5","username5","qwerty5", "admin");
$user5->showInfo();
$user6 = new User("", "", "qwerty6");
// $user6->showInfo();
echo "<br /><br /><br />";
//unset($user4);
echo "work";
/*
ЗАДАНИЕ 8
- Сделайте все параметры конструктора класса User параметрами по умолчанию со значениями "пустая строка"("")
- В конструкторе класса User генерируйте исключение, если введены не все данные
- Опишите перехват исключения и выводите в браузер сообщение об ошибке
- Попробуйте создать экземпляр класса User без какого-либо параметра(-ов)
*/
/*
ЗАДАНИЕ 9
- Создайте константу класса User INFO_TITLE
- Присвойте константе INFO_TITLE строковое значение "Данные пользователя:"
- Обратитесь к константе INFO_TITLE перед вызовами метода showInfo()
- Запустите код и проверьте его работоспособность
- Создайте метод showTitle() в классе User
- Опишите метод showTitle(), чтобы он выводил в браузер значение константы INFO_TITLE
- Обратитесь к метод showTitle() перед вызовами метода showInfo()
*/
/*
ЗАДАНИЕ 10
- Создайте абстрактный класс AUser
- В абстрактном классе AUser объявите абстрактный метод showInfo()
- Обновите класс User, унаследовав его от абстрактного класса AUser
- Внесите в класс User необходимые изменения
- Запустите код и проверьте его работоспособность
*/
/*
ЗАДАНИЕ 11
- Создайте интерфейс ISuperUser
- В интерфейс ISuperUser объявите метод getInfo()
- Опишите метод getInfo() в классе SuperUser
- Метод getInfo() должен возвращать ассоциативный массив, в котором
именами ячеек являются имена свойств объекта, а значениями ячеек - значения свойств объекта
- Вызовите метод getInfo() для экземпляра класса SuperUser
- В цикле выведите данные, полученные с помощью метода getInfo()
*/
/*
ЗАДАНИЕ 12
- Опишите в классах User и SuperUser статические свойства для подсчета количества созданных объектов
- Присвойте этим свойствам начальные значения (0)
- В конструкторах инкрементируйте значения данных свойств
- После создания экземпляров классов User и SuperUser выведите в браузер количество тех и других объектов
*/
/*
ЗАДАНИЕ 13
- Опишите функцию checkObject(), которая принимает в качестве входящего параметра объект
- Проверьте Ваш объект, используя следующие условия:
Если объект является экземпляром класса SuperUser, выводите сообщение,
что данный пользователь обладает правами администратора
Если объект является экземпляром класса User, выводите сообщение,
что данный пользователь является обычным пользователем
Если объект не является ни тем, ни другим, выводите сообщение,
что данный пользователь - неизвестный пользователь
*/
/*
ЗАДАНИЕ 14
- В директории "oop" создайте файл "User.class.php"
- Перенесите описание класса User из файла "users.php" в файл "User.class.php"
- В директории "oop" создайте файл "SuperUser.class.php"
- Перенесите описание класса SuperUser из файла "users.php" в файл "SuperUser.class.php"
- Посторите те же действия для класса AUser и интерфейса ISuperUser
- В файле "users.php"(данный файл) опишите функцию __autoload(),
которая автоматически присоединяет файлы с описанием классов к файлу "users.php"
*/
/*
ЗАДАНИЕ 15
- Создайте свойство objNum, которое будет хранить порядковый номер объекта.
Подумайте, где лучше его создать?
- Внесите изменения в классе User (а может и в SuperUser?), которые будут присваивать свойству objNum,
порядковый номер объекта.
Подумайте, где и как лучше это сделать?
- В классе User (а может и в SuperUser?) опишите метод __toString()
- Данный метод должен возвращать строку в формате "Объект #objNum: name".
Например: "Объект #3: Василий Пупкин"
- Попробуйте преобразовать один из созданных Вами объектов в строку
*/
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment