その他 > その他 > 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼 |
その他
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
namacha |
投稿日時: 2012/10/7 19:47
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2012/7/15 居住地: 投稿: 24 |
Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼 ここに書けばいいのかな・・
この機能に限ったことではないのですが、気になった点としては「静的呼び出し」で実装されようとしていることです。 1.静的に呼び出された関数内でthisを用いると、呼び出し側クラスのthisとして扱われる。 2.静的に呼び出される関数を静的関数にするとオーバーライドできない。※1 以上を踏まえた上で、ECCUBEの現状は主に、 ・呼び出す側は静的に呼び出す ・呼び出される側は通常のメンバ関数として定義 として実装されているかと思います。 仮にこれらと同じように実装をすると上記1が関与してきて、SC_I18n_Ex(SC_I18n)の中では自分自身をさすthisを扱うことができなくなります。 クラスが扱う情報は「メッセージ」という変更されやすい情報であるので、 実装時、および、Exでのオーバーライド時に問題がない実装をするべきと思うのですが、 この辺りの実装についてどのようにお考えなのでしょうか? (というのも最近、これが原因で自分と同じクラス内の関数を見つけられずに落ちている関数が居ましたので・・) …と!!!思いきや!!! メッセージはファイルとして外に出すんですね。 そうするとクラスその物への変更をする機会って、使う側はあんまりないんですね。 若干勘違いしてました。ごめんなさい。 機会はあまりなさそうですが、可能性はあるということで、お時間ありましたらお答え戴ければ幸いです。 ※1について追記。 検索して見た時の情報が古かったようで、「昔はできなかった(制限があった?)感じだけど今はできる」ようです。誤った情報を掲載してすみません。 私はphpに触れて3〜4ヶ月程度の者ですので、言語特有の仕様についてはまだまだ勘違いしているかも知れません。 公式ドキュメントとしては、下記辺りが絡みそうです。 PHP: static PHP: 遅延静的束縛 加えて下記はサンプルのコードです。 私が知る限りECCUBEにおいてこの辺の実装は、a3の実装パターンが主です(parentの呼び出しは除く)。 thisを制限するa2、a2_2の実装パターンを使用せずに、 あえて、thisを使用できるa3の状態で実装しているのにも関わらず、 その関数を静的呼び出ししている。 この認識が呼び出す側と呼び出される側との間で矛盾していて、バグに繋がっている。 この辺りの実装の仕様が、先に作った者勝ちになっていて、明確になっていないのでは?という疑問からきた投稿です。
|
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
![]() |
eccube_admin | 2012/10/5 17:24 |
» ![]() |
namacha | 2012/10/7 19:47 |
![]() |
seasoft | 2012/10/8 12:52 |
![]() |
red | 2012/10/11 15:25 |
![]() |
namacha | 2012/10/11 21:32 |
![]() |
kodama417 | 2012/10/10 14:02 |
![]() |
red | 2012/10/11 15:34 |
![]() |
eccube_admin | 2012/10/11 18:48 |
![](images/pixel.gif)