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 » » Объектно-ориентированное программирование » начал разбираться с классами помогите понять

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

1. 3d_killer - 17 Августа, 2013 - 11:58:11 - перейти к сообщению
Раньше дело с ООП не имел... пользуюсь книгой ООП на php 5 (Peter Lavin)
PHP:
скопировать код в буфер обмена
  1. class DirectoryItems
  2.         {
  3.                 private $filearray=array();     //глобальная переменная
  4.                 //Конструктор
  5.                 public function __construct($directory)
  6.                         {
  7.                                 $d='';
  8.                                 $this->directory=$directory;
  9.                                 if (is_dir($directory)) //если директория существует
  10.                                         {
  11.                                                 $d=opendir($directory) or die("Не удалось открыть каталог"); //открываем директорию
  12.                                                 while ($f=readdir($d))
  13.                                                         {
  14.                                                                 if(is_file("$directory/$f"))
  15.                                                                         {
  16.                                                                                 $this->filearray[]=$f;
  17.                                                                         }      
  18.                                                         }
  19.                                                 closedir($d);
  20.                                         }
  21.                                 else
  22.                                         {
  23.                                                 die("Нужно передать имя каталога");    
  24.                                         }
  25.                         }
  26.                 //функция передачи переменной
  27.                 public function getFilearray()
  28.                         {
  29.                                 return $this->filearray;
  30.                         }
  31.                 //Конец конструктора
  32.                 //Выбрать только изображения
  33.                 public function images_Only()
  34.                         {
  35.                                 $types=array("jpg","bmp","gif","png","jpeg");
  36.                                 foreach ($this->filearray as $key => $value)
  37.                                         {
  38.                                                 $extension=substr($value,(strpos($value, ".")+1));
  39.                                                 $extension=strtolower($extension);
  40.                                                 if (!in_array($extension, $types))
  41.                                                         {
  42.                                                                 unset($this->filearray[$key]);
  43.                                                         }
  44.                                         }
  45.                         }
  46.                 //Удаление фильтра
  47.                 public function removeFilter()
  48.                         {
  49.                                 unset($this->filearray);
  50.                                 $d="";
  51.                                 $d=opendir($this->directory) or die("Не удалось открыть каталог"); //открываем директорию
  52.                                 while ($f=readdir($d))
  53.                                         {
  54.                                                 if(is_file("$directory/$f"))
  55.                                                         {
  56.                                                                 $this->filearray[]=$f;
  57.                                                         }      
  58.                                         }
  59.                                 closedir($d);
  60.                         }
  61.         }              
  62. //ВЫВОД
  63. $class_new = new DirectoryItems('image'); //создаем объект
  64.  
  65. $return = $class_new->getFilearray();
  66. foreach ($return as $key => $value) //раскладываем и выводим список файлов
  67.         {
  68.                 echo($key." - ".$value."<br>");
  69.         }
  70.  
  71. $class_new->images_Only(); //Выбираем только изображения
  72. $return = $class_new->getFilearray();
  73. echo("<br>");
  74. foreach ($return as $key => $value) //раскладываем и выводим список файлов
  75.         {
  76.                 echo($key." - ".$value."<br>");
  77.         }
  78. $class_new->removeFilter(); //Удалить фильтр
  79. $return = $class_new->getFilearray();
  80. echo("<br>");
  81. foreach ($return as $key => $value) //раскладываем и выводим список файлов
  82.         {
  83.                 echo($key." - ".$value."<br>");
  84.         }


удалить фильтр выдает ошибку:

PHP:
скопировать код в буфер обмена
  1.  
  2. Warning: Invalid argument supplied for foreach() in Z:\home\SMC\www\index.php on line 83
  3.  

и по самому коду хотел спросить правильно ли я его пишу? заранее благодарю
2. soffrick - 17 Августа, 2013 - 12:10:31 - перейти к сообщению
пиши на JAVASCRIPT, он полностью ООП. Говорят хочешь понять ООП - учи JAVASCRIPT
3. 3d_killer - 17 Августа, 2013 - 12:13:05 - перейти к сообщению
мне нужно PHP JAVA пользуюсь немного
4. soffrick - 17 Августа, 2013 - 12:21:37 - перейти к сообщению
3d_killer пишет:
Warning: Invalid argument supplied for foreach()

