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 » » Вопросы новичков » Метод в методе

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

1. zzzzzz - 19 Сентября, 2013 - 20:37:31 - перейти к сообщению
Здравствуйте.
PHP:
скопировать код в буфер обмена
  1.  
  2. class Add {
  3.        
  4.     function news($mysqli) {
  5.  
  6.         function view_form($mysqli) {
  7.  
  8.           print 2;
  9.         }
  10.        
  11.         function add_in_db($mysqli) {
  12.  
  13.             print 1;
  14.         }
  15.  
  16.     }
  17. }

Вопрос первый. Как называется модель при которой метод внутри метода? Есть ли у этого профессиональное обозначение? Или так и говорят метод внутри метода

Вопрос второй.
Почему такой вызов методов выдает ошибку Fatal error: Cannot redeclare view_form() (previously declared in...
PHP:
скопировать код в буфер обмена
  1. $add->news($mysqli)<-view_form($mysqli);
  2. $add->news($mysqli)<-add_in_db($mysqli);

если вызывать по одному то ошибки нет

и почему так
PHP:
скопировать код в буфер обмена
  1. $add->news($mysqli)<-view_form($mysqli);

а не так
PHP:
скопировать код в буфер обмена
  1. $add->news($mysqli)->view_form($mysqli);


Заранее благодарю
2. OrmaJever - 19 Сентября, 2013 - 20:56:16 - перейти к сообщению
zzzzzz пишет:
$add->news($mysqli)<-view_form($mysqli)

ого, видимо я много не знаю в этой жизни Не понял
3. zzzzzz - 19 Сентября, 2013 - 20:59:37 - перейти к сообщению
Это вы меня подкололи?
4. OrmaJever - 19 Сентября, 2013 - 21:17:31 - перейти к сообщению
нет, я сам удивился оператору <- и что вобще можно создавать метод в методе. Самому интересно мнение других Растерялся
5. zzzzzz - 19 Сентября, 2013 - 21:20:05 - перейти к сообщению
кстати так тоже работает
PHP:
скопировать код в буфер обмена
  1. $add->news($mysqli)-view_form($mysqli);
6. tuareg - 19 Сентября, 2013 - 21:41:53 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. class Add {
  3.        
  4.     function news($mysqli) {
  5.  
  6.         function view_form($mysqli) {
  7.  
  8.           print 2;
  9.         }
  10.        
  11.         function add_in_db($mysqli) {
  12.  
  13.             print 1;
  14.         }
  15.         return $this;
  16.  
  17.     }
  18. }
  19.  

Может так?
P.s А точно метод получается, а не функция?
7. avtor.fox - 19 Сентября, 2013 - 21:43:46 - перейти к сообщению
tuareg пишет:
P.s А точно метод получается, а не функция?

Там функции. Объявляются в данном случае при вызове A->news()
8. zzzzzz - 19 Сентября, 2013 - 21:47:37 - перейти к сообщению
return не помог
9. LIME - 19 Сентября, 2013 - 21:48:05 - перейти к сообщению
а вот эта <- означает меньше минус
ну и минус во втором случае
и вложенных фций нет в пыхе...причину выше указали(или следствие)
zzzzzz я восхищен))
10. armancho7777777 - 19 Сентября, 2013 - 21:50:28 - перейти к сообщению
Уже ответили...
11. zzzzzz - 19 Сентября, 2013 - 21:51:28 - перейти к сообщению
я не смог правильно интерпретировать сообщение об ошибке поэтому написал сюда
(Добавление)
Всем спасибо
12. armancho7777777 - 19 Сентября, 2013 - 21:54:14 - перейти к сообщению
zzzzzz, Да конечно можно:
PHP:
скопировать код в буфер обмена
  1.  
  2. function foo()
  3. {
  4.         if(!function_exists('bar'))
  5.         {
  6.                 function bar()
  7.                 {
  8.                 }
  9.         }
  10. }
  11.  

Но это - говнокод.
(Добавление)
zzzzzz пишет:
я не смог правильно интерпретировать сообщение

А надо было просто перевести в гугл-переводчике.
13. zzzzzz - 19 Сентября, 2013 - 22:21:28 - перейти к сообщению
Ну зачем вы обижаете, дауна из меня делаете
$add->news($mysqli)<-view_form($mysqli);
$add->news($mysqli)<-add_in_db($mysqli);

Сообщение:
Не можете переопределить view_form() ранее объявленный

Так как функция view_form сработала а вторая функция add_in_db нет (но блин я еще не знал что это функции) в сообщении говорится про первую функцию которая опять же напомню выполнилась нормально.

Так как мне сообщение об ошибке должно помочь с учетом что вызвав add_in_db я оказывается переопределяю первую?

Если после многолетних медитаций вы сразу понялb в чем тут фишка то поверьте таким как я это не явно видно.

Цитата:
А надо было просто перевести в гугл-переводчике.
14. LIME - 19 Сентября, 2013 - 22:30:35 - перейти к сообщению
zzzzzz пишет:
Ну зачем вы обижаете, дауна из меня делаете
это не мы...мы не виноваты))
zzzzzz пишет:
$add->news($mysqli)<-view_form($mysqli);
LIME пишет:
а вот эта <- означает меньше минус
15. OrmaJever - 19 Сентября, 2013 - 22:32:44 - перейти к сообщению
хух, прочитав коменты всё понял.
view_form и add_in_db просто функции, но они объвляются не сразу а когда вызывается Add::news(), отсюда и ошибка переопределения (после двух вызовов Add::news()), ну а с оператором всё ясно, он интерпретируется как $add->news($mysqli) < (-view_form($mysqli)).
Хух я думал я совсем от жизни отстал Закатив глазки

 

Powered by ExBB FM 1.0 RC1