- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
SeVlad, где ты тут нашел убеждение? Без разницы, потому что у ТС нету этой политики на проект, т.е. он не понимает зачем ему нужен function_exists как обвертка функции.
Я дал возможность выбора для ТС.
Я не стал убеждать, что function_exists как обвертка функций - это хорошая практика программирования т.к. это не так. function_exists как обвертка функций это необходимость в некоторых случаях, а в некоторых это не нужно делать. Тут я хотел дать понять, что function_exists, в случае родительской темы, используется для реализации отношения "Родитель - Ребенок", а не ради хорошего тона или избежания ошибок. :(
где ты тут нашел убеждение?
Если бы не убедил - он бы делал правильно. Правильно - это проверять существовании подобных функции.
И не "без разницы". Ибо разница всё таки есть. См. резюме.
Если бы не убедил - он бы делал правильно. Правильно - это проверять существовании подобных функции.
И не "без разницы". Ибо разница всё таки есть. См. резюме.
Ребят, спасибо всем за такой спорный разговор между вами, я много чего понял. Единственное, что мне не очень понятно, почему это так называемое "правило хорошего тона" вы считаете обязательным. Я тут параллельно перелопатил целую кучу статей по этой теме и интересно, что мнения как и здесь разделилось 50/50. Интересное для себя утверждение нашел (по-моему в статье на wp-kama было), что обертывать этой функцией надо, если вы создаете свою тему (родительскую), особенно на продажу. А вот с дочерней можно не делать, если не планируете ее перепродавать, а будете использовать только в своих целях. Что думаете?
мнения как и здесь разделилось 50/50
Естественно. Патамушта тут как раз дилемма.
1. Если обернуть определение функции в !function_exists, и кто-то определит функцию с таким же названием выше по коду до Вашего определения, то Ваше определение перестанет работать и Вы, как выше отметил Gerga, получите непредсказуемый результат.
2. Если не оборачивать определение функции в !function_exists, и кто-то определит функцию с таким же названием выше по коду до Вашего определения, то PHP выдаст фатальную ошибку и сайт перестанет работать.
Вот и выбирайте, 50/50. С учётом того, что пользовательских функций может быть и сто, и двести, и сколько угодно, и срабатывают они в самых разных ситуациях (например, не подключен какой-то файл - всё работает, подключился по запросу - перестало работать) - вообще развлечение не для ленивых получается. Поэтому Gerga и написал. что уж пусть лучше ошибку выдаст, чем криво работать будет. Если сайт упадёт - это сразу будет видно, а если кому-то цену на товар будет показывать 100 рублей вместо 150 - не сразу заметите.
Короче, идеального решения тут нет. Главное, чтобы Вы сами понимали риски каждого из вариантов. Исходя из того, что функции темы первичны, а прочие дополнения и расширения вторичны, правильнее не оборачивать функции темы в !function_exists - так Вы всегда будете уверены, что эта функция никогда не изменит своего поведения. При этом следует тщательно протестировать сайт перед выпуском на публику, а работу всяких расширений тестировать уже при их установке. И предпочтение следует отдавать плагинам, использующим ООП - они в этом смысле безопаснее.
Господи - спасибо тебе что я могу забыть про эти ужасы пхп и вот такие вопросы, которые на 3 листа обсуждений! Смешали все в кучу...
Что касается стиля и хорошего тона - любая ошибка должна перехватываться, пользователь должен получать рабочий код а не падающий сайт. результат выполнения должен быть однозначным.
Соответственно - если есть сомнения - обязательно нужна проверка
Даже если это вордпресс)))
если есть сомнения - обязательно нужна проверка
Я выше высказался именно в этом смысле
По сути, феншуйно было бы делать проверку на существование функции, и в случае положительного ответа выводить окошко с надписью "Разберитесь с вашей долбаной функцией!".
Естественно. Патамушта тут как раз дилемма.
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 заранее.
Что если через год автор родительской темы выпустит обновление этой темы, и что если обновлению будет подвержена эта функция, которую я изменил?
Вы же её переписали под свои нужды - для того функции в родительской теме и оборачивают, чтобы Вы их переписывать могли. Сначала читается дочерняя тема. Авторы тем не идиоты, чтобы снимать обёртку.
Я выше высказался именно в этом смысле
Так я же с вами полностью согласен!
У нас в компании на сегодня в процессе разработки сейчас как минимум
- discover
- refactoring
- unit test
- review code
- QA test
- pull request
еще и ретроспективы встречаются. Понятно что это все для проектов, немного сложнее чем интернет-магазины, но все равно это очень дисциплинирует)))
Если я выдам код, не покрытый тестами и который от любого плагина упадет - меня прилюдно распнут)))
---------- Добавлено 15.02.2019 в 10:45 ----------
Что если через год автор родительской темы выпустит обновление этой темы
У меня такое впечатление, что вы не понимаете зачем вообще эта проверка! Sitealert, вам же подробно разложил уже не раз!
Как мы выяснили здесь пофиг, сайт будет работать...
Пофиг, если вы не понимаете и программирование это не ваше дело, которым вы зарабатываете. Иначе, если вы понимаете и программирование ваше дело, function_exists как обвертка функций специально ставится или опускается, т.е. используется как инструмент достижения цели, а не тупо везде ставится или не ставится.
---------- Добавлено 15.02.2019 в 10:59 ----------
Что если через год
Детский сад. А что если вы завтра не проснетесь?
---------- Добавлено 15.02.2019 в 11:30 ----------
Что касается стиля и хорошего тона - любая ошибка должна перехватываться, пользователь должен получать рабочий код а не падающий сайт. результат выполнения должен быть однозначным.
Конечно. Но ошибка
может появиться при работе над сайтом, само по себе она не появится. Например если я добавил новую функцию и вижу ошибку previously declared, я просто переименую ее.