一人もくもく会 α verでサービス開始しました。

CodeIgniterのコーディング規約が独自すぎる

CodeIgniterのコーディングスタイルが独自路線過ぎて唖然とした。 PSR等この世に存在しない、と言わんばかりのドキュメントページ。

PHP Style Guide — CodeIgniter 3.1.3 documentation

クラス名、メソッド名、変数名

<?php
class Super_class
function get_file_properties()
$group_id

当然、スネークケース。

TRUE, FALSE, and NULL

大文字で。

論理演算子

下記がCORRECT

<?php
if ($foo OR $bar)
if ($foo && $bar) // recommended
if ( ! $foo)
if ( ! is_array($foo))

このあたりは2度見した。ORもそうだが、否定演算子を離すのとかはどうなんだろう。 || は 11 と見間違える可能性があるから、と書いてあるがそんなことあるのだろうか。 スペース区切りになってるからスペース省略して書いてる変な人以外は見間違えないと思うのだが。

否定演算子演算子だから他と一緒でスペースを開けろ、という意味なのだろうか? このへんはちょっと思想が深すぎる気がする。

インデント

当然ハードタブ。 各エディタで見栄えを調整できるしファイルサイズも抑えられるからだそうだ。 中括弧も全部オールマン形式。

テンプレート内変数

<?= $var ?>

これはだめ。全部下記で。

<?php echo $var; ?>

理由は、サーバーによってエラーが出る可能性があるからだそうだ。 何時の時代の話なのだろうか。 (5.4なら大丈夫だよ! と書かれている)

Compatibility(互換性)

つまりは、恐らくほとんどのことがこれをベースに決められているためのように感じた。 PHP 5.3.7でも動くようにしろ、と書かれている。

そんなバージョンを使っているサーバーなどまだあるのだろうか。 まあ、あるのかもしれないが、それのほうが問題のような気がする。 もちろんCOBOLがまだ生き残っているように、やむを得ない理由はあるのかもしれないが。

ハード多分云々もパフォーマンスの低いサーバーがまだ生き残っているためかもしれない。 ここの説明で多少不思議は解消された。 つまり時代遅れなのではなく、わざと時代から取り残される道を選んでいる。

とはいえそれで疑問が全て解消されるわけではない。 多分、意図的かどうかはわからないが、マニュアルも思想も古いまま置き去りになっているようには感じる。

CodeIgniter4

クラス名関連はキャメルケースになったり、多少PSR-2に似ている部分ができたと書かれている。