なずブログ

インフラSE、Java開発、リモートワークエンジニアな人のメモ帳

PHPのstdclassとjsonファイルへの追加~['hoge']のタイプが嫌い~

f:id:nazuna_0124:20170403224602p:plain

PHPMysqlを扱えるフリーサーバーはあんまりない!

Jsonとかcsvとかxmlなんかが候補にあがります。


と思いきやSqliteさんが優秀という説。

一方通行ならテキスト系ファイル、ソートやら追加更新が頻繁なら

Sqliteさんでしょうか。

使ったこと無いのでこっちはまた今度!


今回はなんかよくわかんないけど好きな形式で

Jsonファイルに追加するというもの。


具体的にはこう。

Jsonファイルに最初だけこうしておいて

{}


こうなります。

{
    "0": {
        "name": "abc",
        "date": "2017-05-05 21:37:05"
    },
    "1": {
        "name": "abc",
        "date": "2017-05-05 21:37:11"
    },
    "2": {
        "name": "abc",
        "date": "2017-05-05 21:37:13"
    }
}



“0"みたいに数字が入ってくれるのがすき。

いまいちこの数字がどこから湧いてくるのかわかりませんが。


PHPのコードです

<?php 
    $file = file_get_contents("data.json");
    
    $json = json_decode($file,true);
    
    $input = new stdClass();
    $input->name ="abc";
    $input->date = date('Y-m-d H:i:s');
    
    $json[]= $input;
    
    file_put_contents("data.json", json_encode((object)$json,JSON_PRETTY_PRINT))
?>


お題のもう一つStdclassさんです。

後からプロパティを足せる定義済みのクラスというものだそうな。


なんだろう、事前に決めたの以外は使わせないのも

クラスの大事な機能だったような……。


普通に連想配列書くとこうなっちゃいます。

$inputArray['name'] = "abc";
$inputArray['date'] = date('Y-m-d H:i:s');


[‘○○’]ってタイプするのいやなのですよ!

ほぼこれが理由だったり。


あとは、とりあえずStdclassにしておいて

あとで自作のクラスに変更するなんてのもよいかなと思ったり。

変更するの忘れそう


忘れてました!

驚くべきことにプロパティ部分には変数が使えます。

 $input = new stdClass();
    $property = "date";
    
    $input->name ="abc";
    $input->$property = date('Y-m-d H:i:s');


こういうふうにしてもおっけ!

なんかこう居心地が悪く感じるのはわたしだけでしょうか。


さて、それではSqliteしらべてきまっす!