[PHP-users 26409] セッションをクラスで管理したい

古川敦史 agl @ mbi.nifty.com
2005年 8月 10日 (水) 13:05:32 JST


古川@フリーランスSEです。
セッション管理用にクラスを作ってみたのですが、うまく動きません。
どこか考え方が間違っているのでしょうか?

環境は
OS:Win2k
PHP:国際化版PHP 4.2.3

コードは以下のとおりです
--
class agSession {
    function &manager($class, $init1=null, $init2=null)
    {
        if (!defined('AG_SESSION_KEY')) { define('AG_SESSION_KEY', '_AG_SESSION_KEY'); }
        if ($class=='')    return false;
        if (!isset($_SESSION[AG_SESSION_KEY][$class])) {
            $_SESSION[AG_SESSION_KEY][$class] = new $class($init1, $init2);
        }
        $instance = & $_SESSION[AG_SESSION_KEY][$class];
        return $instance;
    }
}
--

テストコードは次のとおり
--
<?php
define('AG_SESSION_KEY', 'AG_SESSION_KEY');
class session_test {
    var $v = 0;
    function inc()
    {
        echo "value:",$this->v,"<br>\n";
        $this->v++;
    }
}
require_once 'agSession.inc';
$class = 'session_test';
session_start();
echo "Before:<pre>",var_dump($_SESSION)qs,"</pre>\n";
$test = & agSession::manager($class);

$test->inc();
?>
<a href="test1.php">inc</a><br>
<a href="test2.php">test</a>
<?php
echo "<pre>", var_dump($_SESSION), "</pre>\n";
?>
--

これでテストを実行すると
--
Before:

array(0) {
}

となり、セッションに何も入ってない状態になっています。
どこが悪いのでしょうか?

-- /Private
aglib (http://aglib.sourceforge.jp)、開発中
//Furukawa Atsushi / 古川 敦史
E-Mail: agl @ violet.plala.or.jp
Y!Messanger: KeePeeLue
Skype: atsushifx
MOBILE: 070-5010-5225
FAX: 020-4622-3018
HomePage: http://www.aglabo.com/agl/
          http://plaza.rakuten.co.jp/atsuhsifx/



PHP-users メーリングリストの案内