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 :: CLASS метод в методе [2]

 PHP.SU

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


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

> Без описания
kochan10
Отправлено: 28 Июня, 2010 - 15:43:36
Post Id


Гость


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


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




Вот! Правильно JustUserR говорит=)

(Отредактировано автором: 28 Июня, 2010 - 15:43:55)

 
 Top
JustUserR
Отправлено: 28 Июня, 2010 - 16:45:58
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




kochan10 пишет:
Вот! Правильно JustUserR говорит=)
Благодарю Улыбка На самом деле начиная с версии PHP 5.3 функции начинают становиться объектами первого рода - поскольку становиться доступной конструкция return function() {} и ей подобные то есть настоящие замыкание Но тем не менее в вышеуказанном примене даже с точки зрения новых возможностей указанные функции замыканиями не являются - а просто являются вложенными функциями вызываемыми из другой функции без реального сохранения контекста


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
ALEN
Отправлено: 28 Июня, 2010 - 17:48:13
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




kochan10
Тот пример которые Вы описали - это самый правильный, но меня другой интересовал, со вложенностью!

JustUserR
Пытаюсь найти простое решение, а вот вложенность, еще ни в каких документация не видел, с подробным описанием, чего и как. Конечно идеально избегать ее, это не сложно, но все же, что не запрещено, должно же как то реализоваться. Или я не прав?

(Отредактировано автором: 28 Июня, 2010 - 17:53:46)

 
 Top
Champion Супермодератор
Отправлено: 28 Июня, 2010 - 18:15:23
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




ALEN, если надо внутри метода написать функцию, которая будет нужна только внутри этого метода, то:
PHP:
скопировать код в буфер обмена
  1. function method()
  2. {
  3. if(!function_exists('foo')) { function foo() {.....} }
  4. ....
  5. }
Тогда и проблем с переопределением не будет.
 
 Top
ALEN
Отправлено: 28 Июня, 2010 - 20:45:09
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




Champion
Проблема не с определением, а с передачей в нее информации, без помощи аргументов функции...
 
 Top
Champion Супермодератор
Отправлено: 28 Июня, 2010 - 20:57:43
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




А почему нельзя передать параметр? Если нужны свойства класса, то функции можно передать $this.
 
 Top
ALEN
Отправлено: 28 Июня, 2010 - 21:12:17
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




Champion
В том-то и дело, что я ищу все способы...
А передача параметров - это самый простой и правильный способ, но я сейчас хочу понять, почему $this не желает во вложенный метод передаваться...
 
 Top
JustUserR
Отправлено: 29 Июня, 2010 - 16:10:29
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




ALEN пишет:
JustUserR
Пытаюсь найти простое решение, а вот вложенность, еще ни в каких документация не видел, с подробным описанием, чего и как. Конечно идеально избегать ее, это не сложно, но все же, что не запрещено, должно же как то реализоваться. Или я не прав?
Вы совершенно правы по поводу того что если имеется некоторая возможность и она явно не запрещена - то должен быть способ позволяющий использовать ее должным образом В данном случае проблема сводится к двум частям - во-первых PHP не поддерживает по умолчанию различные именные и пакетные пространства имен и контекстные области видимости - ограничиваясь лишь локальными и глобальными значениями соответственно - при этом классические представления функций не являются объектами первого рода и их использование внутри других функций является несколько неоднозначным - с одной стороны вложенная функция создается в локальном контексте и не может использоваться снаружи по имени - но с другой стороны эту функцию нельзя вернуть по ссылке как замыкание - и к тому же локальная функция может конфликтовать с именами глобальных функций То есть если рассматривать вложенные переменные в блоках кода то они разумеется являются объектами первого рода и с ними все понятно - они или перекрывают друг друга а для доступа к глобальными или межпакетным используется ключевое слово global - с классическими функциями же такая схема не работает хотя они и могут определяться динамически С использованием вложенных функций внутри класса являющихся по сути методами ситуация еще усложняется - поскольку по умолчанию не определено отношение этих функций к структуре класса
Сделовательно если вам хочется иметь набор вложенных или динамических функций то лучше использовать специальные функции первого рода - они называются lambda-функциями и создаются с помощью create_function - с ними уже можно работать как с переменными и они подчиняются всем правилам вложенности блоков и последовательности их интерпретации


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB