感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

PHPでオブジェクトをJSONに変換して出力。その他、ファイルの操作など。

スポンサーリンク

PHPで利用できるライブラリ

PHPで利用できるライブラリは
PHPで記述されたライブラリ
C言語またはC++で実装されたライブラリ
がある。

PHPでJSONを扱うサンプル

PHPでオブジェクトをJSONに変換する方法

json_encode(データ,(任意でオプション定数))

を使うと良い。
JSON関数のオプションには以下のようなものがある。

オプション定数 意味
JSON_HEX_TAG タグをエンコードする
JSON_HEX_QUOT ダブルクォートをエンコードする
JSON_HEX_AMP &をエンコードする
JSON_HEX_APOS シングルクォートをエンコードする
JSON_FORCE_OBJECT 配列をオブジェクトとして扱う

サンプルはこちら。

<?php

$js = array(1,2.0, 'foo' => 'bar');
echo json_encode($js),PHP_EOL;

$js = new DateTime();
echo json_encode($js), PHP_EOL;

class Person {
	public $age = 28;
	public $job = "programmer";
	public $interest = "php";
}

$js = new Person();
echo json_encode($js), PHP_EOL;

これにアクセスすると、ブラウザには以下のように表示される。

{"0":1,"1":2,"foo":"bar"} {"date":"2013-07-08 14:40:57","timezone_type":3,"timezone":"Europe\/Berlin"} {"age":28,"job":"programmer","interest":"php"}

ついでに、上記のJSONをテキストファイルに出力してみる。

PHPでJSONをファイルに出力する

<?php

$js = array(1,2.0, 'foo' => 'bar');
echo json_encode($js),PHP_EOL;

$js = new DateTime();
echo json_encode($js), PHP_EOL;

class Person {
	public $age = 28;
	public $job = "programmer";
	public $interest = "php";
}

$js = new Person();
echo json_encode($js), PHP_EOL;

$filename = './json.txt';
if (!file_exists($filename)) {
	touch($filename);
} else {
	echo ('すでにファイルが存在しています。file name:' . $filename);
}

if (!file_exists($filename) && !is_writable($filename)
	|| !is_writable(dirname($filename))) {
	echo "書き込みできないか、ファイルがありません。",PHP_EOL;
	exit(-1);
}

$fp = fopen($filename,'a') or dir('ファイルを開けません');

fwrite($fp, sprintf(json_encode($js)));

fclose($fp);

これを実行すると、このPHPファイルと同じディレクトリに「json.txt」というテキストファイルができる。
中には、

{"age":28,"job":"programmer","interest":"php"}

と書かれている。

では、出力したファイルを別のPHPファイルで読み込んでみる。

PHPでファイルの内容を読み込む

ファイルの内容を文字列として扱うには

file_get_contents($filename);

を使う。このfile_get_contentsはファイルを一度に読み込んで変数に代入するため、サイズが巨大なファイルを読み込むとメモリを大量に消費してしまうことに注意する。
それでは、さきほど出力したJSONオブジェクトをファイルから取り出し、decodeするところまでやってみる。

<?php

$filename = './json.txt';
$json = file_get_contents($filename);
echo $json;

$decoded = json_decode($json);
echo '<br/>';
echo $decoded->age;
echo '<br/>';
echo $decoded->job;
echo '<br/>';

これで、ブラウザには以下のように出力される。

{"age":28,"job":"programmer","interest":"php"}
28
programmer

勉強した本

パーフェクトPHP (PERFECT SERIES 3)

パーフェクトPHP (PERFECT SERIES 3)


パーフェクトシリーズの例に漏れず、素晴らしい本。
セキュリティの解説もあるし、簡単なウェブアプリケーションも作れるようになる本。

感謝のプログラミング

今回で感謝のプログラミングは【514時間目】
10000時間まで、あと【9486時間】

密かに英語でプログラミングの勉強記事も書いているので、その分も時間に含めた。
英語がニガテだからこそ、英語で何かを書いてみる。