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 :: как решить задачу в MVC

 PHP.SU

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


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

> Без описания
Faab
Отправлено: 13 Августа, 2012 - 18:43:08
Post Id


Гость


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


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




Мне нужно из сессии часто читать одну переменную. Решил для гибкости создать родительский контроллер sescontroller, для тех контроллеров, где нужна эта переменная:

PHP:
скопировать код в буфер обмена
  1. public function before()       
  2.         {
  3.                         //initiation sessie
  4.                         $session = Session::instance();
  5.                         $login = $session->get('login', ''); //reading login from sessie
  6.                        
  7.                         $data = array(); //initiation of array data
  8.                         $data["login"] = $login;
  9.                 return parent::before();
  10.          }


Но, увы, все дочерние контроллеры дружно фвркают - не знаем мы такую переменную $data["login"].

В чём я заблуждаюсь?
 
 Top
caballero
Отправлено: 13 Августа, 2012 - 18:55:32
Post Id


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


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


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




а откуда они должны о ней узнать?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Мелкий Супермодератор
Отправлено: 13 Августа, 2012 - 18:56:11
Post Id



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


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


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




Faab пишет:
В чём я заблуждаюсь?

В областях видимости.
parent::что-то только вызывает метод, на области видимости локальных переменных никак не влияет.

Вы же не удивляетесь, почему:
PHP:
скопировать код в буфер обмена
  1. function foo() {
  2. var_dump($some);
  3. }
  4. function bar() {
  5. $some='some string';
  6. foo();
  7. }
  8. bar();

Скажет undefined variable?

Пишите в $this, при том, это поле должно быть объявлено public или protected в базовом классе. Или передавайте аргументом.


-----
PostgreSQL DBA
 
 Top
Faab
Отправлено: 13 Августа, 2012 - 19:03:11
Post Id


Гость


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


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




Разве переменная не наследуется, если я прописываю

PHP:
скопировать код в буфер обмена
  1. class Controller_Page extends Sescontroller ....


Называется, ткнул палцем в потолок. Как тогда можно решить мне эту задачку?

Просто, когда я 4 раза прописываю одно и тоже - мне начинают терзать сомнения, что что-то нужно вынести. Ткну ещё раз: создать модель? Хотя нет, всё равно к ней обращаться так же 4 раза .. .


(Добавление)
Мелкий пишет:

Пишите в $this, при том, это поле должно быть объявлено public или protected в базовом классе. Или передавайте аргументом.


Можно простой пример?

(Отредактировано автором: 13 Августа, 2012 - 19:08:50)

 
 Top
caballero
Отправлено: 13 Августа, 2012 - 19:21:42
Post Id


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


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


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




Цитата:
Можно простой пример?

пытаешся городить MVC и даже не знаешь как объявить переменную-член класса?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Faab
Отправлено: 13 Августа, 2012 - 19:34:04
Post Id


Гость


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


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




caballero пишет:
переменная-член класса


Спасибо, за подсказку. Могу ли я базироваться на этот пример, при поиске решения?

PHP:
скопировать код в буфер обмена
  1. class A {
  2.     function foo() {
  3.       if ( isset ($this)) {
  4.       echo '$this определена (';
  5.       echo get_class($this);
  6.       echo ")\n";
  7.      } else { echo "\$this не определена.\n"; }
  8.    }
  9. }
  10.  
  11. $a = new A();

(Отредактировано автором: 13 Августа, 2012 - 19:38:34)

 
 Top
caballero
Отправлено: 13 Августа, 2012 - 19:39:57
Post Id


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


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


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




на вот этот бред
if ( isset ($this))
базироватся проблематично.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Faab
Отправлено: 13 Августа, 2012 - 19:42:41
Post Id


Гость


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


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




Когда читаешь книгу банды четырёх, то отдельными кусочками вроде понятно. Понятно что такое интерфейс, понятно что такое экземпляр класса... А вот соединить это всё в уме и понять ЭТО воедино, жесть...
(Добавление)
caballero пишет:
на вот этот бред
if ( isset ($this))
базироватся проблематично.


Язычок Давай по очереди: сначало я должен объявить статическую переменную члена класса, в которой будет храниться login, так?
(Добавление)
А я если я объявлю следующее:

PHP:
скопировать код в буфер обмена
  1.         class Seslog
  2.         {
  3.                 function __construct()
  4.                 {
  5.                         //initiation sessie
  6.                         $session = Session::instance();
  7.                         $login = $session->get('auth_login', ''); //reading login from sessie
  8.                        
  9.                         $data = array(); //initiatie van array data
  10.                         $data["login"] = $login;
  11.                 }
  12.    }
 
 Top
DlTA
Отправлено: 13 Августа, 2012 - 21:13:34
Post Id



Постоянный участник


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


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




Faab пишет:
А я если я объявлю следующее:

а что изменилось?
обращения к свойствам объекта серавно нет
 
 Top
DelphinPRO
Отправлено: 13 Августа, 2012 - 21:22:30
Post Id



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


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


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




члены класса так объявляются


Обращение внутри класса
PHP:
скопировать код в буфер обмена
  1. class A {
  2.   public $foo;
  3.  
  4.   function bar(){
  5.     $this->foo = 123;
  6.     $variable = 2;
  7.   }
  8. }


Обращение из вне

PHP:
скопировать код в буфер обмена
  1. $a = new A;
  2. echo $a->foo;
  3. echo $a->variable; // Ошибка - нет такого члена
  4.  


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
caballero
Отправлено: 13 Августа, 2012 - 21:53:51
Post Id


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


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


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




Цитата:
Когда читаешь книгу банды четырёх, то отдельными кусочками вроде понятно.

Читать надо документацию по языку и основы ООП а не заумные книги. Начни с учебника Котерова например.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Faab
Отправлено: 14 Августа, 2012 - 10:01:40
Post Id


Гость


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


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




Почему выскакивает ошибка?


syntax error, unexpected T_CLASS, expecting T_FUNCTION
 
 Top
DlTA
Отправлено: 14 Августа, 2012 - 10:57:49
Post Id



Постоянный участник


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


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




а существует класс Mol() ?
в сообщении говорится что существует только такая функция
 
 Top
Faab
Отправлено: 14 Августа, 2012 - 11:14:18
Post Id


Гость


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


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




Да, есть. Но я пытаюсь обратиться к нему в внутри другого класса.

Ладно, буду дальше читать... я пока что-то явно не освоил.
 
 Top
caballero
Отправлено: 14 Августа, 2012 - 11:14:42
Post Id


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


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


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




Цитата:
в сообщении говорится что существует только такая функция

в сообщении говорится что ожидается функция.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 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