超便利かもしれない設定保存用のクラス
これって超便利じゃね?と思ったので紹介。
すでにだれかが思いついてるだろうけど見たことないので。
ソース
<?php // EConfig.php class EConfig { private function __construct() { $state = @unserialize( substr( file_get_contents( __FILE__), __COMPILER_HALT_OFFSET__)); if( $state !== false) foreach( $state as $key => $value) $this->{$key} = $value; } public static function getInstance() { static $instance = null; if( $instance === null) $instance = new self(); return $instance; } public function __clone() { return $this->getInstance(); } public function __destruct() { $fp = fopen( __FILE__, 'r+'); flock( $fp, LOCK_EX); fseek( $fp, __COMPILER_HALT_OFFSET__); fwrite( $fp, serialize( get_object_vars( $this))); if( !feof( $fp)) ftruncate( $fp, ftell( $fp)); fclose( $fp); } } __halt_compiler();
使い方
簡単。
<?php include 'EConfig.php'; $config = EConfig::getInstance(); $config->basedir = 'hoge'; $config->path = 'path/to/fuga';
これで設定が保存されます。
<?php include 'EConfig.php'; var_dump( EConfig::getInstance());
これを実行すると、
object(EConfig)#11 (2) { ["basedir"]=> string(4) "hoge" ["path"]=> string(12) "path/to/fuga" }
きちんと設定が保存されていることがわかります。