importVendors() -- 製造者のファイルをデータベースあるいは配列にインポートする
説明
このメソッドは、製造者のファイルをパースします。これは
http://anonsvn.wireshark.org/wireshark/trunk/manuf
のような形式のもので、MAC アドレスのプレフィックスとベンダーとの対応の一覧となっています。
パラメータ $doReturn が FALSE の場合、
このクラスのファクトリで指定したデータベースにデータがインポートされます。
しかし $doReturn が TRUE の場合は、返り値が連想配列となり、
キー 'vendor' および 'description' にデータが格納されます。
返り値
mixed - $doReturn が TRUE
の場合は、配列を返します。それ以外の場合は、成功した場合に TRUE
を返します。いずれの場合も、失敗したときには
Net_MAC_Exception
オブジェクトをスローします。
注意
この関数は、スタティックにコールする
ことはできません。
このメソッドは、エラー時に例外をスローします。
そのため、このメソッドは常に try/catch ブロック内でコールしなければなりません。
例
例 54-1URL を指定した importVendors() の使用法 require_once 'Net/MAC.php';
require_once 'MDB2.php';
$db_type = 'pgsql';
$db_host = 'localhost';
$db_user = 'username';
$db_name = 'dbname';
$db_pass = 'password';
$dsn = "$db_type://$db_user:$db_pass@$db_host/$db_name";
$dbh =& MDB2::factory($dsn);
if (MDB2::isError($dbh)) {
echo "MDB2 Error: ".$dbh->getUserInfo();
}
$dboptions = array('tablename' => 'macvendors',
'macaddrcol' => 'macaddr',
'vendorcol' => 'vendor',
'desccol' => 'description');
try {
$nmh =& new Net_MAC($dbh, $dboptions);
} catch (Net_MAC_Exception $e) {
echo 'Net_MAC Error: ' . $e->getMessage();
exit;
}
try {
$nmh->importVendors('http://anonsvn.wireshark.org/wireshark/trunk/manuf');
} catch (Net_MAC_Exception $e) {
echo 'Net_MAC Error: ' . $e->getMessage();
exit;
} |
これは、URL からのファイルの読み込みに失敗した場合にのみエラーを出力します。
|
例 54-2ファイルを指定し、importVendors()
の結果を配列で返す方法 require_once 'Net/MAC.php';
require_once 'MDB2.php';
$db_type = 'pgsql';
$db_host = 'localhost';
$db_user = 'username';
$db_name = 'dbname';
$db_pass = 'password';
$dsn = "$db_type://$db_user:$db_pass@$db_host/$db_name";
$dbh =& MDB2::factory($dsn);
if (MDB2::isError($dbh)) {
echo "MDB2 Error: ".$dbh->getUserInfo();
}
$dboptions = array('tablename' => 'macvendors',
'macaddrcol' => 'macaddr',
'vendorcol' => 'vendor',
'desccol' => 'description');
$nmh =& Net_MAC::factory($dbh, $dboptions);
if (PEAR::isError($nmh)){
echo 'Net_MAC Error: '.$nmh->getMessage();
}
$vendorArr = $nmh->importVendors('./manuf')
if (PEAR::isError(!$vendorArr)) {
echo 'Net_MAC: ' . $err->getUserInfo();
exit;
}
print_r($vendorArr); |
これは、成功した場合に MAC アドレスベンダーの全一覧を出力します。
失敗した場合にはエラーメッセージを出力します。
|