バージョン選択

フォーラム

メニュー

オンライン状況

131 人のユーザが現在オンラインです。 (121 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 131
もっと...

サイト内検索

その他 > その他 > 【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の状態で実装しているのにも関わらず、
その関数を静的呼び出ししている。
この認識が呼び出す側と呼び出される側との間で矛盾していて、バグに繋がっている。

この辺りの実装の仕様が、先に作った者勝ちになっていて、明確になっていないのでは?という疑問からきた投稿です。


PHP 5.3.17, Zend Engine v2.3.0, Xdebug v2.2.1で確認

<?php

class a
{
	function a1(){
		echo "a1";
	}

	static function a2(){
		echo "a2";
	}
	
	function a3(){
		echo "a3";
	}
}

class a_Ex extends a
{
	function a1_1(){
		echo "a_Ex1_1";
		parent::a1();   // Non-static method a::a1() should not be called statically
	}

	static function a1_2(){
		echo "a_Ex1_2";
		parent::a1();   // Non-static method a::a1() should not be called statically
	}

	function a2_1(){
		echo "a_Ex2_1";
		parent::a2();
	}

	static function a2_2(){
		echo "a_Ex2_2";
		parent::a2();
	}

	function a3(){
		echo "a_Ex3";
		parent::a3();   // Non-static method a::a3() should not be called statically
	}
}

a_Ex::a1();   // Non-static method a::a1() should not be called statically
a_Ex::a1_1(); // Non-static method a_Ex::a1_1() should not be called statically
a_Ex::a1_2();
a_Ex::a2();
a_Ex::a2_1(); // Non-static method a_Ex::a2_1() should not be called statically
a_Ex::a2_2();
a_Ex::a3();   // Non-static method a_Ex::a3() should not be called statically

?>
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
   【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼 eccube_admin 2012/10/5 17:24
   » Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼 namacha 2012/10/7 19:47
       Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼 seasoft 2012/10/8 12:52
       Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼 red 2012/10/11 15:25
         Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼 namacha 2012/10/11 21:32
     Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼 kodama417 2012/10/10 14:02
     Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼 red 2012/10/11 15:34
       Re: 【EC-CUBE次期バージョン】多言語化対応についてのフィードバック依頼 eccube_admin 2012/10/11 18:48

 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は90,354名です
総投稿数は110,371件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1693
8
red
1571
9
mcontact
1363
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.