なんとなく知ってるようで、全く触ったことのないPHP。
WordPressでテーマの編集をするとなんとなく読めるけど書くことは全くできない。
Windows環境で勉強してみようと思います。
今回はインストールからAPIで情報取得するまで。
環境確認
最終的にワードプレスに適応してみたいのでサーバーにログインしてバージョン確認します。NTSというのはノンスレッドセーフです。環境によってはスレッドセーフになってるかもしれません。
php -v
でバージョン確認
ダウンロード
トップ右上にダウンロードリンクがあります。
今回使いたいバージョンがなかったのでダウンロードページから古いバージョンをとってきました。
ダウンロードした php-7.0.33-nts-Win32-VC14-x64.zip を解凍してphpに名前変更して適当なところに置いておきます。
次に環境変数の設定から Path にさっきのファイルの場所を追加登録します。
コンソールからphp -v
を実行すると同じバージョンがインストールされてることがわかります(マイナーバージョンは少し違うけど)。
phpの書き方
1 2 3 |
<?php echo 'hello php'; ?> |
php test.php
でhello phpがコンソールに表示されます。
基本的な記述方法はこんな感じ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
<?php # 結合は.で行う 改行コードも使える #---------------------------------- echo "today is " . date( "y/m/d" ) . ".\r\n"; // => today is 19/01/25. # 変数は$プレフィックス 文字列内でも参照可 #------------------------------------------ $ver = "this "; $ver.= "is a" . " pen"; echo $ver; // => this is a pen echo "$ver?"; // => this is a pen? # 参照渡し & #----------- $v1 = "value"; $v2 = &$v1; $v2 = "new value"; echo $v1; // => new value # 関数は特に気になる点なし #------------------------- function func_multi($v1,$v2) { return $v1 * $v2; } echo func_multi(3,4); // => 12 # 配列は基本的に連想配列 #----------------------- $arr1 = ["a", "b", 3]; $arr2 = ["a"=>1, "b"=>2, 3=>"c"]; echo var_dump($arr1); //変数をdumpする(吐き出す) echo var_dump($arr2); /* => array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> int(3) } array(3) { ["a"]=> int(1) ["b"]=> int(2) [3]=> string(1) "c" } */ unset($arr2["b"]); //要素削除 foreach ($arr2 as $i => $v) { //走査 echo "$i => $v\r\n"; } /* => a => 1 3 => c */ ?> |
どうしても$でjqueryが頭をよぎる。あと間違えて結合に+を使いそう。
APIを使って情報取得
まずwrapperの確認。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
echo var_dump( stream_get_wrappers() ); array(9) { [0]=> string(3) "php" [1]=> string(4) "file" [2]=> string(4) "glob" [3]=> string(4) "data" [4]=> string(4) "http" [5]=> string(3) "ftp" [6]=> string(3) "zip" [7]=> string(13) "compress.zlib" [8]=> string(4) "phar" } |
httpsがないので、このままエラーが出てhttps通信ができません。
PHP Warning: file_get_contents(…): failed to open stream: No such file or directory in…
インストールフォルダに設定ファイルを用意します。
php.ini-productionをコピーしてphp.iniというファイルを作る。
コメントアウトされているextensionを編集します。
extension=ext/php_openssl.dll
これでwrapper一覧にhttpsが追加されてます。
試しにビットコインとイーサリアムの値をとってみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $base_url = 'https://api.bitflyer.jp/v1/board'; $query = ['product_code'=>'ETH_BTC']; # API取得 $res1 = file_get_contents( $base_url ); $res2 = file_get_contents( $base_url.'?'.http_build_query($query) ); # JSONを連想配列にデコードする $r1 = json_decode($res1,true); $r2 = json_decode($res2,true); echo $r1["mid_price"]."\r\n"; echo $r2["mid_price"]."\r\n"; ?> |
無事取得できました。
node.jsと同じくサーバーサイドで動くので色々やっても問題ないのかな。
基本的に簡単だけど独自の関数がどんどんでてくるのは少し戸惑う。