Reputation: 141
Currently working with Cakephp v3 and i wonder on how to create a model with static data, such as Country list for example.
It would be desirable to keep all the functionality and features as in a regular model, specially when it comes to associate it with a regular database table models, but storing the data in a static way (such as array for instance), avoiding creating and maintaining a table within the database, as country data will suffer no changes.
Upvotes: 1
Views: 287
Reputation: 25698
Just use a regular php class instead of extending anything from Cake. Overall, I would always try to decouple all my business logic from the framework.
This is what we do, using 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)',
];
}
}
Upvotes: 2