1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHPでNoSQLデータベース(簡易)を作る

Posted at

はじめに

こんにちは。初投稿のまろという者です。
Qiitaでは主にPHP系の投稿をしていこうと思ってます。
今回は、PHPでNoSQLのDBMSを作るわけです。
XMLじゃなくてJSONを使います。

概要

  • NoSQLのDBMS
  • JSONを用いる
  • データをそのまま保存

コード

いきなりコードです。

dbms.php
<?php
// クラス「DBMS」の定義
class DBMS{
 // ファイルパス変数の定義
 private $path;
 // コンストラクタの起動
 function __construct($path){
  $this->path = $path;
 }
 // ファイルパスの変更関数
 function PATH($path){
  $this->path = $path;
 }
 // ファイル内容を変換して取得
 function GET(){
  return json_decode(file_get_contents($this->path), true);
 }
 // ファイル内容を変換して書き換え
 function POST($data){
  $fp = fopen($this->path, 'cb');
  if($fp){
   if(flock($fp, LOCK_SH)){
    if(fwrite($fp, json_encode($data))){
     if(flock($fp, LOCK_UN)){
      if(fclose($fp)){
       return true;
      }
     }
    }
   }
  }
  return false;
 }
}
?>

てな感じです。JSONで、テキストをデータ形式で返してくれて、データをテキスト(JSON)で書き込む感じで、さらにどんなデータでも対応。
こんなDBMSが欲しかった...
まあ、普通に使えると思います!少し処理系は置いといて。
また実際にこれを使用すると、

使用例
$db = new DBMS('/db/age.json');
$age = $db->GET();
echo '現在田中さんは'.$age['田中さん'].'歳です';
// 現在田中さんは38歳です

$age['田中さん'] = 39;
if($db->POST($age)){
 $age = $db->GET();
 echo '無事田中さんが39歳の誕生日を迎えました';
 // 無事田中さんが39歳の誕生日を迎えました
}else{
 echo '残念田中さんもう一度38歳で頑張りましょう';
 // 残念田中さんもう一度38歳で頑張りましょう
}

はい。田中さんごめんなさい(誰や)

終わりに

今回はPHPでNoSQL DBMSを作ってみました。
思ってたんとちゃう…と思ったそこの君!ごめんなさい(?)
使ってみてね〜

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?