better-staridc-MNBT
1<?php
2/**
3 * 插件生命周期:加载、文本域、激活/停用入口。
4 *
5 * @package MnbtWp
6 */
7
8namespace MnbtWp;
9
10if ( ! defined( 'ABSPATH' ) ) {
11 exit;
12}
13
14/**
15 * 插件主类(单例)。
16 */
17final class Plugin {
18
19 /**
20 * 单例实例。
21 *
22 * @var Plugin|null
23 */
24 private static $instance = null;
25
26 /**
27 * 获取单例。
28 *
29 * @return Plugin
30 */
31 public static function instance() {
32 if ( null === self::$instance ) {
33 self::$instance = new self();
34 }
35 return self::$instance;
36 }
37
38 /**
39 * 构造:加载依赖并挂载钩子。
40 */
41 private function __construct() {
42 $this->includes();
43 $this->hooks();
44 }
45
46 /**
47 * 加载插件类文件(按依赖顺序)。
48 */
49 private function includes() {
50 require_once MNBTWP_DIR . 'includes/class-activator.php';
51 require_once MNBTWP_DIR . 'includes/class-crypto.php';
52 require_once MNBTWP_DIR . 'includes/class-logger.php';
53 require_once MNBTWP_DIR . 'includes/class-helpers.php';
54 require_once MNBTWP_DIR . 'includes/mnbt/class-exception.php';
55 require_once MNBTWP_DIR . 'includes/mnbt/interface-provider.php';
56 require_once MNBTWP_DIR . 'includes/mnbt/class-client.php';
57 require_once MNBTWP_DIR . 'includes/services/class-provision.php';
58 require_once MNBTWP_DIR . 'includes/services/class-billing.php';
59 require_once MNBTWP_DIR . 'includes/services/class-cron.php';
60 require_once MNBTWP_DIR . 'includes/woocommerce/class-woo.php';
61 require_once MNBTWP_DIR . 'includes/front/class-front.php';
62
63 if ( is_admin() ) {
64 require_once MNBTWP_DIR . 'includes/admin/class-admin.php';
65 }
66 }
67
68 /**
69 * 挂载全局钩子。
70 */
71 private function hooks() {
72 add_action( 'init', array( $this, 'load_textdomain' ) );
73
74 \MnbtWp\Services\Cron::init();
75
76 if ( class_exists( 'WooCommerce' ) ) {
77 new \MnbtWp\Woo\Woo();
78 }
79
80 if ( ! is_admin() ) {
81 new Front();
82 } else {
83 new Admin();
84 }
85 }
86
87 /**
88 * 加载语言包。
89 */
90 public function load_textdomain() {
91 load_plugin_textdomain( 'wp-seller-plugin', false, dirname( plugin_basename( MNBTWP_FILE ) ) . '/languages' );
92 }
93
94 /**
95 * 激活钩子。
96 */
97 public static function activate() {
98 require_once MNBTWP_DIR . 'includes/class-activator.php';
99 Activator::activate();
100 }
101
102 /**
103 * 停用钩子。
104 */
105 public static function deactivate() {
106 require_once MNBTWP_DIR . 'includes/class-activator.php';
107 Activator::deactivate();
108 }
109}