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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
dubasua
Отправлено: 31 Декабря, 2012 - 14:17:07
Post Id



Посетитель


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


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




Всем доброго времени суток и всех с наступающим новым годом, надо бы к празднику готовится, а я тут со своими детскими вопросами... Ну вот мне не понятно все же, почему нельзя использовать такой синтаксис
PHP:
скопировать код в буфер обмена
  1. Loader::getFullSpace('MySpace')::mymethod();

Ошибка: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
А вот так все работает
PHP:
скопировать код в буфер обмена
  1. $space = Loader::getFullSpace('MySpace');
  2. $space::mymethod();

Не хотелось бы все время предопределять переменные для статических методов
 
 Top
armancho7777777 Супермодератор
Отправлено: 31 Декабря, 2012 - 14:30:07
Post Id



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


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


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




Сталкивался.
Думаю, - особенности синтаксиса языка.
 
 Top
LIME
Отправлено: 31 Декабря, 2012 - 14:31:34
Post Id


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


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


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




что возвращает Loader::getFullSpace('MySpace')
?
 
 Top
armancho7777777 Супермодератор
Отправлено: 31 Декабря, 2012 - 14:31:50
Post Id



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


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


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




Хотя так сработает, даже со статическим методом:
PHP:
скопировать код в буфер обмена
  1. Loader::getFullSpace('MySpace')->mymethod();
 
 Top
OrmaJever Модератор
Отправлено: 31 Декабря, 2012 - 14:32:21
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




потому же почему и в php<5.4 нельзя написать так
PHP:
скопировать код в буфер обмена
  1. Loader::getFullSpace('MySpace')[0];

dubasua пишет:
T_PAAMAYIM_NEKUDOTAYIM

ого как написали)))


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
dubasua
Отправлено: 31 Декабря, 2012 - 14:36:01
Post Id



Посетитель


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


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




LIME пишет:
что возвращает Loader::getFullSpace('MySpace')
?


Есть несколько директорий с класами. Напрмер Loader::getFullSpace('Front') возвращяет Controllers\Kernel\Front, и паралельно подгружает этот файл если он не подключен
 
 Top
armancho7777777 Супермодератор
Отправлено: 31 Декабря, 2012 - 14:37:20
Post Id



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


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


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




OrmaJever пишет:
потому же почему и в php<5.4 нельзя написать так
PHP:
скопировать код в буфер обмена
  1. Loader::getFullSpace('MySpace')[0];

А причём тут это ?
У меня PHP 5.4.9
 
 Top
dubasua
Отправлено: 31 Декабря, 2012 - 14:38:20
Post Id



Посетитель


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


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




armancho7777777 пишет:
Loader::getFullSpace('MySpace')->mymethod();

Fatal error: Call to a member function mymethod() on a non-object in ...
 
 Top
armancho7777777 Супермодератор
Отправлено: 31 Декабря, 2012 - 14:40:39
Post Id



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


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


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




Не уточнил, думал догадаетесь.
Только в том случае, если Loader::getFullSpace('MySpace') возвращает объект.
(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. // ...
  3. public static function getFullSpace($MySpace)
  4. {
  5.         return new $MySpace;
  6. }
  7. // ...
  8.  
 
 Top
dubasua
Отправлено: 31 Декабря, 2012 - 14:43:17
Post Id



Посетитель


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


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




Сам по себе класс статический, он не возвращает объект
PHP:
скопировать код в буфер обмена
  1. private function __construct () {}

(Добавление)
Хотя возможно стоит пересмотреть политику статических классов......
 
 Top
armancho7777777 Супермодератор
Отправлено: 31 Декабря, 2012 - 14:49:49
Post Id



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


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


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




dubasua пишет:
Хотя возможно стоит пересмотреть политику статических классов......

Лучше пересмотрите свои знания по терминологии языка для начала.
 
 Top
dubasua
Отправлено: 31 Декабря, 2012 - 15:27:27
Post Id



Посетитель


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


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




Я просто не вижу смысл создавать объект. Не знаю как объяснить, ну например в квартире много комнат а пол один, для комнат можно создавать объекты потому как их много(у них разное количество окон, дверей), ($room = new Room;)а пол у них один на всех, и свойство $room->floor всегда и у всех будет одно и тоже значение, а таких вещей как пол (то что одно для всех) еще десятка два, так зачем их таскать за объектом, или зачем из этого делать объект, ведь он только для чтения, это как константа. его нужно считать один раз и все, тесть зачем перегружать? Это конечно не терминология языка, но я вижу примерно в таком свете.
(Добавление)
armancho7777777 пишет:
Только в том случае, если Loader::getFullSpace('MySpace') возвращает объект.

Так работает.
 
 Top
armancho7777777 Супермодератор
Отправлено: 31 Декабря, 2012 - 15:39:22
Post Id



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


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


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




Переопределять переменные Вы не хотите,
создавать объекты тоже...
Тогда перепишите сам интерпретатор, что ещё Вам посоветовать ))
 
 Top
dubasua
Отправлено: 31 Декабря, 2012 - 16:13:28
Post Id



Посетитель


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


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




А это идея Улыбка
С новым годом!
 
 Top
OrmaJever Модератор
Отправлено: 31 Декабря, 2012 - 16:20:03
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




armancho7777777 пишет:
А причём тут это ?

притом что синтаксис php ограничен, и исправляется очень слабо и редко.


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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB