首页 > 解决方案 > Cakephp如何创建无表模型?

问题描述

目前正在使用 Cakephp v3,我想知道如何使用静态数据创建模型,例如国家/地区列表。

我想做什么:

为什么我想这样做:

在本质上:

最好保留常规模型中的所有功能和特性,特别是在将其与常规数据库表模型相关联时,但以静态方式存储数据(例如数组),避免创建和在数据库中维护一个表,因为国家数据不会发生变化。

标签: phpcakephp

解决方案


只需使用常规的 php 类,而不是从 Cake 扩展任何东西。总的来说,我总是会尝试将我所有的业务逻辑与框架分离。

这就是我们所做的,使用 myclabs/php-enum:

<?php
declare(strict_types=1);

namespace App\Domain\Common\Model;

use MyCLabs\Enum\Enum;

/**
 * Currency
 * @method static Currency DEFAULT()
 * @method static Currency CHF()
 * @method static Currency JPY()
 * @method static Currency USD()
 * @method static Currency EUR()
 */
class Currency extends Enum
{
    const DEFAULT = self::CHF;
    const AFN = 'AFN';
    const AFA = 'AFA';
    const ALL = 'ALL';
    const ALK = 'ALK';
    const DZD = 'DZD';
    const ADP = 'ADP';
    const AOA = 'AOA';
    const AOK = 'AOK';
    const AON = 'AON';
    const AOR = 'AOR';
    const ARA = 'ARA';
    const ARS = 'ARS';
    const ARM = 'ARM';
    const ARP = 'ARP';
    const ARL = 'ARL';
    const AMD = 'AMD';
    const AWG = 'AWG';
    const AUD = 'AUD';
    const ATS = 'ATS';
    const AZN = 'AZN';
    const AZM = 'AZM';
    const BSD = 'BSD';
    const BHD = 'BHD';
    const BDT = 'BDT';
    const BBD = 'BBD';
    const BYN = 'BYN';
    const BYB = 'BYB';
    const BYR = 'BYR';
    const BEF = 'BEF';
    const BEC = 'BEC';
    const BEL = 'BEL';
    const BZD = 'BZD';
    const BMD = 'BMD';
    const BTN = 'BTN';
    const BOB = 'BOB';
    const BOL = 'BOL';
    const BOV = 'BOV';
    const BOP = 'BOP';
    const BAM = 'BAM';
    const BAD = 'BAD';
    const BAN = 'BAN';
    const BWP = 'BWP';
    const BRC = 'BRC';
    const BRZ = 'BRZ';
    const BRE = 'BRE';
    const BRR = 'BRR';
    const BRN = 'BRN';
    const BRB = 'BRB';
    const BRL = 'BRL';
    const GBP = 'GBP';
    const BND = 'BND';
    const BGL = 'BGL';
    const BGN = 'BGN';
    const BGO = 'BGO';
    const BGM = 'BGM';
    const BUK = 'BUK';
    const BIF = 'BIF';
    const XPF = 'XPF';
    const KHR = 'KHR';
    const CAD = 'CAD';
    const CVE = 'CVE';
    const KYD = 'KYD';
    const XAF = 'XAF';
    const CLE = 'CLE';
    const CLP = 'CLP';
    const CLF = 'CLF';
    const CNX = 'CNX';
    const CNY = 'CNY';
    const COP = 'COP';
    const COU = 'COU';
    const KMF = 'KMF';
    const CDF = 'CDF';
    const CRC = 'CRC';
    const HRD = 'HRD';
    const HRK = 'HRK';
    const CUC = 'CUC';
    const CUP = 'CUP';
    const CYP = 'CYP';
    const CZK = 'CZK';
    const CSK = 'CSK';
    const DKK = 'DKK';
    const DJF = 'DJF';
    const DOP = 'DOP';
    const NLG = 'NLG';
    const XCD = 'XCD';
    const DDM = 'DDM';
    const ECS = 'ECS';
    const ECV = 'ECV';
    const EGP = 'EGP';
    const GQE = 'GQE';
    const ERN = 'ERN';
    const EEK = 'EEK';
    const ETB = 'ETB';
    const EUR = 'EUR';
    const XEU = 'XEU';
    const FKP = 'FKP';
    const FJD = 'FJD';
    const FIM = 'FIM';
    const FRF = 'FRF';
    const XFO = 'XFO';
    const XFU = 'XFU';
    const GMD = 'GMD';
    const GEK = 'GEK';
    const GEL = 'GEL';
    const DEM = 'DEM';
    const GHS = 'GHS';
    const GHC = 'GHC';
    const GIP = 'GIP';
    const GRD = 'GRD';
    const GTQ = 'GTQ';
    const GWP = 'GWP';
    const GNF = 'GNF';
    const GNS = 'GNS';
    const GYD = 'GYD';
    const HTG = 'HTG';
    const HNL = 'HNL';
    const HKD = 'HKD';
    const HUF = 'HUF';
    const ISK = 'ISK';
    const ISJ = 'ISJ';
    const INR = 'INR';
    const IDR = 'IDR';
    const IRR = 'IRR';
    const IQD = 'IQD';
    const IEP = 'IEP';
    const ILS = 'ILS';
    const ILP = 'ILP';
    const ILR = 'ILR';
    const ITL = 'ITL';
    const JMD = 'JMD';
    const JPY = 'JPY';
    const JOD = 'JOD';
    const KZT = 'KZT';
    const KES = 'KES';
    const KWD = 'KWD';
    const KGS = 'KGS';
    const LAK = 'LAK';
    const LVL = 'LVL';
    const LVR = 'LVR';
    const LBP = 'LBP';
    const LSL = 'LSL';
    const LRD = 'LRD';
    const LYD = 'LYD';
    const LTL = 'LTL';
    const LTT = 'LTT';
    const LUL = 'LUL';
    const LUC = 'LUC';
    const LUF = 'LUF';
    const MOP = 'MOP';
    const MKD = 'MKD';
    const MKN = 'MKN';
    const MGA = 'MGA';
    const MGF = 'MGF';
    const MWK = 'MWK';
    const MYR = 'MYR';
    const MVR = 'MVR';
    const MVP = 'MVP';
    const MLF = 'MLF';
    const MTL = 'MTL';
    const MTP = 'MTP';
    const MRO = 'MRO';
    const MUR = 'MUR';
    const MXV = 'MXV';
    const MXN = 'MXN';
    const MXP = 'MXP';
    const MDC = 'MDC';
    const MDL = 'MDL';
    const MCF = 'MCF';
    const MNT = 'MNT';
    const MAD = 'MAD';
    const MAF = 'MAF';
    const MZE = 'MZE';
    const MZN = 'MZN';
    const MZM = 'MZM';
    const MMK = 'MMK';
    const NAD = 'NAD';
    const NPR = 'NPR';
    const ANG = 'ANG';
    const TWD = 'TWD';
    const NZD = 'NZD';
    const NIO = 'NIO';
    const NIC = 'NIC';
    const NGN = 'NGN';
    const KPW = 'KPW';
    const NOK = 'NOK';
    const OMR = 'OMR';
    const PKR = 'PKR';
    const PAB = 'PAB';
    const PGK = 'PGK';
    const PYG = 'PYG';
    const PEI = 'PEI';
    const PEN = 'PEN';
    const PES = 'PES';
    const PHP = 'PHP';
    const PLN = 'PLN';
    const PLZ = 'PLZ';
    const PTE = 'PTE';
    const GWE = 'GWE';
    const QAR = 'QAR';
    const XRE = 'XRE';
    const RHD = 'RHD';
    const RON = 'RON';
    const ROL = 'ROL';
    const RUB = 'RUB';
    const RUR = 'RUR';
    const RWF = 'RWF';
    const SVC = 'SVC';
    const WST = 'WST';
    const SAR = 'SAR';
    const RSD = 'RSD';
    const CSD = 'CSD';
    const SCR = 'SCR';
    const SLL = 'SLL';
    const SGD = 'SGD';
    const SKK = 'SKK';
    const SIT = 'SIT';
    const SBD = 'SBD';
    const SOS = 'SOS';
    const ZAR = 'ZAR';
    const ZAL = 'ZAL';
    const KRH = 'KRH';
    const KRW = 'KRW';
    const KRO = 'KRO';
    const SSP = 'SSP';
    const SUR = 'SUR';
    const ESP = 'ESP';
    const ESA = 'ESA';
    const ESB = 'ESB';
    const LKR = 'LKR';
    const SHP = 'SHP';
    const SDD = 'SDD';
    const SDG = 'SDG';
    const SDP = 'SDP';
    const SRD = 'SRD';
    const SRG = 'SRG';
    const SZL = 'SZL';
    const SEK = 'SEK';
    const CHF = 'CHF';
    const SYP = 'SYP';
    const STD = 'STD';
    const TJR = 'TJR';
    const TJS = 'TJS';
    const TZS = 'TZS';
    const THB = 'THB';
    const TPE = 'TPE';
    const TOP = 'TOP';
    const TTD = 'TTD';
    const TND = 'TND';
    const TRY = 'TRY';
    const TRL = 'TRL';
    const TMT = 'TMT';
    const TMM = 'TMM';
    const USD = 'USD';
    const USN = 'USN';
    const USS = 'USS';
    const UGX = 'UGX';
    const UGS = 'UGS';
    const UAH = 'UAH';
    const UAK = 'UAK';
    const AED = 'AED';
    const UYU = 'UYU';
    const UYP = 'UYP';
    const UYI = 'UYI';
    const UZS = 'UZS';
    const VUV = 'VUV';
    const VEF = 'VEF';
    const VEB = 'VEB';
    const VND = 'VND';
    const VNN = 'VNN';
    const CHE = 'CHE';
    const CHW = 'CHW';
    const XOF = 'XOF';
    const YDD = 'YDD';
    const YER = 'YER';
    const YUN = 'YUN';
    const YUD = 'YUD';
    const YUM = 'YUM';
    const YUR = 'YUR';
    const ZRN = 'ZRN';
    const ZRZ = 'ZRZ';
    const ZMW = 'ZMW';
    const ZMK = 'ZMK';
    const ZWD = 'ZWD';
    const ZWR = 'ZWR';
    const ZWL = 'ZWL';

