Другие способы объявления класса PHP? - PullRequest
1 голос
/ 28 апреля 2020

Я пишу сложный тип продукта в Woocommerce, мне не нравится, как выглядит большинство кодов WordPress (по-моему, это немного неопрятно и не поэтично c), поэтому я решил использовать PHP Пространство имен и автозагрузка. Поэтому я должен объявить свой класс Product Type в той области, где WordPress может его забрать. Ниже приведен фактический способ сделать это.

add_action('init', function(){
    class WC_Product_Partner_Aware extends \WC_Product_Variable{
        // Content here is very large and seems very awkward to be in a file call function.php that contains other actions and filters
    }
});

Я хотел бы объявить этот класс в пространстве имен, которое имеет App/ProductType/ Я попробовал все, что ничего не работает, я также попробовал следующий код разочарования

add_action('init', function(){
    define('WC_Product_Partner_Aware', 'App/ProductType/PartnerAwareProduct');
});

Кто-нибудь может помочь? Я хотел бы быть поэтом-программистом, но WordPress заставляет эту строфу не рифмовать.

1 Ответ

2 голосов
/ 28 апреля 2020

Вы можете отделить свой класс от функции init. Просто убедитесь, что он доступен при запуске функции init.

add_action('init', function(){
    // you can call class with namespace if desired
    if(class_exists(\some\namespace\WC_Product_Partner_Aware)){
        $ppa = new \some\namespace\WC_Product_Partner_Aware();
        $ppa->doStuff();
    }

});

WC_Product_Partner_Awre. php

namespace some\namespace;
class WC_Product_Partner_Aware extends \WC_Product_Variable{
   //your properties and methods.
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...