Czołem!
Potrzebuję szybkiej rady. Jak rozwiązujecie taki konkretny problem, że w dużej aplikacji często odnosicie się w projekcie do jakichś zmiennych?
Nie chcę korzystać z globalnych.
Zacząłem stosować takie proste rozwiązanie, w postaci klasy ze zmiennymi statycznymi. Ma to tę zaletę, że w ten sposób mogę łatwo znaleźć interesującą zmienną, korzystając z podpowiedzi w IDE.
<?php
namespace tmc\mailboo\src\_Controllers;
use tmc\mailboo\src\App;
/**
* Class Vars.
* Defines some constant variables for access inside the project.
*/
class Vars {
public static $Email_PostType_Slug;
public static $Email_PostType_MetaKey_Type;
public static $Email_PostType_MetaKey_HeaderFromName;
public static $Email_PostType_MetaKey_HeaderFromEmail;
public static $Email_PostType_MetaKey_HeaderReplyToEmail;
public static $Subscriber_PostType_Slug;
public static $List_Taxonomy_Slug;
public static $List_Term_WpUsers_Slug;
public static $List_Term_WpUsers_MetaKey_Protected;
/**
* Initialization of variables.
* Should be called inside App::setUp().
*/
public static function init() {
static::$Email_PostType_Slug = App::getPrefix( '_email' );
static::$Email_PostType_MetaKey_Type = 'email_type';
static::$Email_PostType_MetaKey_HeaderFromName = 'header_from_name';
static::$Email_PostType_MetaKey_HeaderFromEmail = 'header_from_email';
static::$Email_PostType_MetaKey_HeaderReplyToEmail = 'header_reply_to_email';
static::$Subscriber_PostType_Slug = App::getPrefix( '_subscriber' );
static::$List_Taxonomy_Slug = App::getPrefix( '_list' );
static::$List_Term_WpUsers_Slug = 'wordpress_users';
static::$List_Term_WpUsers_MetaKey_Protected = 'protected';
}
}
Najpierw odpalam sobie Vars::init()
;
a później mam już dostęp do reszty w dowolnym miejscu w projekcie.
np. echo Vars::$Email_PostType_Slug
;
Czy istnieje jakiś design pattern, który byłoby lepiej zastosować? Ktoś spotkał się kiedyś z takim "problemem"?
Przypominam, że zależy mi na podpowiedziach w IDE ( Ctrl + space ).