忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/05/27 22:47 |
ZF2.0 Zend\Math\Rand
Zend\Math\Randは、ランダムな値を取得できるよ、という非常にわかりやすい機能を持つクラスです。

mt_srand()とかと何が違うのかというと、ランダムっぽい処理が色々使えるということでしょうか。

<?php
	require_once('path/to/channel/vendor/autoload.php');
	
	// true/false
	$strBoolean = Zend\Math\Rand::getBoolean();
	
	// int
	$randInt = Zend\Math\Rand::getInteger(0, 1000);
	
	// float
	$randFloat = Zend\Math\Rand::getFloat();
	
	// 文字列 [A-Za-z0-9+/]
	$randString = Zend\Math\Rand::getString(50);
	// 引数の文字だけを使う
	$randString2 = Zend\Math\Rand::getString(50, '0123456789abcdef');
	
	// バイト列
	$strBytes = Zend\Math\Rand::getBytes(50);
見てのとおり、簡単にランダムな値を得ることができました。
getBoolean()はtrueかfalse、getInteger()は整数値、getFloat()は0から1のfloat値、getString()は文字列を返してくれます。
実際はどれも内部でgetBytes()を呼び出しており、その結果を色々整形して返しています。
getBytes()はopenssl_random_pseudo_bytes()mcrypt_create_iv()chr(mt_rand(0, 255))の順で、使用可能な暗号化関数を用いてランダム値を生成します。

これでランダムな文字列が欲しくなったので自力で作ったはいいが実は何処かに脆弱性があった、なんて羽目にならなくて済むでしょう。

ちなみにどうでもいいのですが、Zend\Math\Randは継承するクラスもないのにあえてabstractクラスにすることによって、インスタンスの生成を防いでいるようです。
そんな使い方があったのか。
PR


2012/10/29 23:28 | Comments(0) | PHP

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<Minecraft1.3.2 Socrazy10's Colored Tools V1 カラフルなダイヤツールを追加 | HOME | 買ったものリスト 2012/10/28>>
忍者ブログ[PR]