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]   

> Без описания
sillexo
Отправлено: 26 Декабря, 2011 - 20:07:47
Post Id


Новичок


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


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




Как можно передать через метод объекта, переменную в свойство объекта? Мой метод не работает...

document.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.         require_once("page.php");
  5.  
  6.         class Document {
  7.  
  8.                 public $title = '';
  9.  
  10.                 public function setTitle($title) {
  11.                         $this->title = $title;
  12.                 }
  13.  
  14.                 public function getTitle() {
  15.                         return $this->title;
  16.                 }
  17.  
  18.                 public function renderHead() {
  19.                         $head = '<title>'.$this->getTitle().'</title>';
  20.                         return $head;
  21.                 }
  22.  
  23.         }
  24.  
  25.  


page.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.         $title = 'Главная страница!';
  4.        
  5.         $Document = new Document;
  6.         $Document->setTitle($title);
  7.  
  8.  


Свойство $title остается пустым.
 
 Top
OrmaJever Модератор
Отправлено: 26 Декабря, 2011 - 20:18:30
Post Id



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


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


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




sillexo пишет:
Свойство $title остается пустым.

это вы как решили?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
sillexo
Отправлено: 28 Декабря, 2011 - 15:15:07
Post Id


Новичок


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


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




OrmaJever пишет:
это вы как решили?


Передаю на html страницу renderHead() и получаю <title></title>.

В методе setTitle() $title='Главная страница!', а в getTitle() $title=''.

(Отредактировано автором: 28 Декабря, 2011 - 15:17:18)

 
 Top
OrmaJever Модератор
Отправлено: 28 Декабря, 2011 - 15:20:09
Post Id



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


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


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




а можно код того как вы это вызываете? Просто клас написан правельно, и проблема здесь в другом


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
sillexo
Отправлено: 28 Декабря, 2011 - 15:36:41
Post Id


Новичок


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


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




Мне на html страницу index.php нужно передать $title = 'Главная страница!' из page.php. В document.php все части head (title, css, js) собираются в одно и рендерится...

index.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         require_once("document.php");
  3. ?>
  4.  
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7.  <head>
  8.  
  9. <?PHP
  10.        $Document = new Document;
  11.        echo $Document->renderHead();
  12. ?>
  13.  
  14.  </head>
  15.  
  16.  <body>
  17.        
  18.  </body>
  19. </html>

(Отредактировано автором: 28 Декабря, 2011 - 15:39:39)

 
 Top
lamozavrik
Отправлено: 28 Декабря, 2011 - 16:12:25
Post Id



Частый гость


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


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




sillexo пишет:
index.php
PHP:
скопировать код в буфер обмена
<?PHP
        require_once("document.php");
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 
<?PHP
       $Document = new Document;
       echo $Document->renderHead();
?>
 
 </head>
 
 <body>
       
 </body>
</html>


А можно вместе с этим всем увидеть в какой части скрипта Вы задаете имя страницы?
Потому, что тут не видно, что Вы это делаете. Тут вы создали экземпляр класса, а потом сразу рендерите, не задав значения свойству title. А так, как title по умолчанию пустой, то Вам и в шапке он приходит пустой! А должно было бы быть поидеи так:

PHP:
скопировать код в буфер обмена
  1.  
  2. $Document = new Document;
  3. $title = 'Главная страница';
  4. $Document->setTitle($title);
  5. echo $Document->renderHead();
  6.  

(Отредактировано автором: 28 Декабря, 2011 - 16:22:34)



-----
Ударим крепким сном по мукам совести!
 
 Top
sillexo
Отправлено: 28 Декабря, 2011 - 16:28:03
Post Id


Новичок


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


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




lamozavrik пишет:
А можно вместе с этим всем увидеть в какой части скрипта Вы задаете имя страницы?


Имя страницы я задаю в page.php

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.         $title = 'Главная страница!';
  4.  
  5.         $Document = new Document;
  6.         $Document->setTitle($title);
 
 Top
lamozavrik
Отправлено: 28 Декабря, 2011 - 16:29:38
Post Id



Частый гость


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


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




Можно целиком посмотреть на скрипт?
Я так понимаю, что Вы создаете экземпляр класса в файле page.php, там присваиваете свойству $title значение "Главная страница", а потом в файле index.php Вы создаёте еще один экземпляр и рендерите? Правильно я понял?

(Отредактировано автором: 28 Декабря, 2011 - 16:36:04)



