akanehara/ginq

PSR対応

MugeSo opened this issue · 8 comments

namespaceの使い方などPSR対応してほしいです。

Ginqオブジェクトがトップレベルでないほうがよい、という意味でしょうか?
あるいは、実装コード全体についてPSR準拠が弱い、ということでしょうか?
よろしくお願いいたします。

Ginqオブジェクトがトップレベルでないほうがよい、という意味でしょうか?

はい、そうです。PSR-0にしたがった名前空間は
<ベンダー名>(<名前空間>)*<クラス名>
という構造になります。

なるほど、ありがとうございます。
現在のGinqの実装を Ginq\GinqContext (名前は暫定)に追いやって、フォーマルには

use Ginq\GinqContext as Ginq;

で使うことを推奨し、いっぽう、名前空間を使わないようなカジュアルなPHPプログラムでも気軽に使ってもらえるようにトップレベルのGinqも残しておく、というのはどうでしょうか。

つまりこんな感じです。ブランチ切ってみました。
https://github.com/akanehara/ginq/tree/feature/ginq-context/src/Ginq

\<Vendor Name>\(<Namespace>\)*<Class Name> なので良いと思います。

ただ、use Ginq\GinqContext as Ginq; の使い方では、Composerなどのクラスローダ使わないとautoloadが効かないことになってしまいます。

autoloadの実装を \Ginq の中に入れたPHPスクリプト (たとえばsrc/Ginq/autoload.php) に移し、それをユーザが任意で require_once できるようにしたらどうかと思いました。「内部のautoloadは欲しい。Composerは使わない。Ginqクラスが欲しいわけじゃない」という変わった人がいたらそれで対応できるので。

こんな感じでどうでしょう。
https://github.com/akanehara/ginq/tree/feature/ginq-context

ついでに Ginq\GinqContextGinq\Context に変えました。

違うところで __DIR__ を使っちゃってたのでいっそこうしてしまうのはどうですか:

- require_once dirname(__FILE__) . "/Ginq/autoload.php";
+ require_once __DIR__ . "/Ginq/autoload.php";

👍

feature/ginq-context ブランチを push しました
https://github.com/akanehara/ginq/tree/feature/ginq-context

#32 も解決してから devel および master にマージしたいので、ご意見ください。