Intellect Board Pro
Расширяемая система управления форумами с открытым исходным кодом
Объявление
Выпущена версия 3.02 с двумя новыми типами разделов: блог и микроблог.
Перейти к скачиванию
Привет, гость!

Вопросы по PHP

Пользователю _1_ в этой теме не оффтопить

Настройки отображения темы Показывать по сообщений с сортировкой .
Выводить , отправленные .
Страницы:
Распечатать
ПнБ
Начинающий
Всего сообщений: 98
Зарегистрирован: 5 мая 2015, 11:37
Рейтинг пользователя: 0

0
21 сентября 2016, 17:23#11
    4X_Proнаписал(а):
    Из критики: пока непонятно, для чего ты делаешь ksort на $patterns и $replacements. Они же и так в правильном порядке идут

    А ты закоментируй строки ksort, и увидишь, что вместо Сентября вернёт Апрель. Это потому что ключи массива идут у одного сверху вниз, а у второго-снизу вверх. Таков синтаксис записи функции в оф. мануале.
    4X_Proнаписал(а):
    Еще, раз у тебя часовой пояс является hardcoded (т.е. жестко прописанным, а не берется из профиля пользователя)

    Он и не должен оттуда браться, я так считаю. Выводится время страны. У нас же один часовой пояс. Это в РФ разница с Владивостоком более 6 часов, если не ошибаюсь.
    У меня на локалке время московское. Вот я его и подкоректировал. Как умел)))) У меня на хостинге пишется, что сервера расположены в Украине, Германии, и Великобритании. Поэтому я на всякий случай сделал жёсткую привязку.
    4X_Proнаписал(а):
    Т.е. было бы что-то вроде <div id="time" class="oldclass otherclass">Текущее время... </div>. (В аттрибуте class можно перечислять несколько имен классов через пробел.)

    Это идея. Это ж ты мыслишь объектно. Я пока что не "дорос" ))) Надо использовать.
    Хотел бы попробовать написать небольшую CMS. Думаю, к весне управлюсь. Буду задавать много вопросов. Читал мануалы по сессиям и кукам-ничего не понял. Надо пробовать "ручками".

    Всё, что мне известно о PHP-меня научил 4X_Pro
    Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

    ПнБ
    Начинающий
    Всего сообщений: 98
    Зарегистрирован: 5 мая 2015, 11:37
    Рейтинг пользователя: 0

    0
    21 сентября 2016, 17:31. Редактировалось 1 раз, последний — 21 сентября 2016, 17:32#12
      Да, и подскажи... Я вначале долго пытался крутануть юзер-агент через foreach, чтоб привести его к строке, и дальше уже эту строку "потрошить". Но я ничего не добился, потому что цикл возвращал мне последнюю подстроку, а не всю строку полностью. И unset не помогло-в таком случае выводит предпоследнюю подстроку. Почему?

      Всё, что мне известно о PHP-меня научил 4X_Pro
      Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

      4X_Pro
      Основатель проекта
      Всего сообщений: 240
      Зарегистрирован: 22 сен 2014, 18:56
      Откуда: Москва, Перово
      Рейтинг пользователя: 6

      0
      21 сентября 2016, 19:52#13
        ПнБнаписал(а):
        А ты закоментируй строки ksort, и увидишь, что вместо Сентября вернёт Апрель. Это потому что ключи массива идут у одного сверху вниз, а у второго-снизу вверх. Таков синтаксис записи функции в оф. мануале.

        А, все, понял. Как обычно, невнимательность. Но все равно можно было пронумеровать их по-своему сразу, чем сначала задавать в обратном порядке, а потом пересортировывать...
        ПнБнаписал(а):
        У меня на локалке время московское. Вот я его и подкоректировал. Как умел)))) У меня на хостинге пишется, что сервера расположены в Украине, Германии, и Великобритании. Поэтому я на всякий случай сделал жёсткую привязку.

        Просто если ты прописываешь часовой пояс, то PHP сам скорректирует время как надо, где бы сервер ни стоял (при условии, что на нем в системных настройках пояс указан правильно, впрочем, большинство серверов с Linux работают по UTC-времени).
        ПнБнаписал(а):
        Я вначале долго пытался крутануть юзер-агент через foreach, чтоб привести его к строке, и дальше уже эту строку "потрошить".

        Ничего не понял, что ты хотел сделать. Переменная $_SERVER["HTTP_USER_AGENT"] — это изначально строка, ее ни к чему приводить не надо. А по строке foreach никак не сделаешь, PHP такого не понимает. Если хочешь разбить ее на подстроки, скажем по пробелам или еще каким-то символам, и пройтись циклом по ним, то это делается с помощью функций explode и preg_split.

        Критикуя — предлагай, предлагая — обосновывай!
        4xpro.ru — мой личный сайт-мультиблог на Intellect Board.

        ПнБ
        Начинающий
        Всего сообщений: 98
        Зарегистрирован: 5 мая 2015, 11:37
        Рейтинг пользователя: 0

        0
        21 сентября 2016, 20:07#14
          4X_Proнаписал(а):
          Просто если ты прописываешь часовой пояс, то PHP сам скорректирует время как надо, где бы сервер ни стоял

          Понятно.
          4X_Proнаписал(а):
          Если хочешь разбить ее на подстроки, скажем по пробелам или еще каким-то символам, и пройтись циклом по ним, то это делается с помощью функций explode и preg_split.

          Так я так и сделал. 2 строка кода-разбор строки функцией preg_split. Только дело в том, что эта функция возвращает массив. Посмотри мануал, ссылку не могу дать. И вот этот массив циклом не перебирается. Вернее, перебирается, только возвращает последнюю переменную массива. А вот про foreach вот что написано:
          Ссылка $value на последний элемент массива остается даже после того, как оператор foreach завершил работу. Рекомендуется уничтожить ее с помощью функции unset().

          И, похоже, я только что понял, в чём дело. Наверное, в этом:
          Для того, чтобы напрямую изменять элементы массива внутри цикла, переменной $value должен предшествовать знак &. В этом случае значение будет присвоено по ссылке.

          Всё, что мне известно о PHP-меня научил 4X_Pro
          Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

          ПнБ
          Начинающий
          Всего сообщений: 98
          Зарегистрирован: 5 мая 2015, 11:37
          Рейтинг пользователя: 0

          0
          21 сентября 2016, 21:55. Редактировалось 2 раза, последний — 21 сентября 2016, 22:29#15
            Cлушай, я только что полистал ТextCMS, какая там БД? SQLite?

            Всё, что мне известно о PHP-меня научил 4X_Pro
            Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

            4X_Pro
            Основатель проекта
            Всего сообщений: 240
            Зарегистрирован: 22 сен 2014, 18:56
            Откуда: Москва, Перово
            Рейтинг пользователя: 6

            0
            25 сентября 2016, 17:29. Редактировалось 1 раз, последний — 25 сентября 2016, 17:29#16
              В TextCMS базы как таковой нет. Все данные хранятся в обычных текстовых файлах в каталоге files/siteN + есть один индексный файл (тоже текстовый), по которому сопоставляется id и URL страницы, запрошенной пользователем, (в нем же хранится то, что нужно вывести в TITLE и еще ряд вспомогательных данных типа времени последнего редактирования). Кстати, писал бы я это дело сейчас, сделал бы этот файл на JSON, наверное, хотя это по ресурсам более затратно.
              ПнБнаписал(а):
              Так я так и сделал. 2 строка кода-разбор строки функцией preg_split. Только дело в том, что эта функция возвращает массив. Посмотри мануал, ссылку не могу дать. И вот этот массив циклом не перебирается. Вернее, перебирается, только возвращает последнюю переменную массива. А вот про foreach вот что написано:

              А ты учитываешь, что там должен быть не просто символ-разделитель, а регулярное выражение с обрамляющими символвами? Т.е. если ты хочешь разбить текст по запятым, то это должно быть preg_split('|,|',$_SERVER['USER_AGENT'])
              Попробуй для отладки вывести весь массив с помощью print_r, чтобы стало ясно, где ошибка возникает: при обработке массива или при разбиении...

              Критикуя — предлагай, предлагая — обосновывай!
              4xpro.ru — мой личный сайт-мультиблог на Intellect Board.

              ПнБ
              Начинающий
              Всего сообщений: 98
              Зарегистрирован: 5 мая 2015, 11:37
              Рейтинг пользователя: 0

              0
              25 сентября 2016, 20:31. Редактировалось 1 раз, последний — 25 сентября 2016, 20:33#17
                4X_Proнаписал(а):
                А ты учитываешь, что там должен быть не просто символ-разделитель, а регулярное выражение с обрамляющими символвами?

                Так оно там есть и так.
                4X_Proнаписал(а):
                Т.е. если ты хочешь разбить текст по запятым

                Я не хочу разбивать текст по запятым. Это бессмысленно. Я, наоборот, в регулярке срезал все запятые, пробелы, все заглавные буквы, кроме W,M,X, чтоб получались огрызки слов, неполные слова, и только Windows, Macintoch, и X-11 приводили бы к полному и безоговорочному совпадению со строкой-шаблоном. Это позволило, например, однозначно определять что Windows-это не Windows Phone, не равно ему, потому что после регулярки выходило-Windowshone, сравнения не просходило, переменная не перезаписывадась с наибольшего шрифта.
                4X_Proнаписал(а):
                Попробуй для отладки вывести весь массив с помощью print_r

                Я только этим и занимался, вводя print_r для отладки после каждой строчки. Если возвращатся к теме Foreach, то он мне массив не выводил. Выводил последнее значение массива.
                Ты мне скажи другое. Можно ли применять сторонние библиотеки в движке, тех, которых нет в модуле PHP по умолчанию, или вызывать набор библиотек к выполнению из папки СMS, даже если библиотеки с таким названием закомментированы хостером в его php-ini?

                Всё, что мне известно о PHP-меня научил 4X_Pro
                Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

                4X_Pro
                Основатель проекта
                Всего сообщений: 240
                Зарегистрирован: 22 сен 2014, 18:56
                Откуда: Москва, Перово
                Рейтинг пользователя: 6

                0
                25 сентября 2016, 20:55. Редактировалось 1 раз, последний — 25 сентября 2016, 20:56#18
                  ПнБнаписал(а):
                  Ты мне скажи другое. Можно ли применять сторонние библиотеки в движке, тех, которых нет в модуле PHP по умолчанию, или вызывать набор библиотек к выполнению из папки СMS, даже если библиотеки с таким названием закомментированы хостером в его php-ini?

                  Тут нужно разделять два понятия. Есть библиотеки, написанные на самом PHP (например, шаблонизатор Twig, который используется в этом движке), а есть так называемые PHP extensions, которые пишутся на C, компилируются и подключаются к PHP через ini-файл (те же PDO или GD, например).
                  Библиотеки, написанные на PHP, можно подключать с помощью require или include без особых проблем, хостер это запретить не может. А вот с extensions так не получится: если оно не включено в php.ini, то просто будет считаться, что функции с таким именем не существует и выбрасываться соответствующая ошибка при попытке ее вызвать.

                  Критикуя — предлагай, предлагая — обосновывай!
                  4xpro.ru — мой личный сайт-мультиблог на Intellect Board.

                  ПнБ
                  Начинающий
                  Всего сообщений: 98
                  Зарегистрирован: 5 мая 2015, 11:37
                  Рейтинг пользователя: 0

                  0
                  25 сентября 2016, 21:21#19
                    4X_Proнаписал(а):
                    Есть библиотеки, написанные на самом PHP

                    Меня интересуют именно они. Чтоб не изобретать велосипед, а брать готовый код для тех или иных участков сайтов.
                    4X_Proнаписал(а):
                    Библиотеки, написанные на PHP, можно подключать с помощью require или include без особых проблем, хостер это запретить не может

                    Тоесть, запрет распостраняется на модуль PHP, а на подключение и обработку PHP-библиотеки из папки моей CMS это никак не повлияет, не заблокируется, не вызовет ошибку, как на Unix, так и на Win серверах, правильно?
                    И получится ли в папке с CMS, скачанной юзером, розместить уже распакованный Сomposer с набором уже скачанных библиотек, и заранее определённых зависимостей?

                    Всё, что мне известно о PHP-меня научил 4X_Pro
                    Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

                    ПнБ
                    Начинающий
                    Всего сообщений: 98
                    Зарегистрирован: 5 мая 2015, 11:37
                    Рейтинг пользователя: 0

                    0
                    26 сентября 2016, 02:05#20
                      C Композером я погорячился. Прийдётся писать свой селектор для подключаемых библиотек.

                      Всё, что мне известно о PHP-меня научил 4X_Pro
                      Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

                      Страницы:
                      Распечатать

                      У вас нет прав для отправки сообщений в эту тему.

                      0: Контрольная точка "Конец инициализации". Время выполнения: 0.007. Запросов: 8, время запроса: 0.001 (12.80)%. Памяти использовано: 519992 байтов

                      0: Контрольная точка "Фиксация действия пользователя выполнена". Время выполнения: 0.007. Запросов: 10, время запроса: 0.001 (15.84)%. Памяти использовано: 520320 байтов

                      0: Контрольная точка "Основное действие выполнено". Время выполнения: 0.015. Запросов: 17, время запроса: 0.003 (23.76)%. Памяти использовано: 746456 байтов

                      0: Контрольная точка "Вспомогательные действия выполнены". Время выполнения: 0.015. Запросов: 21, время запроса: 0.004 (24.37)%. Памяти использовано: 762136 байтов

                      0: Контрольная точка "После срабатывания шаблонизатора.". Время выполнения: 0.022. Памяти использовано: 1073472 байтов