Intellect Board Pro
Система управления форумами
Объявление

30 ноября 2015 года выпущена окончательная версия Intellect Board 3.00! Перейти к скачиванию
Также доступен конвертор данных для IntB 2.22

Для получения новостей о новых версиях подписывайтесь на наши страницы ВКонтакте и в Twitter.

Привет, гость!

Вопросы по PHP

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

Настройки отображения темы Показывать по сообщений с сортировкой .
Выводить , отправленные .
Страницы:
Распечатать
ПнБ
Начинающий
Всего сообщений: 97
Зарегистрирован: 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/

ПнБ
Начинающий
Всего сообщений: 97
Зарегистрирован: 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
Основатель проекта
Всего сообщений: 205
Зарегистрирован: 22 сен 2014, 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 4

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

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

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

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

Критикуя — предлагай, предлагая — обосновывай!
Для тех, кто живет в Интернете — мой блог о Web-разработке.

ПнБ
Начинающий
Всего сообщений: 97
Зарегистрирован: 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/

ПнБ
Начинающий
Всего сообщений: 97
Зарегистрирован: 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
Основатель проекта
Всего сообщений: 205
Зарегистрирован: 22 сен 2014, 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 4

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, чтобы стало ясно, где ошибка возникает: при обработке массива или при разбиении...

Критикуя — предлагай, предлагая — обосновывай!
Для тех, кто живет в Интернете — мой блог о Web-разработке.

ПнБ
Начинающий
Всего сообщений: 97
Зарегистрирован: 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
Основатель проекта
Всего сообщений: 205
Зарегистрирован: 22 сен 2014, 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 4

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, то просто будет считаться, что функции с таким именем не существует и выбрасываться соответствующая ошибка при попытке ее вызвать.

Критикуя — предлагай, предлагая — обосновывай!
Для тех, кто живет в Интернете — мой блог о Web-разработке.

ПнБ
Начинающий
Всего сообщений: 97
Зарегистрирован: 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/

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

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

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

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

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

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

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

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

0: Контрольная точка "Вспомогательные действия выполнены". Время выполнения: 0.006. Запросов: 19, время запроса: 0.002 (38.38)%. Памяти использовано: 746832 байтов

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