    /**
     * @return array
     */
    public static function list(): array
    {
        return [
            self::AFN => 'Afghan Afghani',
            self::AFA => 'Afghan Afghani (1927–2002)',
            self::ALL => 'Albanian Lek',
            self::ALK => 'Albanian Lek (1946–1965)',
            self::DZD => 'Algerian Dinar',
            self::ADP => 'Andorran Peseta',
            self::AOA => 'Angolan Kwanza',
            self::AOK => 'Angolan Kwanza (1977–1991)',
            self::AON => 'Angolan New Kwanza (1990–2000)',
            self::AOR => 'Angolan Readjusted Kwanza (1995–1999)',
            self::ARA => 'Argentine Austral',
            self::ARS => 'Argentine Peso',
            self::ARM => 'Argentine Peso (1881–1970)',
            self::ARP => 'Argentine Peso (1983–1985)',
            self::ARL => 'Argentine Peso Ley (1970–1983)',
            self::AMD => 'Armenian Dram',
            self::AWG => 'Aruban Florin',
            self::AUD => 'Australian Dollar',
            self::ATS => 'Austrian Schilling',
            self::AZN => 'Azerbaijani Manat',
            self::AZM => 'Azerbaijani Manat (1993–2006)',
            self::BSD => 'Bahamian Dollar',
            self::BHD => 'Bahraini Dinar',
            self::BDT => 'Bangladeshi Taka',
            self::BBD => 'Barbadian Dollar',
            self::BYN => 'Belarusian Ruble',
            self::BYB => 'Belarusian Ruble (1994–1999)',
            self::BYR => 'Belarusian Ruble (2000–2016)',
            self::BEF => 'Belgian Franc',
            self::BEC => 'Belgian Franc (convertible)',
            self::BEL => 'Belgian Franc (financial)',
            self::BZD => 'Belize Dollar',
            self::BMD => 'Bermudan Dollar',
            self::BTN => 'Bhutanese Ngultrum',
            self::BOB => 'Bolivian Boliviano',
            self::BOL => 'Bolivian Boliviano (1863–1963)',
            self::BOV => 'Bolivian Mvdol',
            self::BOP => 'Bolivian Peso',
            self::BAM => 'Bosnia-Herzegovina Convertible Mark',
            self::BAD => 'Bosnia-Herzegovina Dinar (1992–1994)',
            self::BAN => 'Bosnia-Herzegovina New Dinar (1994–1997)',
            self::BWP => 'Botswanan Pula',
            self::BRC => 'Brazilian Cruzado (1986–1989)',
            self::BRZ => 'Brazilian Cruzeiro (1942–1967)',
            self::BRE => 'Brazilian Cruzeiro (1990–1993)',
            self::BRR => 'Brazilian Cruzeiro (1993–1994)',
            self::BRN => 'Brazilian New Cruzado (1989–1990)',
            self::BRB => 'Brazilian New Cruzeiro (1967–1986)',
            self::BRL => 'Brazilian Real',
            self::GBP => 'British Pound',
            self::BND => 'Brunei Dollar',
            self::BGL => 'Bulgarian Hard Lev',
            self::BGN => 'Bulgarian Lev',
            self::BGO => 'Bulgarian Lev (1879–1952)',
            self::BGM => 'Bulgarian Socialist Lev',
            self::BUK => 'Burmese Kyat',
            self::BIF => 'Burundian Franc',
            self::XPF => 'CFP Franc',
            self::KHR => 'Cambodian Riel',
            self::CAD => 'Canadian Dollar',
            self::CVE => 'Cape Verdean Escudo',
            self::KYD => 'Cayman Islands Dollar',
            self::XAF => 'Central African CFA Franc',
            self::CLE => 'Chilean Escudo',
            self::CLP => 'Chilean Peso',
            self::CLF => 'Chilean Unit of Account (UF)',
            self::CNX => 'Chinese People’s Bank Dollar',
            self::CNY => 'Chinese Yuan',
            self::COP => 'Colombian Peso',
            self::COU => 'Colombian Real Value Unit',
            self::KMF => 'Comorian Franc',
            self::CDF => 'Congolese Franc',
            self::CRC => 'Costa Rican Colón',
            self::HRD => 'Croatian Dinar',
            self::HRK => 'Croatian Kuna',
            self::CUC => 'Cuban Convertible Peso',
            self::CUP => 'Cuban Peso',
            self::CYP => 'Cypriot Pound',
            self::CZK => 'Czech Koruna',
            self::CSK => 'Czechoslovak Hard Koruna',
            self::DKK => 'Danish Krone',
            self::DJF => 'Djiboutian Franc',
            self::DOP => 'Dominican Peso',
            self::NLG => 'Dutch Guilder',
            self::XCD => 'East Caribbean Dollar',
            self::DDM => 'East German Mark',
            self::ECS => 'Ecuadorian Sucre',
            self::ECV => 'Ecuadorian Unit of Constant Value',
            self::EGP => 'Egyptian Pound',
            self::GQE => 'Equatorial Guinean Ekwele',
            self::ERN => 'Eritrean Nakfa',
            self::EEK => 'Estonian Kroon',
            self::ETB => 'Ethiopian Birr',
            self::EUR => 'Euro',
            self::XEU => 'European Currency Unit',
            self::FKP => 'Falkland Islands Pound',
            self::FJD => 'Fijian Dollar',
            self::FIM => 'Finnish Markka',
            self::FRF => 'French Franc',
            self::XFO => 'French Gold Franc',
            self::XFU => 'French UIC-Franc',
            self::GMD => 'Gambian Dalasi',
            self::GEK => 'Georgian Kupon Larit',
            self::GEL => 'Georgian Lari',
            self::DEM => 'German Mark',
            self::GHS => 'Ghanaian Cedi',
            self::GHC => 'Ghanaian Cedi (1979–2007)',
            self::GIP => 'Gibraltar Pound',
            self::GRD => 'Greek Drachma',
            self::GTQ => 'Guatemalan Quetzal',
            self::GWP => 'Guinea-Bissau Peso',
            self::GNF => 'Guinean Franc',
            self::GNS => 'Guinean Syli',
            self::GYD => 'Guyanaese Dollar',
            self::HTG => 'Haitian Gourde',
            self::HNL => 'Honduran Lempira',
            self::HKD => 'Hong Kong Dollar',
            self::HUF => 'Hungarian Forint',
            self::ISK => 'Icelandic Króna',
            self::ISJ => 'Icelandic Króna (1918–1981)',
            self::INR => 'Indian Rupee',
            self::IDR => 'Indonesian Rupiah',
            self::IRR => 'Iranian Rial',
            self::IQD => 'Iraqi Dinar',
            self::IEP => 'Irish Pound',
            self::ILS => 'Israeli New Shekel',
            self::ILP => 'Israeli Pound',
            self::ILR => 'Israeli Shekel (1980–1985)',
            self::ITL => 'Italian Lira',
            self::JMD => 'Jamaican Dollar',
            self::JPY => 'Japanese Yen',
            self::JOD => 'Jordanian Dinar',
            self::KZT => 'Kazakhstani Tenge',
            self::KES => 'Kenyan Shilling',
            self::KWD => 'Kuwaiti Dinar',
            self::KGS => 'Kyrgystani Som',
            self::LAK => 'Laotian Kip',
            self::LVL => 'Latvian Lats',
            self::LVR => 'Latvian Ruble',
            self::LBP => 'Lebanese Pound',
            self::LSL => 'Lesotho Loti',
            self::LRD => 'Liberian Dollar',
            self::LYD => 'Libyan Dinar',
            self::LTL => 'Lithuanian Litas',
            self::LTT => 'Lithuanian Talonas',
            self::LUL => 'Luxembourg Financial Franc',
            self::LUC => 'Luxembourgian Convertible Franc',
            self::LUF => 'Luxembourgian Franc',
            self::MOP => 'Macanese Pataca',
            self::MKD => 'Macedonian Denar',
            self::MKN => 'Macedonian Denar (1992–1993)',
            self::MGA => 'Malagasy Ariary',
            self::MGF => 'Malagasy Franc',
            self::MWK => 'Malawian Kwacha',
            self::MYR => 'Malaysian Ringgit',
            self::MVR => 'Maldivian Rufiyaa',
            self::MVP => 'Maldivian Rupee (1947–1981)',
            self::MLF => 'Malian Franc',
            self::MTL => 'Maltese Lira',
            self::MTP => 'Maltese Pound',
            self::MRO => 'Mauritanian Ouguiya',
            self::MUR => 'Mauritian Rupee',
            self::MXV => 'Mexican Investment Unit',
            self::MXN => 'Mexican Peso',
            self::MXP => 'Mexican Silver Peso (1861–1992)',
            self::MDC => 'Moldovan Cupon',
            self::MDL => 'Moldovan Leu',
            self::MCF => 'Monegasque Franc',
            self::MNT => 'Mongolian Tugrik',
            self::MAD => 'Moroccan Dirham',
            self::MAF => 'Moroccan Franc',
            self::MZE => 'Mozambican Escudo',
            self::MZN => 'Mozambican Metical',
            self::MZM => 'Mozambican Metical (1980–2006)',
            self::MMK => 'Myanmar Kyat',
            self::NAD => 'Namibian Dollar',
            self::NPR => 'Nepalese Rupee',
            self::ANG => 'Netherlands Antillean Guilder',
            self::TWD => 'New Taiwan Dollar',
            self::NZD => 'New Zealand Dollar',
            self::NIO => 'Nicaraguan Córdoba',
            self::NIC => 'Nicaraguan Córdoba (1988–1991)',
            self::NGN => 'Nigerian Naira',
            self::KPW => 'North Korean Won',
            self::NOK => 'Norwegian Krone',
            self::OMR => 'Omani Rial',
            self::PKR => 'Pakistani Rupee',
            self::PAB => 'Panamanian Balboa',
            self::PGK => 'Papua New Guinean Kina',
            self::PYG => 'Paraguayan Guarani',
            self::PEI => 'Peruvian Inti',
            self::PEN => 'Peruvian Sol',
            self::PES => 'Peruvian Sol (1863–1965)',
            self::PHP => 'Philippine Peso',
            self::PLN => 'Polish Zloty',
            self::PLZ => 'Polish Zloty (1950–1995)',
            self::PTE => 'Portuguese Escudo',
            self::GWE => 'Portuguese Guinea Escudo',
            self::QAR => 'Qatari Rial',
            self::XRE => 'RINET Funds',
            self::RHD => 'Rhodesian Dollar',
            self::RON => 'Romanian Leu',
            self::ROL => 'Romanian Leu (1952–2006)',
            self::RUB => 'Russian Ruble',
            self::RUR => 'Russian Ruble (1991–1998)',
            self::RWF => 'Rwandan Franc',
            self::SVC => 'Salvadoran Colón',
            self::WST => 'Samoan Tala',
            self::SAR => 'Saudi Riyal',
            self::RSD => 'Serbian Dinar',
            self::CSD => 'Serbian Dinar (2002–2006)',
            self::SCR => 'Seychellois Rupee',
            self::SLL => 'Sierra Leonean Leone',
            self::SGD => 'Singapore Dollar',
            self::SKK => 'Slovak Koruna',
            self::SIT => 'Slovenian Tolar',
            self::SBD => 'Solomon Islands Dollar',
            self::SOS => 'Somali Shilling',
            self::ZAR => 'South African Rand',
            self::ZAL => 'South African Rand (financial)',
            self::KRH => 'South Korean Hwan (1953–1962)',
            self::KRW => 'South Korean Won',
            self::KRO => 'South Korean Won (1945–1953)',
            self::SSP => 'South Sudanese Pound',
            self::SUR => 'Soviet Rouble',
            self::ESP => 'Spanish Peseta',
            self::ESA => 'Spanish Peseta (A account)',
            self::ESB => 'Spanish Peseta (convertible account)',
            self::LKR => 'Sri Lankan Rupee',
            self::SHP => 'St. Helena Pound',
            self::SDD => 'Sudanese Dinar (1992–2007)',
            self::SDG => 'Sudanese Pound',
            self::SDP => 'Sudanese Pound (1957–1998)',
            self::SRD => 'Surinamese Dollar',
            self::SRG => 'Surinamese Guilder',
            self::SZL => 'Swazi Lilangeni',
            self::SEK => 'Swedish Krona',
            self::CHF => 'Swiss Franc',
            self::SYP => 'Syrian Pound',
            self::STD => 'São Tomé & Príncipe Dobra',
            self::TJR => 'Tajikistani Ruble',
            self::TJS => 'Tajikistani Somoni',
            self::TZS => 'Tanzanian Shilling',
            self::THB => 'Thai Baht',
            self::TPE => 'Timorese Escudo',
            self::TOP => 'Tongan Paʻanga',
            self::TTD => 'Trinidad & Tobago Dollar',
            self::TND => 'Tunisian Dinar',
            self::TRY => 'Turkish Lira',
            self::TRL => 'Turkish Lira (1922–2005)',
            self::TMT => 'Turkmenistani Manat',
            self::TMM => 'Turkmenistani Manat (1993–2009)',
            self::USD => 'US Dollar',
            self::USN => 'US Dollar (Next day)',
            self::USS => 'US Dollar (Same day)',
            self::UGX => 'Ugandan Shilling',
            self::UGS => 'Ugandan Shilling (1966–1987)',
            self::UAH => 'Ukrainian Hryvnia',
            self::UAK => 'Ukrainian Karbovanets',
            self::AED => 'United Arab Emirates Dirham',
            self::UYU => 'Uruguayan Peso',
            self::UYP => 'Uruguayan Peso (1975–1993)',
            self::UYI => 'Uruguayan Peso (Indexed Units)',
            self::UZS => 'Uzbekistani Som',
            self::VUV => 'Vanuatu Vatu',
            self::VEF => 'Venezuelan Bolívar',
            self::VEB => 'Venezuelan Bolívar (1871–2008)',
            self::VND => 'Vietnamese Dong',
            self::VNN => 'Vietnamese Dong (1978–1985)',
            self::CHE => 'WIR Euro',
            self::CHW => 'WIR Franc',
            self::XOF => 'West African CFA Franc',
            self::YDD => 'Yemeni Dinar',
            self::YER => 'Yemeni Rial',
            self::YUN => 'Yugoslavian Convertible Dinar (1990–1992)',
            self::YUD => 'Yugoslavian Hard Dinar (1966–1990)',
            self::YUM => 'Yugoslavian New Dinar (1994–2002)',
            self::YUR => 'Yugoslavian Reformed Dinar (1992–1993)',
            self::ZRN => 'Zairean New Zaire (1993–1998)',
            self::ZRZ => 'Zairean Zaire (1971–1993)',
            self::ZMW => 'Zambian Kwacha',
            self::ZMK => 'Zambian Kwacha (1968–2012)',
            self::ZWD => 'Zimbabwean Dollar (1980–2008)',
            self::ZWR => 'Zimbabwean Dollar (2008)',
            self::ZWL => 'Zimbabwean Dollar (2009)',
        ];
    }
}

推荐阅读