Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Fatal error: Cannot access empty property in

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Не могу понять в чём ошибка
8_Кирюха_8
Отправлено: 14 Января, 2017 - 03:14:12
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Янв. 2017  


Помог: 0 раз(а)




Изучаю курс на ютубе. У препода, вроде, всё так же и работает. А у меня свойства в массив не передаются
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class nameExc extends Exception {
  3.         function __construct($msg){
  4.                 $msg.= " name!";
  5.                 parent::__construct($msg);
  6.         }
  7. }
  8.  
  9. class loginExc extends Exception {
  10.         function __construct($msg){
  11.                 $msg.=" login";
  12.                 parent::__construct($msg);
  13.         }
  14. }
  15.  
  16. class passExc extends Exception {
  17.         function __construct($msg){
  18.                 $msg.=" password";
  19.                 parent::__construct($msg);
  20.         }
  21. }
  22.  
  23. abstract class AUser{
  24.                
  25.         abstract function showInfo();
  26. }
  27.  
  28. class User extends AUser{
  29.        
  30.         const INFO_TITLE="Данные пользователя: ";
  31.        
  32.         public $name;
  33.         public $login;
  34.         public $pass;
  35.        
  36.         function __construct($n="",$l="",$p=""){
  37.                 try{
  38.                         if($n==""){
  39.                                
  40.                                 throw new nameExc ("Введите:");
  41.                         }
  42.                         $this->name=$n;
  43.                         if($l==""){
  44.                                 throw new loginExc("Введите:");
  45.                         }
  46.                         $this->login=$l;
  47.                         if($p==""){
  48.                                 throw new passExc("Введите:");
  49.                         }
  50.                         $this->pass=$p;
  51.                        
  52.                 }catch(nameExc $e){
  53.                                 echo $e->getMessage();
  54.                 }catch(loginExc $e){
  55.                         echo $e->getMessage();
  56.                 }catch(passExc $e){
  57.                         echo $e->getMessage();
  58.                 }
  59.         }      
  60.                
  61.         function __clone(){
  62.                 $this->name="Guest";
  63.                 $this->login="quest";
  64.                 $this->pass="qwery";
  65.         }
  66.        
  67.  
  68.         function showInfo(){
  69.                 echo "<p>Name : ".$this->name."<br>";
  70.                 echo "Login : ".$this->login."<br>";
  71.                 echo "Password : ".$this->pass."<br>";
  72.         }
  73.        
  74.         function showTitle(){
  75.                 echo "<h3>".self::INFO_TITLE."<h3>";
  76.         }
  77.  
  78. }
  79.  
  80. interface ISuperUser{
  81.         function getInfo();
  82. }
  83.  
  84. class SuperUser extends User implements ISuperUser {
  85.         public $role;
  86.         function __construct($n,$l,$p,$r){
  87.                 parent::__construct($n,$l,$p);
  88.                 $this->role=$r;
  89.         }
  90.         function showInfo(){
  91.                 parent::showInfo();
  92.                 echo "Role : ".$this->role."<br>";
  93.         }
  94.         function getInfo(){
  95.                 $arr= array();
  96.                 foreach($this as $k->$v){
  97.                         $arr[$k] = $v;
  98.                 }
  99.                 return $arr;
  100.         }
  101. }
  102.  
  103. $user1= new User("Vasya","V","password");
  104.         $user1->showTitle();
  105.         $user1->showInfo();
  106.        
  107. $user2= new User("Petya","P","1234");
  108.         $user2->showTitle();
  109.         $user2->showInfo();
  110.        
  111. $user3= new User("Sasha","S","63445sgf");
  112.         $user3->showTitle();
  113.         $user3->showInfo();
  114.  
  115. $user4 = clone $user1;
  116.         $user4->showTitle();
  117.         $user4->showInfo();
  118.        
  119. $user5 = new superUser("Dasha","D","3213444","admin");
  120.         $user5->role="admin";
  121.         $user5->showTitle();
  122.         $user5->showInfo();
  123. print_r($user5->getInfo());    
  124.        
  125. ?>

Ругается на метод getInfo. как я понимаю
 
 Top
Sail
Отправлено: 16 Января, 2017 - 08:21:25
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




8_Кирюха_8, повнимательнее с конструкцией foreach().
 
 Top
8_Кирюха_8
Отправлено: 17 Января, 2017 - 00:15:50
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Янв. 2017  


Помог: 0 раз(а)




Sailповнимательней - это foreach не может перебрать свойства класса, или синтаксис неправильный? Не бей сильно, учусь только...
 
 Top
Строитель
Отправлено: 17 Января, 2017 - 00:21:05
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




8_Кирюха_8, синтаксис
PHP:
скопировать код в буфер обмена
  1. foreach($this as $k => $v){
  2.     $arr[$k] = $v;
  3. }
 
 Top
8_Кирюха_8
Отправлено: 17 Января, 2017 - 00:38:27
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Янв. 2017  


Помог: 0 раз(а)




Sail, прости дурака, разобрался. Совсем запутался с ооп)))
(Добавление)
Строитель, ага. В сотый раз просматривая код, я наконец понял. Спасибо
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB