Tag: PHP

PHPのお勉強メモ Edit

extract Edit

連想配列の値を変数として扱うことができる。

$a = array('hoge' => '1', 'foo' => '2');
extract($a);
echo $hoge; // 1を出力
echo $foo; // 2を出力

クラス名を動的に切り替えてインスタンスを生成する Edit

newするときにクラス名の部分を変数にすることができる。

class Sample {

}

$className = 'Sample';
$obj =& new $className();

プロパティ名を動的に切り替えてセットする。 Edit

プロパティ名も変数にできる。

class Sample {
  var $flag = '1';
}

$obj =& new Sample();
$propertyName = 'flag';
$obj->$propertyName = '2';
echo $obj->$propertyName; // 2が出力される。

クラスのメソッドを動的にコールする。 Edit

class Sample {
  function callfunc($method, $messages) {
    call_user_func_array(array(&$this, $method), $messages);
  }

  function hello($msg) {
    echo $msg;
  }
}

$obj =& new Sample();
$obj->callfunc('hello', 'world');
// callfunc()メソッドを経由して、hello()メソッドに'world'を引数として呼び出される。

Singletonの実現方法 Edit

getInstanceメソッドでインスタンスを取得するようにし、static変数でオブジェクトを返す。

class ClassRegistry{

  var $_objects = array();

  function &getInstance() {
    static $instance = array();
    if (!$instance) {
      $instance[0] = &new ClassRegistry;
    }
     return $instance[0];
  }
  
  function addObject($key, &$object) {
    $_this =& ClassRegistry::getInstance();
    $key = strtolower($key);
    if (array_key_exists($key, $_this->_objects) === false) {
      $_this->_objects[$key] = &$object;
    }
  }

  function removeObject($key) {
    $_this =& ClassRegistry::getInstance();
    $key = strtolower($key);
    if (array_key_exists($key, $_this->_objects) === true) {
      unset($_this->_objects[$key]);
    }
  }
  
  function isKeySet($key) {
    $_this =& ClassRegistry::getInstance();
    $key = strtolower($key);
    return array_key_exists($key, $_this->_objects);
  }
  
  function &getObject($key) {
    $_this =& ClassRegistry::getInstance();
    $key = strtolower($key);
    return $_this->_objects[$key];
  }
}

関連ページ Edit

ページ新規作成:

コメント Edit


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS