コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

じわじわHackLang

社会のゴミなのでゴミツールを作ろうと思う

ウェーイ、僕です。今日もウェイウェイ言いながらゴミを作ることにします。やはり僕みたいなウェイ系はウェイウェイいいながらゴミをインターネッツに生産するのがお似合いなわけです。ウェイウェイウェーイ、バイザウェーイ。なので、今日はFacebookの開発した次世代PHP、Hack言語をやっていきます。この言語一発ネタで終わるのかと思ったんですけど意外と気づいたら触ってることが多かった。無意識って怖いですね。

過去記事
inujini.hatenablog.com


簡易掲示板をつくるの巻

まあ、アレです。言語の書き方だけ覚えても何も作れないんじゃゴミ知識にしかなりません。なので、Hack言語使って簡易掲示板とかいう動くゴミを作っていこうと思ったのです。結局ゴミしかつくってなーーい。そう、僕がつくれるのはゴミ~。

はい、こんなのできました。

f:id:andron:20181125173402p:plainf:id:andron:20181125173413p:plain
投稿機能しかない簡易掲示板です。名前未入力だと「名無しさん」になります。外部に公開することを想定していないので脆弱性満載です。


以下ソース

<?hh
require "./vendor/hh_autoload.php";

function render_html(): void{
  $dataFile = "bbs.dat";
    if($_SERVER['REQUEST_METHOD'] === 'POST' &&
       isset($_POST['message']) &&
       isset($_POST['user'])){
        
        $message = trim($_POST['message']);
        $user = trim($_POST['user']);
        
        $user = ($user === '') ? '名無しさん' : $user;
        $newData = $message."\t".$user."\n";
        
        $fp=fopen($dataFile, 'a');
        fwrite($fp, $newData);
        fclose($fp);
    }
    
    $posts = file($dataFile, FILE_IGNORE_NEW_LINES);
    
    $list = <ul />;
    $count = count($posts);
    if($count){
       foreach($posts as $post){
            //無理矢理動かすよう
            //$post = htmlspecialchars($post, ENT_QUOTES, "UTF-8");
            //$list .= "<li>{$post}</li>";
            
            $list->appendChild(<li>{$post}</li>);
        }
    }else{
        $list = "まだ投稿はありません";
    }
    //確認用
    //print_r($posts);
    
$render = <<< EOM
<!DOCTYPR html>
<html>
<head>
      <meta charset="utf-8">
      <title>簡易掲示板</title>
</head>
<body>
      <h1>簡易掲示板</h1>
      <form action="" method="post">
      message: <input type="text" name="message"/>
      user: <input type="text" name="user"/>
      <input type="submit" value="投稿"/>
      </form>
      <h2>投稿一覧 {$count}</h2>
      <ul>{$list}</ul>
</body>
</html>
EOM;
           
echo $render;
}

render_html();

どうにか今風なPHPっぽく書こうと苦心したんですけど、今風ってなんだってよくわかんなくなったのと作ってて飽きたのでこれで……。だって頭の中で掲示板程度だったらフレームワーク使った方がハヤイシラクジャンアセルバイジャンって囁くんですもん。ちなみに、HackなんでHHVM環境で動いてます。

参考:ドットインストール
PHPで作る簡易掲示板




最初はゴリ押しでコード書いてたんですけどHackらしさのみじんもないコードになって嫌になったのでXHP使うことにしました。それでもHackらしさないですが……。
XHPについて
GitHub - hhvm/xhp-lib: Class libraries for XHP. XHP is a Hack feature that augments the syntax of the language such that XML document fragments become valid PHP expressions.


利用するにはComposerに以下を書き込めばいけるっぽいです。

    "require": {
    	"facebook/xhp-lib": "2.x"
    }

Composerについて
Composer

関連 Composerの超雑な使い方記事
音楽よくわかんないけどコンポーザーを使ってみる - コミュ障だから明日が僕らをよんだって返事もろくにしなかった



そういうわけだからみんなHackを使おう!!そういえば、超久しぶりにPHPっぽい言語触った。


おわり