Этот сайт существует на доходы от рекламы.
Пожалуйста, выключите AdBlock.
Вернуться   Форум об интернет-маркетинге > >
Ответ
 
Опции темы
Старый 14.02.2019, 11:04   #21
SeVlad
Guru-Editor
 
Регистрация: 03.11.2008
Адрес: Donbass
Сообщений: 17,211
Репутация: 1422441

По умолчанию Re: Нужно ли в дочерней теме WP окутывать функцию тегом ! function_exists ?

Цитата:
Сообщение от Gerga Посмотреть сообщение
Я с самого начала с этого и начал.
Ты с самого начала убедил ТСа делать неправильно.
__________________
Топики помощи с ⓌordPress и основы безопасности сайтов.
*** Помощь\консультации в топиках форума - БЕСПЛАТНО. Через личку - с бюджетом от 50$ ***
SeVlad вне форума   Ответить с цитированием

Реклама
Старый 14.02.2019, 11:43   #22
Gerga
Кандидат наук
 
Аватар для Gerga
 
Регистрация: 02.08.2015
Адрес: Одесса
Сообщений: 416
Репутация: 77920
Отправить сообщение для Gerga с помощью ICQ Отправить сообщение для Gerga с помощью Skype™

По умолчанию Re: Нужно ли в дочерней теме WP окутывать функцию тегом ! function_exists ?

SeVlad, где ты тут нашел убеждение? Без разницы, потому что у ТС нету этой политики на проект, т.е. он не понимает зачем ему нужен function_exists как обвертка функции.

Я дал возможность выбора для ТС.

Я не стал убеждать, что function_exists как обвертка функций - это хорошая практика программирования т.к. это не так. function_exists как обвертка функций это необходимость в некоторых случаях, а в некоторых это не нужно делать. Тут я хотел дать понять, что function_exists, в случае родительской темы, используется для реализации отношения "Родитель - Ребенок", а не ради хорошего тона или избежания ошибок.
Gerga вне форума   Ответить с цитированием
Старый 14.02.2019, 11:49   #23
SeVlad
Guru-Editor
 
Регистрация: 03.11.2008
Адрес: Donbass
Сообщений: 17,211
Репутация: 1422441

По умолчанию Re: Нужно ли в дочерней теме WP окутывать функцию тегом ! function_exists ?

Цитата:
Сообщение от Gerga Посмотреть сообщение
где ты тут нашел убеждение?
Если бы не убедил - он бы делал правильно. Правильно - это проверять существовании подобных функции.
И не "без разницы". Ибо разница всё таки есть. См. резюме.
SeVlad вне форума   Ответить с цитированием
Старый 14.02.2019, 23:25   #24
ChrisKorr
Дипломник
 
Регистрация: 26.02.2016
Сообщений: 65
Репутация: -159

ТопикСтартер Re: Нужно ли в дочерней теме WP окутывать функцию тегом ! function_exists ?

Цитата:
Сообщение от SeVlad Посмотреть сообщение
Если бы не убедил - он бы делал правильно. Правильно - это проверять существовании подобных функции.
И не "без разницы". Ибо разница всё таки есть. См. резюме.
Ребят, спасибо всем за такой спорный разговор между вами, я много чего понял. Единственное, что мне не очень понятно, почему это так называемое "правило хорошего тона" вы считаете обязательным. Я тут параллельно перелопатил целую кучу статей по этой теме и интересно, что мнения как и здесь разделилось 50/50. Интересное для себя утверждение нашел (по-моему в статье на wp-kama было), что обертывать этой функцией надо, если вы создаете свою тему (родительскую), особенно на продажу. А вот с дочерней можно не делать, если не планируете ее перепродавать, а будете использовать только в своих целях. Что думаете?
ChrisKorr вне форума   Ответить с цитированием
Старый 14.02.2019, 23:50   #25
Sitealert
Слесарь-сайтосборщик
 
Регистрация: 30.09.2016
Адрес: Замкадье
Сообщений: 4,037
Репутация: 296331

По умолчанию Re: Нужно ли в дочерней теме WP окутывать функцию тегом ! function_exists ?

