HHVMはPHPとある程度互換性がありますが、完全互換ではありません。
const ARR = ['foo', 'bar'];
var_dump(ARR);
このような定数に配列を代入すると、Fatal errorを吐いてしまいます。これはクラス定数も同じです。
HHVMを3.19以降では機能がサポートされているので利用可能です。
制作過程における躓きや気付きのメモ
HHVMはPHPとある程度互換性がありますが、完全互換ではありません。
const ARR = ['foo', 'bar'];
var_dump(ARR);
このような定数に配列を代入すると、Fatal errorを吐いてしまいます。これはクラス定数も同じです。
HHVMを3.19以降では機能がサポートされているので利用可能です。
node製サイトを開発時はwebpackを利用していればwebpack-dev-server
などを利用するのが常ですが、プロダクションビルド後のファイルで確認したい場合もあります。
そういうときにわざわざサーバーにアップロードしたり、MAMPなどを利用するのは面倒です。ですが、PhpStormであればビルドも含めてショートカット1発でサーバーを起動することができます!
今日はその設定をしていきましょう。設定は1分で終わります。
「Run」->「Edit Configurations」から「Run/Dubug Configurations」のウィンドウを表示し下記に設定します。
HostとPortは他のアプリケーションが利用中だと起動できないので、webpack-dev-server
やMAMPなどを利用している場合は被らないように設定するのが吉です。
次に「Before launch: Acvtive tool window」で「+」をクリックして「Run npm script」をクリックします。
すると「NPM Script」のウィンドウが開くので下記に設定します。
あとは^ R
または「Run」->「Run 'Preview server'(上記のName:で設定した名前)」をクリックすれば指定したHostとPortでサーバーが起動します。
PhpStormなどJetBrains製のIDEはWeb関係の技術と親和性が高いので、Web開発者は必携ですね。
Markdownの方言は
Markdown
CommonMark
Github flavored Markdown
Markdown Extra
だいたいこの4つから選ぶことになると思います。
<br>
が生成されるのが特徴今回はcebe/markdownを選びました。
cebe/markdownの特徴はMarkdown・Github flavored Markdown・Markdown Extraの3つが利用可能ですが、Markdown Extraについては定義リストなど実装されていない文法があるようです。
ただし、拡張が簡単なので、今回はこれを利用します。
まずはcomposer
でインストールします。
composer require cebe/markdown
下記のコードで簡単にHTMLに変換することができます。
$markdown_string = '# Hello, Markdown';
$converter = new \cebe\markdown\MarkdownExtra();
echo $converter->parse($markdown_string);
<h1># Hello, Markdown</h1>
ただ、Markdown Extraは改行のみだと<br>
が生成されず、行末にスペースを2つ入れる必要があるので、拡張してみましょう。
class MyMarkdown extends \cebe\markdown\MarkdownExtra{
//同ライブラリのGithub flavored用の実装と同一
protected function renderText($text){
if ($this->enableNewlines) {
$br = $this->html5 ? "<br>\n" : "<br />\n";
return strtr($text[1], [" \n" => $br, "\n" => $br]);
} else {
return parent::renderText($text);
}
}
}
$markdown_string = '# Hello, Markdown';
$converter = new MyMarkdown();
echo $converter->parse($markdown_string);
簡単ですね。これをうまく利用するとWordPressでも実装することができます。
WordPressへの組み込みはまたいずれ…。