あなたの問題はMVCとはほとんど関係がなく、グローバル変数またはグローバル値の使用に関連しています。
このクラスの多くは、通常、クラスごとに1つのインスタンス(「シングルトン」)を必要とし、状況によっては、シングルトンを回避できない場合があります。この場合、シングルトンを使用しても問題ありません。
多くの本、チュートリアルが教えていないこと、シングルトンをいつどこで初期化すべきか。プログラミング言語からプログラミング言語への変更。
また、別のページに移動すると変数の値が失われるWebサイトの場合、それは複雑になります。
「セッション変数」と呼ばれるこの概念があります。これはシングルトンと連携して機能し、あるページから別のページに移動するときに値を保持できるようにします。
http://php.net/manual/en/session.examples.basic.php
あなたがウェブサイトを持っているとしましょう。いくつかのファイルといくつかのページがあります。これらのphpファイルの一部は直接呼び出され、「Webページ」と見なされます(例:「index.php」)。
他のphpファイルはライブラリファイルであり、他のファイルによって「必須」または「含まれている」ものであり、それ自体は「Webページ」とは見なされません。
ユーザーがwbeページのリンクをクリックし、ブラウザーが別のWebページを呼び出すと、これらの値がすべて失われる可能性があります。デスクトップアプリケーションで別のフォームを開くのとは異なります。
ユーザーが初めてWebサイトにアクセスしたとき(例: "index.php"):メインファイルは他のファイルを「含む」または「必要とし」、グローバル変数またはシングルトンを初期化します。
<?php
// filename: "config.php"
// another includes or requires here
class Config
{
// begin data section
public static $UserName;
public static $UserPassword;
// end data section
// begin singleton section
private static $_instance;
public static function getInstance()
{
if (!self::$_instance instanceof self)
{
self::$_instance = new self;
}
return self::$_instance;
}
// end singleton section
// start session section
public static function SaveSession()
{
$_SESSION['config_username'] = Config::$UserName;
$_SESSION['config_password'] = Config::$UserPassword;
}
public static function RestoreSession()
{
Config::$UserName = $_SESSION['config_username'];
Config::$UserPassword = $_SESSION['config_password'];
}
// end session section
} // class Config
?>
<?php
// filename: "index.php"
include ("config.php");
// another includes or requires here
class Application
{
public static function main()
{
// prepare session variables
session_start();
// prepare singletons here
$instance = Config::getInstance();
// this code its an example
$instance->UserName = "johndoe";
$instance->UserPassword = "123";
$instance->SaveSession();
// all the page construction goes here
// ...
}
} //
// program starts here:
Application::main();
?>
ユーザーが別のページに変更すると、アプリケーションはセッションデータをシングルトンにリロードする必要があります。
<?php
// filename: "customers.php"
include ("config.php");
// another includes or requires here
class Application
{
public static function main()
{
// copy data from session to singletons
$instance->RestoreSession();
// all the page construction goes here
// ...
}
} //
// program starts here:
Application::main();
?>
シングルトン間には関係がなく、通常は独立した値です。
乾杯。