articles

2011 年 1 月 28 日

PHP スタティックに弱い

スタティックに呼び出されることを想定したというか
インスタンスが持たない値はクラスが持つべき?
なんだか、なんでもインスタンス用の変数にしてましたが
よくないなとおもいました。



class Test(){
 static $test_var1;
 var $test_var2

 function __construct(){
  //インスタンス内での呼び出し
  self::$test_var1;
  $this->test_var2;
 }
}

print Test::test_var1;
$test=new Test();
print $test->test_var2

2011 年 1 月 26 日

PHP staticで関数内の変数を保持

関数内の変数を保持したいばあい。
これよく忘れてしまいます。

function createList($data){
	static $num=1;//この変数は関数内で保存されます。
	$num++;
	if($num>4) $num=1;
	return $list;
}

2010 年 9 月 22 日

PHP mail()の関数変更

CATEGORYmailPHP   TAG 9:55 PM

もう何回もPHPのメールはやってるのですが、
どうもサーバによってうまくいかなかったりします。
おそらく、ヘッダ作成がうまくいってないんでしょうね。
改造しました。
本来ヘッダのパラメータ区切り文字はCRLFだそうですが、LFでやってあります。
パラメータ間のスペースを削除してLFにするとうまくいく事がありました。
サーバーの仕様によってちがうみたいで、ややこしいです。


class Sendmail{
	
	/*
	$option=array(
			"to"=>test@test.com, 
			"subject"=>"タイトル",
			"body"=>"本文",
			"from_name"=>"送信者",
			"from_email"=>"form@test.com"
	);
	*/
	
	function __construct($option){
		$this->encoding="utf-8";
		$this->encoding_upper=strtoupper($this->encoding); 
		//print $this->encoding_upper;
		mb_language("ja");
		mb_internal_encoding($this->encoding);
		$this->option=$option;
	}
	
	function mimeHeader($str){
		//print "mimeHeader";
		return mb_encode_mimeheader(mb_convert_encoding($str,"ISO-2022-JP",$this->encoding_upper));
		
	}
	
	function send(){
		extract($this->option);
		$f_from_name=$this->mimeHeader($from_name);
		$headers= "MIME-Version: 1.0\nFrom: {$f_from_name}<{$from_email}>\nContent-Type: text/plain;charset=ISO-2022-JP \n";
		if($reply=="true") $headers .= "Reply-To: {$f_from_name} <{$from_email}> \n ";
		
		$subject =$this->mimeHeader($subject);
		$body = mb_convert_encoding($body, "ISO-2022-JP",$this->encoding_upper);
		
		$sendmail_params  = "-f$from_email";
		$result = mail($to, $subject, $body, $headers, $sendmail_params);
		return $result;
	}
	
}

2010 年 8 月 27 日

PHP splitの代わりにexplodeを使う

CATEGORYPHP   TAG 6:43 PM

なんやかんやでずっと使ってました、split();

explode()がいいんですね。さようならsplit();


$str = 'one|two|three|four';

// 正の値を持つ limit
print_r(explode('|', $str, 2));

// 負の値を持つ limit (PHP 5.1 以降)
print_r(explode('|', $str, -1));

2010 年 3 月 12 日

PHP splintfはよく使うはず

CATEGORYPHP   TAG 9:19 PM

なのに、よく忘れてしまうのでメモします。

$var=5;
echo splintf("%02d",$var);//2桁で出力

よくこんなカンジで使ってました。

$var=5;
$figures=2
echo splintf("%0{$figures}d",$var);//$figures桁で出力

調べるとこんな使い方も

$nowDate = sprintf("%04d年%02d月%02d日", $year, $month, $day);

使うべきでした。

2010 年 3 月 3 日

PHP ファイルの絶対パスやディレクトリ名取得

CATEGORYPHP   TAG 12:53 PM

ファイルの絶対パス取得方法です。
こんなことも知らずによくやってました。

realpath('test.php')

「リアルパス」ってなにかいいですね。

$path_data = pathinfo('test.php');
$path_data['dirname']; //ディレクトリ名
$path_data['basename']; //ファイル名
$path_data['extension']; //拡張子
print_r($path_data);

拡張子なども取得できるんですね。
なんてこった。
拡張子は正規表現で取得してました・・・

頑張ります。

2010 年 2 月 16 日

PHP getcwd()とdirname(__FILE__)

CATEGORYPHP   TAG 12:01 PM

getcwd()とdirname(__FILE__)の違いがよくわかりませんが、
どちらもカレントディレクトリのパスを取得するようです。

getcwd()ではincludeされたとき、includeした
ファイルのパスを返すそうです。

使う事があまりなかったのですが、使っていきます。

2009 年 12 月 16 日

PHP array_mergeについて

CATEGORYarrayPHP   TAG 6:33 PM

どうもarray_mergeでは、キーが振り直されるカンジがするなあと
おもっていましたが、ちゃんとマニュアルに記載されていました。

http://manual.xwd.jp/function.array-merge.html

それが嫌なときは”+”を使えということらしいです。

$result = $array1 + $array2;