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
Форумы портала PHP.SU :: Версия для печати :: ООП - я чайник, мне нужно помощь
Форумы портала PHP.SU » » Вопросы новичков » ООП - я чайник, мне нужно помощь

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

1. Valeriya12 - 05 Ноября, 2014 - 11:21:35 - перейти к сообщению
Я стараюсь написать простие методи, но как-то мне не получается. Что делаю не так?

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. ?>
2. RickMan - 05 Ноября, 2014 - 12:01:09 - перейти к сообщению
А что вы именно этими методами хотите сделать?
3. Panoptik - 05 Ноября, 2014 - 12:52:41 - перейти к сообщению
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.  
4. DelphinPRO - 05 Ноября, 2014 - 12:54:44 - перейти к сообщению
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 - это функция, нужны скобки (и параметр, раз уж он заявлен)
PHP:
скопировать код в буфер обмена
  1. $this->countup('param');


Этот метод возвращает значение, значит его нужно сохранить в переменную
PHP:
скопировать код в буфер обмена
  1. $val = $this->countup('param');


Valeriya12 пишет:
echo $this;

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

Чтобы использовать класс, нужно создать его экземпляр.
PHP:
скопировать код в буфер обмена
  1. $db = new db();


и вызывать его методы
PHP:
скопировать код в буфер обмена
  1. $db->dub();


Если только методы не статические, тогда они вызываются через имя класса (выше писал, что статические методы принадлежат классу)
PHP:
скопировать код в буфер обмена
  1. db::staticMethodName();
5. Valeriya12 - 05 Ноября, 2014 - 21:15:15 - перейти к сообщению
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

я благодарю вас за шаг за шагом объяснения.
6. teddy - 05 Ноября, 2014 - 22:08:13 - перейти к сообщению
Весело тут Улыбка

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

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

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

 

Powered by ExBB FM 1.0 RC1