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]   

> Без описания
HitechCraft
Отправлено: 24 Марта, 2014 - 19:01:03
Post Id


Новичок


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


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




Добрый день. Начал учить ООП, написал просто класс в котором содержится 1 функция и эта функция выводит слово. Мне нужно теперь из этого класса загнать переменную это функции в индексную страницу (чтобы переменную потом по всему сайту юзать).

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. class UserConst {
  4.  
  5. function group() {
  6. echo 'Администратор';
  7.  
  8. }
  9.  
  10. }
  11.  
  12. $use = new UserConst;
  13.  
  14. ?>


В индексную страницу ввожу

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. require 'путь до класса/класс.class.php';
  4. $const = $use->group();
  5. ?>
  6.  


Объявляю переменную в другом файле - ничего, просто пустое значение (если например поставить не $use->group(), а там любое слово, то выводит. Что я сделал не так.

(Отредактировано автором: 24 Марта, 2014 - 19:01:48)

 
 Top
Исильдур
Отправлено: 24 Марта, 2014 - 19:30:31
Post Id


Гость


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


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




Все работает.
Не следует создавать объект в том же файле что и класс.

PHP:
скопировать код в буфер обмена
  1.  
  2. //class.php
  3. <?PHP
  4.  
  5. class UserConst
  6. {
  7.  
  8.     public function group()
  9.     {
  10.         return 'Администратор';
  11.     }
  12.  
  13. }
  14.  


PHP:
скопировать код в буфер обмена
  1.  
  2. //index.php
  3. <?PHP
  4.  
  5. require 'class.php';
  6.  
  7. $use = new UserConst();
  8.  
  9. $const = $use->group();
  10.  
  11. echo $const;
  12.  
 
 Top
HitechCraft
Отправлено: 24 Марта, 2014 - 19:35:43
Post Id


Новичок


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


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




Благодарю) Извени, лайк поставить не могу, пишет что сообщений мало ((((
 
 Top
esterio
Отправлено: 25 Марта, 2014 - 10:46:02
Post Id



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


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


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




Исильдур пишет:
Не следует создавать объект в том же файле что и класс.

Почему?
 
 Top
Исильдур
Отправлено: 25 Марта, 2014 - 10:48:41
Post Id


Гость


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


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




esterio
Ну хотя бы потому, что в конструктор может понадобиться передать какие то данные.
 
 Top
esterio
Отправлено: 25 Марта, 2014 - 11:18:18
Post Id



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


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


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




а как такой конфиг
PHP:
скопировать код в буфер обмена
  1. // file interface.php
  2. interface Config
  3. {
  4.         public function getConfig();
  5. }
  6.  
  7. // file config.php
  8. class MyConfig implements Config
  9. {
  10.         public function getConfig()
  11.         {
  12.                 return array(
  13.                         'test' => 'Hello wordl'
  14.                 );
  15.         }
  16. }
  17.  
  18. return new MyConfig();
  19.  
  20. // file index.php
  21. include('interface.php');
  22. $config = include('config.php');
  23. var_dump($config);

этио всего лишь пример что есть разные ситуации
 
 Top
Исильдур
Отправлено: 25 Марта, 2014 - 11:31:57
Post Id


Гость


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


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




esterio
Я бы так делать не стал.
Если класс MyConfig реализует интерфейс конфиг, значит и подключать файл с интерфейсом нужно в классе, а не в индексном файле.
И опять же не вижу смысла возвращать объект.
До создания объекта дело может и не дойти, а в вашем случае он будет создаваться каждый раз.
А так ситуации разные бывают, микроскопом тоже можно гвозди заколачивать.
 
 Top
caballero
Отправлено: 25 Марта, 2014 - 11:40:23
Post Id


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


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


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




Цитата:
Если класс MyConfig реализует интерфейс конфиг, значит и подключать файл с интерфейсом нужно в классе, а не в индексном файле.

об автолоаде ничего не слышали?

впрочем не понятно на фига для конфига нужны классы да еще и с интерфейсами


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Исильдур
Отправлено: 25 Марта, 2014 - 12:01:44
Post Id


Гость


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


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




caballero пишет:
об автолоаде ничего не слышали?

Спасибо что просветили.
Исильдур пишет:
впрочем не понятно на фига для конфига нужны классы да еще и с интерфейсами

Пример с конфигурацией взят в целях демонстрации создания объекта.
 
 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