コンピューター設定ソフトウェア php INI 設定ファイルの分析と実装を表示します。

WBOY
リリース: 2016-07-29 08:44:10
オリジナル
1145 人が閲覧しました

それで、この記事を読んで、別の dba 関数が使用できることを知りました。 さて、dba 関数のインストールを詳しく調べたところ、inifile のサポートは PHP5 でのみ実装されていることがわかりました。対応する DBA 関連情報については、http://www.php.net/manual/en/dba.installation.php を参照してください。詳細については、http://www.php.net を参照してください。 /manual/en/book.dba.php
OK、原文は http://www.cardii.net/php-spl-parse-ini-file/ から来ています。
SPLのさまざまなタイプのインターフェースとイテレータを紹介しました。今日、PHP のソース コード ディレクトリを参照しているときに、INI ファイルを解析するサンプルを見つけたので、サンプルをコンパイルして共有しました。
PHP アプリケーションでは、特にショッピング モールや CMS などの製品には構成ファイルが不可欠です。もちろん、顧客ごとに 1 セットのプログラムを開発するのは得策ではありません。 . 異なる設定ファイル。私はかつて、構成ファイルの作成に適した 4 つの主要なカテゴリがあると述べました。それは、PHP 配列 (ほとんどの他の構成メソッドは最終的に PHP 配列に解析されます)、XML、YAML、および INI です。今日は INI ファイルについてのみ説明します。 ZendFramework はこの構成を使用します。
DbaReader クラスを見てみましょう。ファイル名は DbaReader.php です:

コードをコピーします コードは次のとおりです:


class DbaReaderimplements Iterator
{
protected $db = NULL;
private $key = false; ;
private $val = false;
/**
* $handler を使用してデータベース $file を読み取り専用モードで開きます。
*
* @param file 開くデータベース ファイル。
* @param handler データベースアクセスに使用するハンドラー。
*/
function __construct($file, $handler) {
if (!$this->db = dba_open($file, 'r', $handler) )) {
新しい例外をスロー('ファイルを開けませんでした ' . $file);
}
}
/**
* データベースを閉じます。
*/
function __destruct() {
dba_close($this->db); }
/**
* 最初の要素に巻き戻します。
*/
関数 rewind() {
$this->key = dba_firstkey($this->db)
}
/**
* 次の要素に移動します。
*
* @return void
*/
関数 next() {
$this->key = dba_nextkey($this->db)
}
/**
* $key が有効な場合、現在のデータを取得します
*/
プライベート関数 fetch_data( ) {
if ($this->key !== false) {
$this->val = dba_fetch($this->key, $this->db)
}
}
/**
* @return 現在のデータ。
*/
function current() {
return $this->val;
}
/**
* @return さらに要素が使用可能かどうか。
*/
function valid() {
if ($this-> db && $this- >key !== false) {
return true;
} else {
return false
}
}
/**
* @return 現在のキー。
*/
function key() {
return $this- >key;
}
}
?>


DbaReader は Iterator インターフェイスを使用し、もちろん内部に 5 つの反復メソッドを実装する必要があります。反復方法では、dba 拡張機能を使用して handlerhandlerINI ファイルを解析します。
少し話がそれましたが、Dba とは何ですか?なぜ DBA を使用するのですか?

Dba はデータベースであり、正確には、インデックス付きファイル ストレージ システムです。比較的静的なインデックス付きデータ ストレージに適しています。 Linux のすべてのバージョンには、このデータベースが付属しています。
ファイルはデータの保存に使用されるのに、なぜ依然として DBA を使用するのでしょうか?理由は 2 つあります。
1 データ レコードの保存長が固定されていない可能性があります。
2 データの保存と取得にイ​​ンデックスを使用します。
DbaReader は、INI ファイル データにアクセスするための反復メソッドを提供します。削除されたデータを保存する必要がある場合はどうすればよいですか?したがって、DbaArray は DbaReader を継承してこの関数を実装します。



コードをコピーします

コードは次のとおりです:


class DbaArray extends DbaReaderimplements ArrayAccess
{
/**
* $handler を使用してデータベース $file を読み取り専用モードで開きます。
*
* @param file 開くデータベース ファイル。
* @param handler データベースアクセスに使用するハンドラー。取值http://www.php.net/manual/en/dba.requirements.php
*/
function __construct($file, $handler)
{
$this->db = dba_popen($file, " c", $handler);
if (!$this->db) {
新しい例外をスロー("データベースを開けませんでした");
}
}
/**
* データベースを閉じます。
*/
function __destruct()
{
parent::__destruct();
}
/**
* エントリーを読んでください。
*
* @param $name から読み取るキー
* $name に関連付けられた @戻り値
*/
function offsetGet($name)
{
$data = dba_fetch($name, $this->db);
if($data) {
if (ini_get('magic_quotes_runtime')) {
$data = ストリップスラッシュ($data);
}
//return unserialize($data);
$data を返す;
}
else
{
NULL を返す;
}
}
/**
* エントリを設定します。
*
* @param $name 書き込むキー
* @param $value 書き込む値
*/
function offsetSet($name, $value)
{
//dba_replace($name, Serialize($value), $this->db);
dba_replace($name, $value, $this->db);
$value を返します;
}
/**
* @return キー $name が存在するかどうか。
*/
function offsetExists($name)
{
return dba_exists($name, $this->db);
}
/**
* キーと値のペアを削除します。
*
* 削除する @param $name キー。
*/
function offsetUnset($name)
{
return dba_delete($name, $this->db);
}
}
?>


使用例
构建文件text.ini, 内容如下:

复制帽代码如下:


host = localhost
password = パスワード
database = data index.php.代码如下:



复制代码

代码如下:function loadClass($class)

{
require_once __DIR__.DIRECTORY_SEPARATOR.$class.'.php';
}
spl_autoload_register('loadClass',false);
$iniFile = __DIR__.DIRECTORY_SEPARATOR.'test.ini';
$ini = 新しい DbaArray($iniFile,'iniFile');
echo $ini['データベース'];
var_dump($ini);
?>


--EOF--
この部分は完了しました、これは何かあるのではありませんか?元来iniの操作もこの方便ですか?忘れていましたが、ansi/utf-8 がコード化されている場合、これは永続的な問題です。)

以上は、電気構成ファイルの表示 php INI 構成ファイルの解析実行分析を介して、電気設定ファイルの表示に関する内容を含み、PHP 教則に関心のある友人の助けになることを望みます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!