<?php
/**
* 文字列クラス
*
* PHP version 5
*
* @package    core
* @author     stk2k <stk2k@sazysoft.com>
* @copyright  2008 stk2k, sazysoft
*/

class charcoal_String
{
	private $_data;
	private $_encoding;

	/*
	 *	コンストラクタ
	 */
	public function __construct( $data, $encoding = NULL )
	{
		$this->_data      = $data;
		$this->_encoding  = $encoding ? $encoding : charcoal_Profile::getString('PHP_CODE');
	}

	/*
	 *	エンコーディング変換
	 */
	public function convertEncoding( $to_encoding )
	{
		// 変換元エンコーディングを決定
		switch ( $this->_encoding ){
		case 'HTML_CODE':
		case 'DB_CODE':
		case 'PHP_CODE':
		case 'LOG_CODE':
			$from_encoding = chacoal_Profile::getString( $this->_encoding );
		default:
			$from_encoding = $this->_encoding;
		}

		// 変換先エンコーディングを決定
		switch ( $to_encoding ){
		case 'HTML_CODE':
		case 'DB_CODE':
		case 'PHP_CODE':
		case 'LOG_CODE':
			$to_encoding = charcoal_Profile::getString( $to_encoding );
		}

		$str = mb_convert_encoding( $this->_data, $to_encoding, $from_encoding );

		return new charcoal_String( $str, $to_encoding );
	}

	/*
	 *	文字列化
	 */
	public function __toString()
	{
//		return $this->_data . "(" . $this->_encoding . ")";
		return is_string($this->_data) ? $this->_data : '';
	}

}