-----
Ударим крепким сном по мукам совести!
 
 Top
sillexo
Отправлено: 28 Декабря, 2011 - 16:50:30
Post Id


Новичок


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


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




Вот весь код:

page.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.         $title = 'Главная страница!';
  4.         $css = 'css/style.css';
  5.         $js = 'js/script.js';
  6.  
  7.         $Document = new Document;
  8.         $Document->setTitle($title);
  9.         $Document->setStylesheet($css);
  10.         $Document->setJavascript($js);
  11.  
  12. ?>



document.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.         require_once("page.php");
  4.  
  5.         class Document {
  6.  
  7.                 public $title = '';
  8.                 public $css = '';
  9.                 public $js = '';
  10.  
  11.                 public function setTitle($title) {
  12.                         $this->title = $title;
  13.                 }
  14.  
  15.                 public function getTitle() {
  16.                         return $this->title;
  17.                 }
  18.  
  19.                 public function setStylesheet($css) {
  20.                         $this->css = $css;
  21.                 }
  22.  
  23.                 public function getStylesheet() {
  24.                         return $this->css;
  25.                 }
  26.  
  27.                 public function setJavascript($js) {
  28.                         $this->js = $js;
  29.                 }
  30.  
  31.                 public function getJavascript() {
  32.                         return $this-js;
  33.                 }
  34.  
  35.                 public function renderHead() {
  36.                         $head = '<title>'.$this->getTitle().'</title>';
  37.                         $head .= '<link type="text/css" rel="stylesheet" href="'.$this->getStylesheet().'" />';
  38.                         $head .= '<script type="text/javascript" src="'.$this->getJavascript().'"></script>';
  39.                         return $head;
  40.                 }
  41.  
  42.         }
  43.  
  44. ?>



index.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         require_once("document.php");
  3. ?>
  4.  
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7.  <head>
  8.  
  9.         <?PHP
  10.                 $Document = new Document;
  11.                 echo $Document->renderHead();
  12.         ?>
  13.  
  14.  </head>
  15.  
  16.  <body>
  17.        
  18.  </body>
  19. </html>
  20.  

(Добавление)
lamozavrik пишет:
Я так понимаю, что Вы создаете экземпляр класса в файле page.php, там присваиваете свойству $title значение "Главная страница", а потом в файле index.php Вы создаёте еще один экземпляр и рендерите? Правильно я понял?


Да, так. Все правильно. Просто не знаю как по другому.

(Отредактировано автором: 28 Декабря, 2011 - 16:52:42)

 
 Top
lamozavrik
Отправлено: 28 Декабря, 2011 - 16:57:46
Post Id



Частый гость


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


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




Попробуйте сделать так:
page.php

PHP:
скопировать код в буфер обмена
  1.  
  2. require_once("document.php");
  3.  
  4. $title = 'Главная страница!';
  5. $css = 'css/style.css';
  6. $js = 'js/script.js';
  7.  
  8. $Document = new Document;
  9. $Document->setTitle($title);
  10. $Document->setStylesheet($css);
  11. $Document->setJavascript($js);
  12.  


index.php

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.         require_once("page.php");
  4. ?>
  5.  
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  7. <html xmlns="http://www.w3.org/1999/xhtml">
  8.  <head>
  9.  
  10.         <?PHP
  11.                 echo $Document->renderHead();
  12.         ?>
  13.  
  14.  </head>
  15.  
  16.  <body>
  17.        
  18.  </body>
  19. </html>
  20.  


-----
Ударим крепким сном по мукам совести!
 
 Top
sillexo
Отправлено: 28 Декабря, 2011 - 17:20:50
Post Id


Новичок


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


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




lamozavrik пишет:
Попробуйте сделать так...


Спасибо, попробую...
 
 Top
DeepVarvar Супермодератор
Отправлено: 28 Декабря, 2011 - 18:53:35
Post Id



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


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


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




sillexo пишет:
Спасибо, попробую...
И ?...
 
 Top
lamozavrik
Отправлено: 28 Декабря, 2011 - 19:31:23
Post Id



Частый гость


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


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




Вот и мне интересно )


-----
Ударим крепким сном по мукам совести!
 
 Top
sillexo
Отправлено: 29 Декабря, 2011 - 18:49:02
Post Id


Новичок


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


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




Все прекрасно работает, всем кто откликнулся СПАСИБО!
 
 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