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 :: ООП - я чайник, мне нужно помощь

 PHP.SU

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


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

> Без описания
Valeriya12
Отправлено: 05 Ноября, 2014 - 11:21:35
Post Id


Новичок


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


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




Я стараюсь написать простие методи, но как-то мне не получается. Что делаю не так?

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class db
  3.   {
  4.     function countup ($hername)
  5.     {
  6.     $a= "I love $hername";    
  7.      return $a;
  8.     }
  9.    
  10.     function dub()
  11.        {
  12.        self::countup("Lara");
  13.        $this->countup;
  14.        $b="I love Lucy and... ";
  15.        echo $b;
  16.        echo $this;
  17.        }
  18.    }
  19. ?>

(Отредактировано автором: 05 Ноября, 2014 - 11:22:31)

 
 Top
RickMan
Отправлено: 05 Ноября, 2014 - 12:01:09
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


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




А что вы именно этими методами хотите сделать?
 
 Top
Panoptik
Отправлено: 05 Ноября, 2014 - 12:52:41
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




Valeriya12 пишет:
function dub()
       {
       self::countup("Lara");
       $this->countup;
       $b="I love Lucy and... ";
       echo $b;
       echo $this;
       }
   }


раз ваш метод countup возвращает значение, то когда вызываете метод, нужно получить это значение в переменную

и второе: вызов метода без скобок вызовет у вас ошибку $this->countub;

если вы пользуетесь $this - это подразумевает что где-то за пределами этого класса, вы должны будете инстанциировать объект из класса оператором new;

статический же вызов db::countup("Lara"); можно осуществлять без создания экземпляра класса, но в этом случае в методе не должно быть $this

а вообще по хорошему модифиакторы методов должны явно указывать static, abstract, final, private, protected, public

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. class db
  4.   {
  5.     public static function staticCountup ($hername)
  6.     {
  7.          return "I love $hername";
  8.     }
  9.  
  10.     public function countup ($hername)
  11.     {
  12.          return "I love $hername";
  13.     }
  14.    
  15.     function dub()
  16.     {
  17.        $a = self::countup("Lara");
  18.        echo $a . '<br />';
  19.        $b="I love Lucy and... ";
  20.        echo $b;
  21.     }
  22. }
  23.  
  24. $db = new db;
  25. echo $db->countup('Kate');
  26.  
  27. $db->dub();
  28.  
  29. echo db::staticCountup('Jenifer');
  30.  

(Отредактировано автором: 05 Ноября, 2014 - 12:53:15)



-----
Just do it
 
 Top
DelphinPRO
Отправлено: 05 Ноября, 2014 - 12:54:44
Post Id



Активный участник


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


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




Valeriya12 пишет:
function countup ($hername)

всегда указывайте модификаторы доступа
PHP:
скопировать код в буфер обмена
  1. public function countup ($hername)


Valeriya12 пишет:
self::countup("Lara");

так обращаются к статическому методу. Который объявлен как static. Статический метод принадлежит классу, но не объекту.
PHP:
скопировать код в буфер обмена
  1. public static function countup ($hername)


Valeriya12 пишет:
$this->countup;

countup - это функция, нужны скобки (и параметр, раз уж он заявлен)


Этот метод возвращает значение, значит его нужно сохранить в переменную


Valeriya12 пишет:
echo $this;

$this - это объект. текущий объект, в котором написано это слово.

Чтобы использовать класс, нужно создать его экземпляр.


и вызывать его методы


Если только методы не статические, тогда они вызываются через имя класса (выше писал, что статические методы принадлежат классу)


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Valeriya12
Отправлено: 05 Ноября, 2014 - 21:15:15
Post Id


Новичок


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


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




RickMan пишет:
А что вы именно этими методами хотите сделать?


Разучивать ООП

@ Panoptik
Спасибо, я немножко отредактировала ваш код. Кажется все тут более или менее понятно.


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class db
  3.   {
  4.     public function countup ($hername)
  5.     {
  6.          return "I love $hername";
  7.     }
  8.    
  9.     function dub($secondname)
  10.     {
  11.        $b="I love $secondname and... ";
  12.        echo $b;
  13.            $a = self::countup("Lara");
  14.        echo $a . '<br />';
  15.     }
  16. }
  17.  
  18. $db = new db;
  19.  
  20. $db->dub("Lucy");
  21.  
  22.  
  23. ?>
  24.  


@DelphinPRO

я благодарю вас за шаг за шагом объяснения.
 
 Top
teddy
Отправлено: 05 Ноября, 2014 - 22:08:13
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


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




Весело тут Улыбка

Есть класс DB, у которого есть метод ДУБ, который может признаться в любви нескольким девушкам одновременно Улыбка
Прям class Lovelas)

Метод то правильно назвали, а вот класс не совсем, я думаю...

Ну а если серьезно, то советую почитать тут:
http://php.net/manual/ru/language.oop5.php

(Отредактировано автором: 05 Ноября, 2014 - 22:39:06)

 
 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