그래서 이 글을 읽으면서 또 다른 dba 함수를 사용할 수 있다는 걸 알게 됐어요. 그런데 dba 함수의 설치를 자세히 살펴보니 inifile에 대한 지원이 PHP5에서만 구현되어 있다는 걸 알게 됐어요. 해당 DBA 관련 정보는 여기(http://www.php.net/manual/en/dba.installation.php)에서 찾아보실 수 있습니다. 자세한 내용은 여기(http://www.php.net)를 참조하세요. / manual/en/book.dba.php
좋아, 원본 텍스트는 http://www.cardii.net/php-spl-parse-ini-file/에서 가져왔습니다.
SPL의 다양한 인터페이스와 반복자를 소개했습니다. 오늘은 PHP 소스코드 디렉토리를 검색하다가 INI 파일을 파싱하는 예제를 발견해서 좋다고 생각해서 예제를 컴파일해서 공유해봤습니다.
PHP 애플리케이션에서는 특히 쇼핑몰이나 CMS와 같은 제품의 경우 구성 파일이 필수적입니다. 물론 각 고객이 일련의 프로그램을 개발하는 것은 아닙니다. 각 고객마다 다른 구성 파일 세트가 있습니다. 나는 구성 파일을 만드는 데 적합한 네 가지 주요 범주가 있다고 말한 적이 있습니다. 즉, PHP 배열(거의 다른 구성 방법은 궁극적으로 PHP 배열로 구문 분석됩니다), XML, YAML 및 INI입니다. 오늘은 INI 파일에 대해서만 이야기하겠습니다. ZendFramework는 이 구성을 사용합니다.
DbaReader 클래스를 살펴보겠습니다. 파일 이름은 DbaReader.php입니다.
코드를 복사하세요 코드는 다음과 같습니다.
class DbaReader는 Iterator를 구현합니다
{
protected $db = NULL;
private $key = false
private $val = false; function __construct($file , $handler) {
if (!$this->db = dba_open($file, 'r', $handler)) {
새 예외 발생('파일을 열 수 없습니다. ' .$file);
}
}
/**
* 읽기 전용 모드에서 $handler를 사용하여 데이터베이스 $file을 엽니다.
*
* @param file 열려는 데이터베이스 파일입니다.
* @param handler 데이터베이스 액세스에 사용할 핸들러입니다.
*/
function __destruct() {
dba_close($this->db)
} 🎜>/**
* 데이터베이스를 닫습니다.
*/
function rewind() {
$this->key = dba_firstkey($this->db)
$this->fetch_data();
}
/**
* 첫 번째 요소로 되감기.
*/
function next() {
$this->key = dba_nextkey($this->db)
$this-> ;fetch_data();
}
/**
* 다음 요소로 이동합니다.
*
* @return 무효
*/
비공개 함수 fetch_data() {
if ($this->key !== false) {
$ this->val = dba_fetch($this->key, $this->db)
}
}
/**
* $key가 유효한 경우 현재 데이터를 가져옵니다.
*/
function current() {
return $ this->val;
}
/**
* @return 현재 데이터.
*/
function valid() {
if ($this->db && $this-> ;key !== false) {
true 반환
} else {
false 반환
}
}
/**
* @return 더 많은 요소를 사용할 수 있는지 여부.
*/
기능 키 () {
return $this->key;
}
?>
DbaReader는 Iterator 인터페이스를 사용하며, 물론 다음을 구현해야 합니다. 내부에는 5가지 반복 방법이 있습니다. 반복적 방법은 dba 확장을 사용하여 handlerhandlerINI 파일을 구문 분석합니다.
여담으로 말하자면, DBA란 무엇인가요? 왜 DBA를 사용하나요?
Dba는 데이터베이스, 정확히 말하면 인덱스 파일 저장 시스템입니다. 상대적으로 정적인 인덱스 데이터 저장에 적합합니다. 모든 Linux 버전에는 이 데이터베이스가 함께 제공됩니다.
파일은 데이터를 저장하는데 왜 아직도 DBA를 사용하는 걸까요? 두 가지 이유가 있습니다.
1 데이터 레코드의 저장 길이가 고정되어 있지 않을 수 있습니다.
클래스 DbaArray 확장 DbaReader 구현 ArrayAccess
{
/**
* 읽기 전용 모드에서 $handler를 사용하여 데이터베이스 $file을 엽니다.
*
* @param file 열려는 데이터베이스 파일입니다.
* @param handler 데이터베이스 액세스에 사용하는 핸들러.取值http://www.php.net/manual/en/dba.requirements.php
*/
함수 __construct($file, $handler)
{
$this->db = dba_popen($file, "c", $handler);
if (!$this->db) {
새로운 예외 발생("Databse를 열 수 없습니다.");
}
}
/**
* 데이터베이스를 닫습니다.
*/
function __destruct()
{
parent::__destruct();
}
/**
* 항목을 읽어보세요.
*
* @param $name에서 읽을 키
* @return $name과 연결된 값
*/
function offsetGet($name)
{
$data = dba_fetch($name, $this->db);
if($data) {
if (ini_get('magic_quotes_runtime')) {
$data = Stripslashes($data);
}
//return unserialize($data);
$data를 반환합니다.
}
else
{
NULL을 반환합니다.
}
}
/**
* 항목을 설정하세요.
*
* @param $name 쓸 키
* @param $value 쓸 값
*/
함수 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);
}
}
?>
复主代码 代码如下:
호스트 = 로컬호스트
비밀번호 = 비밀번호
데이터베이스 = 데이터
复제代码 代码如下:
function loadClass($class)
{
require_once __DIR__.DIRECTORY_SEPARATOR.$class.'.php ';
}
spl_autoload_register('loadClass',false);
$iniFile = __DIR__.DIRECTORY_SEPARATOR.'test.ini';
$ini = new DbaArray($iniFile,'iniFile');
echo $ini['데이터베이스'];
var_dump($ini);
?>
以上就介绍了查看电脑配置软件 php INI配置文件的解析实现分析,包括了查看电脑配置软件方件 内容,希望对PHP教程에는 朋友有所帮助이 있습니다.