2018-10-31に更新

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

PHP

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

PHP Style Guide — CodeIgniter 3.1.8 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に似ている部分ができたと書かれている。


だら@Crieit開発者

Crieitの開発者です。 主にLAMPで開発しているWebエンジニアです(在宅)。大体10年程。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel5, CakePHP3, JavaScript, RoR 趣味:Elixir, Phoenix, Node, Nuxt, Express, Vue等色々

Crieitはαバージョンで開発中です。進捗は公式Twitterアカウントをフォローして確認してください。 興味がある方は是非記事の投稿もお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか
関連記事

コメント