За последние 24 часа нас посетили 18830 программистов и 1705 роботов. Сейчас ищет 701 программист ...

Подскажите, что не так в моей работе с массивами.

Тема в разделе "PHP для новичков", создана пользователем kentkent7, 16 сен 2017.

  1. kentkent7

    kentkent7 Новичок

    С нами с:
    30 июн 2017
    Сообщения:
    72
    Симпатии:
    5
    PHP:
    1. class FileImg {
    2.     const TRUTYPE = ['image/jpeg'];
    3.     public function __construct ($name, $loadDir){
    4.         $this->name = $name;
    5.         $this->size = $name . ['size'];
    6.         $this->type = $name . ['type'];
    7.         $this->tmp = $name . ['tmp_name'];
    8.         $this->error = $name . ['error'];
    9.         $this->loadDir = $loadDir;
    10.      
    11.     }
    12.     function GetError () {
    13.     try {
    14.         if (in_array($this->type, self::TRUTYPE)) {
    15.            throw new Exception ('Ошибка типа');
    16.         }
    17.     }
    18.     catch (Exception $alert) {
    19.      $this->error = $alert->getMessage();
    20.     }
    21. }
    22. }
     
    #1 kentkent7, 16 сен 2017
    Последнее редактирование модератором: 16 сен 2017
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Откуда нам знать?
    Ты напиши, что ты ожидаешь, и что получаешь. И тогда будет о чем разговор вести. А пока, по принципу каков вопрос - таков ответ, я тебе отвечу так - "хз".
     
  3. kentkent7

    kentkent7 Новичок

    С нами с:
    30 июн 2017
    Сообщения:
    72
    Симпатии:
    5
    Получаю данные с массива $_FILES, ожидаю присвоить значения свойствам класса и провести дальнейшую обработку: тип загружаемого файла, размер, способ получения.
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    а что происходит, ккакая ошибка?
    --- Добавлено ---
    Че за херня?
     
  5. kentkent7

    kentkent7 Новичок

    С нами с:
    30 июн 2017
    Сообщения:
    72
    Симпатии:
    5
    Нет ошибки, просто один человек сказал, что я не умею работать с массивами, я учусь и хочу понять в чем проблема.
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    ну пойди посмотри как выглядят массивы и посмотри на свой код. Возможно даже тебе станет стыдно
    --- Добавлено ---
    тут проблема в твоей лени и не желании погуглить минуту
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    $name . ['size']
    точку убери
    --- Добавлено ---
    1) сейчас бы надеяться на типы с переменной FILES
    2) ты тип поставил чтобы загружались только jpeg имг. Что в условии вижу - если имг jpeg типа то ошибка. Ебнуться вобщем
    3) if ( !in_array ... )
    --- Добавлено ---
    4) все уже отточено тут https://github.com/MouseZver/My-garbage-code/tree/master/upload_class
     
  8. kentkent7

    kentkent7 Новичок

    С нами с:
    30 июн 2017
    Сообщения:
    72
    Симпатии:
    5
    Да не лень мне, я просто хотел их соединить через конкатенацию, я представляю как выглядит ассоциативный массив.
    Я учусь и делаю ошибки, ток кто ничего не делает, тот и не ошибается.
    Просто иногда у меня возникает странное чувство, что я просто полный ишак, а все остальные с 1 недели пишут идеальный код.
    --- Добавлено ---
    Спасибо за совет, да я понимаю, что мой код полное говно.
    Но я пока не могу написать лучше, блин ну реально не получается пока лучше, я ООП начал изучать неделю назад,
    Я помню, Вы 4 недели назад скидывали, просто всеми силами старался догнать сам, буду изучать ваше решение.
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    $_FILES['userfile']['type']
    Этот mime-тип не проверяется в PHP, так что не полагайтесь на его значение без проверки

    https://php.ru/manual/function.getimagesize.html
    Не используйте getimagesize() для проверки того, что файл является файлом с изображением. Для этих целей используйте расширение Fileinfo.
     
  10. kentkent7

    kentkent7 Новичок

    С нами с:
    30 июн 2017
    Сообщения:
    72
    Симпатии:
    5
    Спасибо за совет, да я понимаю, что мой код полное говно.
    Но я пока не могу написать лучше, блин ну реально не получается пока лучше, я ООП начал изучать неделю назад,
    Я помнюб
    Спасибо большое!
    Это все задачи для себя, многое не знаю вот и получается так.
     
  11. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    код можно описать разным способом, лишь бы логика была верна

    загрузка конфигурации
    директория для сохранения файлов
    проверка на существовании ее​

    название массива присланный с $_FILES по определению <input type="file" name="доширак">
    валидация $_FILES[доширак]​

    Задаем имя выходного файла

    консервируем изображение
    валидация всех входных данных
    рыгаем и стопорим дальнейшее действие скрипта​
    иначе
    узнаем по типу, расширение файла

    юзаем ImageCreateFrom...расширение

    ресамлируем от говна ImageCopyResampled

    Image...расширение
    сохраняем​

    вывод имя с расширением файла
     
    kentkent7 нравится это.
  12. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Конкатенация - соединение строк :) Причём тут массивы? Самое интересное - конкатенация массивов сработает в php, поскольку у него скрытое преобразование типов, и он преобразует массивы в строки. Но, при преобразовании массива в строку он просто превращается в слово Array, так что в твоём случае, в зависимости от того, что ты передаёшь в $name, у тебя будет одно или два слова Array во всех этих полях. Подозреваю, что это не тот результат, который ты пытаешься получить
     
    kentkent7 нравится это.
  13. kentkent7

    kentkent7 Новичок

    С нами с:
    30 июн 2017
    Сообщения:
    72
    Симпатии:
    5
    Спасибо, я знал про динамическую типизацию, но я пока все выученное не могу достойно применять :)
    Так что, если публика не возражает, потерпите уж мои беспощадные творения ;)
     
  14. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Значит, то, что выучено, было не понято. Так что пересмотри работу с массивами ещё раз, и непонятные теоретические вопросы сразу спроси. Если бы ты понимал массивы, и что зачем делается, такой бы бред в голову тебе не пришёл. Так что, поняв, ты сэкономишь прежде всего своё время. Вот отложи пока ООП с файлами, порешай задачи отсюда на массивы: http://www.itmathrepetitor.ru/zadachi-po-php-cikly-i-massivy/ Не пользуйся стандартными функциями, где они есть, а порисуй велики, для общего развития. Понятно, что в реальной программе применяют стандартные функции, но для развития алгоритмического мышления полезно велики писать
     
  15. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    --- Добавлено ---
    Иди от простого к сложному. Ты не умеешь даже с массивами работать, зачем лезть в ооп?
    Школота:confused:
     
    TeslaFeo нравится это.
  16. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Делать наоборот сегодня норма. Человек сначала качает какой-нибудь быдлопресс и начинает "учить пхп по готовому коду, чтобы быстрее разобраться". Тоже не зная основ. Все равно что учить китайский по оригинальным образцам поэзии династии Хрень.
     
  17. kentkent7

    kentkent7 Новичок

    С нами с:
    30 июн 2017
    Сообщения:
    72
    Симпатии:
    5
    Я учу по Ютуб и читаю статьи на хабре, форум листаю, php.net юзаю.
     
  18. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Этот пункт вычеркни, если хочешь действительно чему-то научиться и стать программистом, а не попугайчиком-перепечаточником.
     
  19. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    сижу лентяйничаю, фильмы ужастики качаю, пользуюсь гуглом, троллю пхп.ру
    --- Добавлено ---
    школьник у тебя в штанах!:rolleyes: Кенгуру
     
  20. kentkent7

    kentkent7 Новичок

    С нами с:
    30 июн 2017
    Сообщения:
    72
    Симпатии:
    5
    Буду крайне признателен если кто-то подскажет более правильный вариант развития.
    Просто на данный момент я не знаю других способов.
     
  21. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
  22. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ну вот там есть полное описание синтаксиса языка, со всеми возможностями, хотя бы по разу это прочитано?
    https://secure.php.net/manual/ru/langref.php
     
  23. kentkent7

    kentkent7 Новичок

    С нами с:
    30 июн 2017
    Сообщения:
    72
    Симпатии:
    5
    Если честно, то нет(
     
  24. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Самое время, чтобы начать.
     
    kentkent7 нравится это.
  25. kentkent7

    kentkent7 Новичок

    С нами с:
    30 июн 2017
    Сообщения:
    72
    Симпатии:
    5
    Уже начал, иногда полезно получить леща :)
     
    Fell-x27 нравится это.