За последние 24 часа нас посетили 17736 программистов и 1710 роботов. Сейчас ищут 1608 программистов ...

Функция Fopen

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

  1. Paxan-1

    Paxan-1 Активный пользователь

    С нами с:
    26 окт 2017
    Сообщения:
    14
    Симпатии:
    1
    Други, подскажите как правильно прописать?

    исходная строка:
    $fp = fopen($file_name . ".jpg", "w+");

    а надо, чтобы файл создавался не в корне, а в директории /files/
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    PHP:
    1. $fp = fopen( sprintf ( '/files/%s.jpg', $file_name ), 'w+' );
     
  3. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    @MouseZver, любишь ты sprintf везде пихать. Чем автоподстановка в двойные кавычки не устраивает?
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    чем sprintf не угодил с наглядной структурой строки ?
     
  5. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    У тебя путь абсолютный получился, первый слеш там зря, и спринтф был бы уместен в отдельной строке, если бы мы готовили переменную $file_name, а то и так каша в коде, а ещё и .спринтф...
     
  6. Paxan-1

    Paxan-1 Активный пользователь

    С нами с:
    26 окт 2017
    Сообщения:
    14
    Симпатии:
    1
    друзья, так как код написать?
    --- Добавлено ---
    предложите ваш вариант, пожалуйста.
     
  7. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Как папка files расположена относительно той папки, в которой твой скрипт лежит?
     
  8. Paxan-1

    Paxan-1 Активный пользователь

    С нами с:
    26 окт 2017
    Сообщения:
    14
    Симпатии:
    1
    скрипт и папка files в корне сайта.
     
  9. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    PHP:
    1. $fp = fopen(__DIR__ . "/files/{$file_name}.jpg", "w+");
    Если ты любитель говна мамонта (в смысле, версий php ниже 5.3, я знаю, такие попадаются), то вместо __DIR__ надо будет написать dirname(__FILE__)
     
    Paxan-1 нравится это.
  10. Paxan-1

    Paxan-1 Активный пользователь

    С нами с:
    26 окт 2017
    Сообщения:
    14
    Симпатии:
    1

    Спасибо! заработало!
     
  11. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    и нахрена создавать новую переменную для результата ? не логично
    неверно
     
  12. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Для читаемости кода. Красивый код проще дебажить. Не всегда будешь писать код в одиночку только для себя. Так что надо привыкать писать не только безглючно но и красиво
     
  13. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    Это называется кто какой рукой дрочит, а не у кого какой код красивый в читабельности. Снова неверно.
     
  14. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Это называется уважение к читающим код. Можно писать вообще всё в одну строчку, но там где я работал за такое сразу уволили бы...
     
  15. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    за sprintf не увольняют, бред не пиши. В данной ситуации в одну строчку "элегантно" смотрится, а спринт как вишенка на тортике. Конец диалога.
     
  16. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Кто тебе про спринтф говорит ? Ты читаешь не то что написано вот бред и получается.
    Спринтф элегантное решение на своём месте, а в каше кода хоть спринтф хоть нет, будет смотреться криво.
     
  17. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    тогда не понимаю о чем ты
     
  18. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Вот это нечитаемый говнокод
    Код (Text):
    1. $fp = fopen( sprintf ( '/files/%s.jpg', $file_name ), 'w+' );
    А вот это хороший удобный код
    Код (Text):
    1. $full_path = sprintf ( 'files/%s.jpg', $file_name );
    2. $fp = fopen( $full_path, 'w+' );
    (даже если эта переменная толком и не нужна, в таком коде сложнее накосячить и проще обнаружить если накосячить всё же удалось)
     
  19. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    создание одной переменной для одного ввода это и есть говнокод. Пора давно уже знать где говнокод, а где оптимизированный код.

    еще на это скажи говнокод:
    PHP:
    1. fputs( $f = fopen ( 'file.txt', 'c+' ), $a = fgets ( $f )+rewind ( $f )+print $a );
    тогда вовсе смело можно посылать
     
  20. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    Код (Text):
    1. $fp = fopen( "/files/{$file_name}.jpg", 'w+' );
    вот правильный код))
     
  21. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    использование {} также в большинстве продуктов принято дурным тоном.
    Это прямо классический пример говнокода (если конечно это не защита от прочтения кода) за такое вырывают руки (из задницы)
     
  22. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    зато читается легко...
     
  23. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    говнокод - это твоя логика, где создаются никчемные одноразовые переменные(презервативы). Не надо приписывать свой говностиль к народному стандарту, дабы все подрожали этому. За твое суждение - голову с плеч и в расчлененку. Каторга даже не поможет, после твоего стиля
     
  24. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Я свою позицию высказал, ты свою, только 3-я сторона может определить кто прав, а кто нет.

    (и я ничего про "народный стиль" не говорил, я говорил про требования к коду в тех местах где работал я лично, о чём и было сказано сразу, ты же утверждаешь что твой стиль народный и нигде за такое не уволят)
     
  25. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    [​IMG]

    Это стиль оптимизации, а не народный.
    --- Добавлено ---
    мне прикалывает еще одно:
    две функции объединены в одну строку - вся компания начинает страдать и искать по пол года одну ошибку в двух функциях.

    Или еще:
    Кто - то в глаза долбится и мораль превыше кода, или работаем на 600х800 дисплее ( О да!.. там надо поставить +100500 чтобы было читабельно ).

    Заебись коллеги.