Цитата:
Сообщение от ChrisKorr Посмотреть сообщение
мнения как и здесь разделилось 50/50
Естественно. Патамушта тут как раз дилемма.
1. Если обернуть определение функции в !function_exists, и кто-то определит функцию с таким же названием выше по коду до Вашего определения, то Ваше определение перестанет работать и Вы, как выше отметил Gerga, получите непредсказуемый результат.
2. Если не оборачивать определение функции в !function_exists, и кто-то определит функцию с таким же названием выше по коду до Вашего определения, то PHP выдаст фатальную ошибку и сайт перестанет работать.

Вот и выбирайте, 50/50. С учётом того, что пользовательских функций может быть и сто, и двести, и сколько угодно, и срабатывают они в самых разных ситуациях (например, не подключен какой-то файл - всё работает, подключился по запросу - перестало работать) - вообще развлечение не для ленивых получается. Поэтому Gerga и написал. что уж пусть лучше ошибку выдаст, чем криво работать будет. Если сайт упадёт - это сразу будет видно, а если кому-то цену на товар будет показывать 100 рублей вместо 150 - не сразу заметите.

Короче, идеального решения тут нет. Главное, чтобы Вы сами понимали риски каждого из вариантов. Исходя из того, что функции темы первичны, а прочие дополнения и расширения вторичны, правильнее не оборачивать функции темы в !function_exists - так Вы всегда будете уверены, что эта функция никогда не изменит своего поведения. При этом следует тщательно протестировать сайт перед выпуском на публику, а работу всяких расширений тестировать уже при их установке. И предпочтение следует отдавать плагинам, использующим ООП - они в этом смысле безопаснее.
__________________
Отпилю лишнее, прикручу нужное, выправлю кривое.
Вытравлю вредителей.
Sitealert вне форума   Ответить с цитированием
Сказали спасибо 2 пользователей:
Старый 14.02.2019, 23:54   #26
Sly32
Академик
 
Регистрация: 29.03.2012
Адрес: Minsk
Сообщений: 1,489
Репутация: 69952

По умолчанию Re: Нужно ли в дочерней теме WP окутывать функцию тегом ! function_exists ?

Господи - спасибо тебе что я могу забыть про эти ужасы пхп и вот такие вопросы, которые на 3 листа обсуждений! Смешали все в кучу...
Что касается стиля и хорошего тона - любая ошибка должна перехватываться, пользователь должен получать рабочий код а не падающий сайт. результат выполнения должен быть однозначным.
Соответственно - если есть сомнения - обязательно нужна проверка
Даже если это вордпресс)))
Sly32 вне форума   Ответить с цитированием
Сказали спасибо:
Старый 15.02.2019, 00:07   #27
Sitealert
Слесарь-сайтосборщик
 
Регистрация: 30.09.2016
Адрес: Замкадье
Сообщений: 4,037
Репутация: 296331

По умолчанию Re: Нужно ли в дочерней теме WP окутывать функцию тегом ! function_exists ?

Цитата:
Сообщение от Sly32 Посмотреть сообщение
если есть сомнения - обязательно нужна проверка
Я выше высказался именно в этом смысле
Цитата:
Сообщение от Sitealert Посмотреть сообщение
По сути, феншуйно было бы делать проверку на существование функции, и в случае положительного ответа выводить окошко с надписью "Разберитесь с вашей долбаной функцией!".
Sitealert вне форума   Ответить с цитированием
Старый 15.02.2019, 01:31   #28
ChrisKorr
Дипломник
 
Регистрация: 26.02.2016
Сообщений: 65
Репутация: -159

ТопикСтартер Re: Нужно ли в дочерней теме WP окутывать функцию тегом ! function_exists ?

Цитата:
Сообщение от Sitealert Посмотреть сообщение
Естественно. Патамушта тут как раз дилемма.
1. Если обернуть определение функции в !function_exists, и кто-то определит функцию с таким же названием выше по коду до Вашего определения, то Ваше определение перестанет работать и Вы, как выше отметил Gerga, получите непредсказуемый результат.
2. Если не оборачивать определение функции в !function_exists, и кто-то определит функцию с таким же названием выше по коду до Вашего определения, то PHP выдаст фатальную ошибку и сайт перестанет работать.

