1. UOPZ
Есть способ сделать это без необходимости копировать и поддерживать файл functions.php из ядра, но он включает расширение uopz (pecl install uopz
), тогда вы можете переименовать функцию magento (например, с foo
до foo_uopzOLD
). ) и определите свое собственное (https://secure.php.net/uopz)
Это работает и очень полезно для magento - обычно вы сталкиваетесь с чем-то, что не можете изменить. Uopz очень помогает в таких случаях.
профи: работает;), вам не нужно повторять его каждый раз, когда вы обновляете Magento (если вы все делаете правильно, потому что внутри вы все равно можете вызвать foo_uopzOLD
, чтобы вы могли обеспечить некоторую обратную совместимость ... в некоторых случаях ).
минусы: это немного неявно
2. Композитор post-install-cmd
Если вам не нравится вышеперечисленное, но вы используете composer, вы можете исправить любой файл, который вы хотите:
"scripts": {
"post-install-cmd": "patch -p0 < change-core-functions.patch"
}
плюсы: явные (когда сбой патча - установка композитора не удалась), а так как он явный - вы можете пересматривать и исправлять патч каждый раз при обновлении magento
cons: вы изменили основной файл, поэтому, возможно, вы захотите добавить его в .gitignore
3. Уродливое решение (более страшное, чем приведенное выше)
Если ничего из вышеперечисленного невозможно для вас (на самом деле, попробуйте с помощью composer - нет оправдания тому, что вы его не используете). Но когда ты действительно не можешь единственным способом, я могу думать о
- создать приложение / local / Mage / Core / functions.php
- определите эту функцию, которая вам нужна
- загрузить оригинал /app/core/Mage/Core/functions.php
- окружать каждый function foo() {...}
с
if(!function_exists("foo"){
function foo() {...}
}
- держись за стул и
eval
это SOB;)