ну и чтож такие глупые ошибки выкладываешь? ООП это парадигма, а не другой какой-то ЯП
(Добавление)
3d_killer пишет:
images_Only(); //Выбираем только изображения

код вроде самодокументирован, к чему оверхед комментов?
5. Мелкий - 17 Августа, 2013 - 12:32:21 - перейти к сообщению
soffrick пишет:
пиши на JAVASCRIPT, он полностью ООП.

Никогда такого не было. JS прототипно-ориентированный ЯП.
Говорят, если хочешь понять ООП - учи Java. Вот кто ООП до мозга костей.
6. DelphinPRO - 17 Августа, 2013 - 12:33:18 - перейти к сообщению
soffrick пишет:
пиши на JAVASCRIPT, он полностью ООП. Говорят хочешь понять ООП - учи JAVASCRIPT
Ха-ха слышал звон, да не знаю где он...
7. soffrick - 17 Августа, 2013 - 12:33:20 - перейти к сообщению

Мелкий
Вы по ссылке переходили ? Улыбка


Мелкий пишет:
ООП до мозга костей

ну или ООП головного мозга Улыбка

(Добавление)
DelphinPRO пишет:
слышал звон, да не знаю где он...

да я ваще не знаю шо такоэ серверный и клинтский изык
8. NoPaper - 17 Августа, 2013 - 12:33:47 - перейти к сообщению
если не знаешь, не берись
читай мануалы, форумы, пытайся по максимуму разобраться
разленился народ, чуть что - сразу на форум писать
вот за пару дней не увидел ни одного интересного вопроса...

soffrick пишет:
JAVASCRIPT
3d_killer пишет:
JAVA

и что сие аббревиатуры значат?
9. soffrick - 17 Августа, 2013 - 12:35:30 - перейти к сообщению
NoPaper пишет:
и что сие аббревиатуры значат

для тс это одно и тоже
10. Мелкий - 17 Августа, 2013 - 12:35:50 - перейти к сообщению

soffrick пишет:
Вы по ссылке переходили ?

Извиняюсь, не признал ссылку вовсе. Решил, что это обычное подчёркивание. Смущение
11. soffrick - 17 Августа, 2013 - 12:38:12 - перейти к сообщению
а вообще
тс пишет:

Notice: Undefined property: DirectoryItems::$filearray in
и как следствие


Warning: Invalid argument supplied for foreach() in
(Добавление)
РЕШЕНИЕ ОЧ простое
PHP:
скопировать код в буфер обмена
  1.                                 $this->filearray = array();
12. 3d_killer - 17 Августа, 2013 - 12:39:46 - перейти к сообщению
soffrick
это я для себя его подписывал, так ошибка то в сбросе фильтра где может скажет кто?
13. soffrick - 17 Августа, 2013 - 12:39:58 - перейти к сообщению
http://forum.php.su/topic.php?fo...mp;v=#1376731684
отрывать руки за отключение нотисов!
Саныч пишет:
Я за такую "фигню" руки отрывал бы.

(Добавление)
3d_killer пишет:
ошибка то в сбросе фильтра где может скажет кто?

научись отлаживать свой код
(Добавление)
хотябы узнай что есть функция var_dump()!


Спойлер (Отобразить)

(Добавление)
3d_killer пишет:
$class_new = new DirectoryItems('image'); //создаем объект

небось папку то рядом со скриптом не создал Ха-ха Ха-ха
14. 3d_killer - 17 Августа, 2013 - 12:52:23 - перейти к сообщению
создал нашел просто не передал переменную
PHP:
скопировать код в буфер обмена
  1. $class_new->removeFilter('image'); //Удалить фильтр
15. soffrick - 17 Августа, 2013 - 12:52:33 - перейти к сообщению
3d_killer пишет:
сбросе фильтра где может скажет кто?

undefined variable directory, dancing here!
if(is_file("$directory/$f"))
(Добавление)

сложно включить вывод нотисов, да?
и почему за тебя должны отлаживать твой код, который ты даже не попытался понять и отладить?

 

Powered by ExBB FM 1.0 RC1