「PHP」に関する日記(7)

<前 次>

PHPUnit


今更ながら、カバレッジ出すようにしてみました。
決して良くはない数字だし、PHPUnitの対象にしていないコードは根本的にカバレッジの対象にもならないけど、まあ、最初はこんなもんかな。
ほとんどロジックがなくてテストするまでもないテンプレート的なPHPファイルも多いので、うまい事分けてカバレッジ上げていきたいものです。

Apache

事前にPHP7.3の挙動をテストしておこうとテスト用サーバーのサーバー系ソフトウェアを一新したら、どうにもApache側の問題でテストサーバーがうまく動かない模様…。

PHP7.3

サーバー側で使えるようになっていたので切り替えられるように調整中…。

Anpanator

不正な質問文で停止する問題を再発しないよう根本的に解決。
trim処理が間違えていたせいで、普通に書いた質問文の末尾の文字が破壊されたのが原因だったので、trim処理を置き換えました。

直すときは以下の記事を参考にしました。
https://qiita.com/fallout/items/a13cebb07015d421fde3
いい感じのtrim処理です。

アンパンマンDBとC#とPHPとAdobe XD

アンパンマンDB

履歴カテゴリ機能がほぼできた。
これで移行予定のないもの以外は一応置き換えられるようにはなった。
まだ細々とした修正は必要になりそう。

C#

throw null;は実際にはNullReferenceExceptionを投げるらしい。
自分で使うことが多いのはArgumentNullExceptionだけど、拡張メソッドとかでは使えそう。

PHP

??=演算子が新設らしいことを知った。
あれば便利だけどなくても全然困らない系。

Adobe XD

無料で使える?何ができる?

アンパンマンDBとPHPとPython

アンパンマンDB

履歴ページのリニューアル中。
旧RSSを置き換えて、管理しやすくするのが目的。

PHP コマンドライン関係

$argv:コマンドライン引数。実際の引数は[1]から。実際に使う場合はスーパーグローバルの$_SERVER['argc']が便利。
PHP_SAPI:コマンドライン実行なら"cli"。
ブラウザでの閲覧とコマンドライン実行で切り分けたいときに使えそうなのだぞ。

Python

便利(で、邪悪)なテクニックを知った。
実運用はしていないので私にとっては雑学にすぎないが、文字列に対する乗算は便利だと思った。

Apache

自宅サーバー立て直し。
公開用サーバーと合わせてPHP7.1環境に…と思ったのですが、サーバー設定がうまくいっていないのか、400 Bad Requestが出て、ページが表示できません…。

PHP7.1

TGWSで使っているPHPのバージョンを5.6から7.1に上げました。
一応、別ドメインでエラーが起こっていないことを確認してからバージョンアップしました。
ただ、エラー報告レベルを上げると、致命的ではない警告はたくさん出るようになったので、そのあたりは順次直していく必要がありそうです。

Smarty

今使っているバージョンのSmartyが最新のPHPではWarning出すようなので、ちょっとバージョンアップとか、別のテンプレートエンジンへの切り替えとかを検討してみました。
今どきの流れで、SmartyもComposer対応とかしているようです。
ただ、テンプレート不要な場所でも問答無用で読み込む設定になっているようなので、Smartyは従来通り手動でrequireしようかと思います。
他のテンプレートエンジンと言えば、Twigが有名で、Skinnyとかいう日本初の軽量なエンジンもあったり、そもそも生のPHPでいいんじゃないかって意見もあったりしますね。
ひとまず、今のところは、アンパンマンDBみたいに比較的規模のある場所ではSmarty、ゲーム記みたいに生のHTML主体の場所ではテンプレートエンジンを使わないという方向でいこうと思います。
Smartyは最新バージョンに上げるという前提でね。

Mifuminator

Composerでうまく動かないのでいろいろ調整中…。
大文字小文字の問題かと思ったけど、それだけじゃないのか…?

Composer

以前、サーバーとローカルマシンで別々にComposer環境を構築すると言いましたが、実はローカルで動いていたプログラムがサーバーで動かなかったんですね。
原因わかりました。
Windowsのローカルマシンでは大文字小文字を区別せず、Linuxのサーバーマシンでは区別していて、ファイルを見つけられなかったのでした。
Mifuminatorも全部ファイル名小文字にしちゃってたので、修正の必要がありそうです。

無題

新しいものだけに自動テスト導入すればいいと思っていたけど、古いものを新しいものに差し替えるときにも、動作が変わっていないか確かめるテストが必要なのか…。

Composer

ローカル環境で作ったComposer環境をそのままサーバーにアップするのはやめて、ローカルはローカル、サーバーはサーバーで別個にComposer環境を作ることにしました。
ローカルはPHPUnitつきで、サーバーは--no-devで。

PHPUnitとドラゴンクエスト10

PHPUnit

今更ながら、導入してみました。
ちゃんとしたテストはまだ作っていないですが、お試しでちょっとしたサンプルコード的なものを仮に作っておきました。
サイト全体に適用するのはさすがに無理があるので、これから作る部分から順次作っていくことになりそうです。

ドラゴンクエスト10

テンの日。
あと、ァォィョッュもバトエンのクエストをクリアして、全員バトエンできるようになりました。

爆ボンバーマンとBOMとドラゴンクエスト10

すすすすすすぷりがんがががががががおもってたいじょうにつつつよくくくくくくく…

爆ボンバーマン

というわけで、レッドマウンテンの攻略ページ、実際に攻略しつつ、ボスまで書き終わりました。
もろもろの都合により、全ステージ最弱状態からスタートしていたので、敵の攻撃が激しいこのワールドはかなり苦戦しました。
不慣れなWiiUでの操作とはいえ…ボス戦であんなに死ぬとは思わなかった…。

とにかく、攻略ページは作れたので、近々更新します。

BOM

昨日言っていたBOMのページ、更新しました。
新デザインの適用と、初期ディレクトリの変更と、あとついでにいろいろ修正しました。

ドラゴンクエスト10

ディバイン装備お試し。

BOM

爆ボンのページの編集をしていたら、久々にBOM付きPHPを見つけたので、他にも余計なBOMがないか探していました。
ついでに、プログラミングコーナーのBOMの記事も書き直したので、明日にでもアップしようかと思います。

ドラゴンクエスト11とComposer

ドラゴンクエスト11

生まれ変わったカジノのバニーさんとイチャイチャ。

Composer

Composerでクラスが見つからなかったときは、従来式のオートロードで読むようにしました。
すでにTGWSに反映済みです。
ローカルとサーバーで挙動が違うのにはまいってしまいましたが。

<前 次>