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
Форумы портала PHP.SU :: Версия для печати :: Не могу вызвать публичную функцию вне класса
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Не могу вызвать публичную функцию вне класса

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

1. Minigun - 18 Октября, 2011 - 20:20:03 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <? class page{
  2. private $columns=5;
  3. public function container(){
  4.  for($i=1;$i<=$columns;$i++){
  5.       echo '<div class="mainstripe">';
  6.       $num=40-$columns+$i;
  7.           for($j=$i;$j<=$num;$j+=$columns){
  8.              echo '<div class="picture">'.$j.'</div>';
  9.             }
  10.                 echo '</div>';
  11.     }
  12. }
  13.  
  14. }
  15. ?>


CODE (html):
скопировать код в буфер обмена
  1. <div class="container">
  2.    <?
  3.     $this -> container();
  4.        
  5.    ?>
  6.    </div>
2. Champion - 18 Октября, 2011 - 20:34:18 - перейти к сообщению
навреное $this - это не объект этого класса
3. Minigun - 18 Октября, 2011 - 20:41:03 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <? class page{
  3. $this=new page();
  4. private $columns=5;
  5. public function container(){
  6.  for($i=1;$i<=$columns;$i++){
  7.       echo '<div class="mainstripe">';
  8.       $num=40-$columns+$i;
  9.           for($j=$i;$j<=$num;$j+=$columns){
  10.              echo '<div class="picture">'.$j.'</div>';
  11.             }
  12.                 echo '</div>';
  13.     }
  14. }
  15.  
  16. }
  17. ?>
  18.  

(Добавление)
А так заработает?
4. kappa - 18 Октября, 2011 - 21:34:57 - перейти к сообщению
Я в ООР не силен, но

for($i=1;$i<=$columns;$i++){

к свойствам класса нужно обращаться через $this

CODE (htmlphp):
скопировать код в буфер обмена
  1.  for($i=1;$i<=$this->$columns;$i++){
5. Minigun - 18 Октября, 2011 - 21:51:33 - перейти к сообщению
kappa пишет:
Я в ООР не силен, но

for($i=1;$i<=$columns;$i++){

к свойствам класса нужно обращаться через $this

Кто нибудь скажет прав ли этот господин?

я сделал так как он сказал- не работает
у меня такая ошибка
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in Z:\home\first.com\www\index.php on line 2
6. kappa - 18 Октября, 2011 - 22:07:58 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <? class page{
  2.  
  3. private $columns=5;
  4. public function container(){
  5.  for($i=1;$i<=$this->$columns;$i++){
  6.       echo '<div class="mainstripe">';
  7.       $num=40-$columns+$i;
  8.           for($j=$i;$j<=$num;$j+=$columns){
  9.              echo '<div class="picture">'.$j.'</div>';
  10.             }
  11.                 echo '</div>';
  12.     }
  13. }
  14.  
  15. }
  16.  
  17. $var = new page();
  18. $var->container();
  19. ?>
7. illy - 18 Октября, 2011 - 22:08:35 - перейти к сообщению

типа пишет ожидал переменную а тут функция. ну итак понятно.
может из-за одинаковых названий?
или функция не описана а уже вызыается

Ладно. Вижу все уже спят. Пойду и я... Огорчение
8. DeepVarvar - 18 Октября, 2011 - 23:01:53 - перейти к сообщению
Minigun пишет:
Кто нибудь скажет прав ли этот господин?
Прав прав
9. OrmaJever - 19 Октября, 2011 - 00:47:45 - перейти к сообщению
Minigun пишет:
я сделал так как он сказал- не работает

не работает потому что он написал так $this->$columns, а должно быть вот так $this->columns
PHP:
скопировать код в буфер обмена
  1. <? class page{
  2. private $columns=5;
  3. public function container(){
  4.  for($i=1;$i<=$this->columns;$i++){
  5.       echo '<div class="mainstripe">';
  6.       $num=40-$this->columns+$i;
  7.           for($j=$i;$j<=$num;$j+=$this->columns){
  8.              echo '<div class="picture">'.$j.'</div>';
  9.             }
  10.                 echo '</div>';
  11.     }
  12. }
  13.  
  14. }
  15. ?>
10. Minigun - 19 Октября, 2011 - 18:48:06 - перейти к сообщению
Решил эту проблему так
через создавание обьекта object
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $object = new page();
  4. class page{
  5.  
  6.  const COLUMNS=5;
  7. function container(){
  8.  for($i=1;$i<=self::COLUMNS;$i++){
  9.      echo '<div class="mainstripe">';
  10.      $num=40-self::COLUMNS+$i;
  11.          for($j=$i;$j<=$num;$j+=self::COLUMNS){
  12.             echo '<div class="picture">'.$j.'</div>';
  13.             }
  14.         echo '</div>';
  15.     }
  16.     }
  17.  
  18. }
  19. ?>
  20.  

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div class="container">
  3.    <?
  4.    $object-> container();
  5.        
  6.    ?>
  7.    </div>
  8.  
  9.  

 

Powered by ExBB FM 1.0 RC1