Вот и выбирайте, 50/50. С учётом того, что пользовательских функций может быть и сто, и двести, и сколько угодно, и срабатывают они в самых разных ситуациях (например, не подключен какой-то файл - всё работает, подключился по запросу - перестало работать) - вообще развлечение не для ленивых получается. Поэтому Gerga и написал. что уж пусть лучше ошибку выдаст, чем криво работать будет. Если сайт упадёт - это сразу будет видно, а если кому-то цену на товар будет показывать 100 рублей вместо 150 - не сразу заметите.

Короче, идеального решения тут нет. Главное, чтобы Вы сами понимали риски каждого из вариантов. Исходя из того, что функции темы первичны, а прочие дополнения и расширения вторичны, правильнее не оборачивать функции темы в !function_exists - так Вы всегда будете уверены, что эта функция никогда не изменит своего поведения. При этом следует тщательно протестировать сайт перед выпуском на публику, а работу всяких расширений тестировать уже при их установке. И предпочтение следует отдавать плагинам, использующим ООП - они в этом смысле безопаснее.
Да, это я понял. Но меня интересует еще вот такой момент...
Допустим я взял функцию с родительской без !function_exists, запихнул ее в к примеру в function.php своей дочерней темы и переделал ее под себя и т.д... Как мы выяснили здесь пофиг, сайт будет работать...
Но!
Что если через год автор родительской темы выпустит обновление этой темы, и что если обновлению будет подвержена эта функция, которую я изменил? Как в этом случае будет лучше, чтобы сохранить мою измененную работающую функцию при обновлении темы: 1) оставить ее без !function_exists или 2) все же обернуть в !function_exists заранее.
ChrisKorr вне форума   Ответить с цитированием
Старый 15.02.2019, 02:29   #29
Sitealert
Слесарь-сайтосборщик
 
Регистрация: 30.09.2016
Адрес: Замкадье
Сообщений: 4,037
Репутация: 296331

По умолчанию Re: Нужно ли в дочерней теме WP окутывать функцию тегом ! function_exists ?

Цитата:
Сообщение от ChrisKorr Посмотреть сообщение
Что если через год автор родительской темы выпустит обновление этой темы, и что если обновлению будет подвержена эта функция, которую я изменил?
Вы же её переписали под свои нужды - для того функции в родительской теме и оборачивают, чтобы Вы их переписывать могли. Сначала читается дочерняя тема. Авторы тем не идиоты, чтобы снимать обёртку.
Sitealert вне форума   Ответить с цитированием
Сказали спасибо 2 пользователей:
Старый 15.02.2019, 10:40   #30
Sly32
Академик
 
Регистрация: 29.03.2012
Адрес: Minsk
Сообщений: 1,489
Репутация: 69952

По умолчанию Re: Нужно ли в дочерней теме WP окутывать функцию тегом ! function_exists ?

Цитата:
Сообщение от Sitealert Посмотреть сообщение
Я выше высказался именно в этом смысле
Так я же с вами полностью согласен!
У нас в компании на сегодня в процессе разработки сейчас как минимум
- discover
- refactoring
- unit test
- review code
- QA test
- pull request
еще и ретроспективы встречаются. Понятно что это все для проектов, немного сложнее чем интернет-магазины, но все равно это очень дисциплинирует)))
Если я выдам код, не покрытый тестами и который от любого плагина упадет - меня прилюдно распнут)))

---------- Добавлено 15.02.2019 в 10:45 ----------

Цитата:
Сообщение от ChrisKorr Посмотреть сообщение
Что если через год автор родительской темы выпустит обновление этой темы
У меня такое впечатление, что вы не понимаете зачем вообще эта проверка! Sitealert, вам же подробно разложил уже не раз!
Sly32 вне форума   Ответить с цитированием
Сказали спасибо:
Ответ

Метки
php , wordpress




Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Текущее время: 06:52. Часовой пояс GMT +3.

Регистрация Справка Календарь Поддержка Все разделы прочитаны