2016-04-27 9 views
0

PHPとMySQLで動作する非常に簡単なプロジェクト管理システムを扱っています。私はデータベースに格納されたプロパティのIDを持っているケースがたくさんありますが、明らかにIDは私がユーザーに表示したいものではありません。ベストプラクティス - 内部の値を表示/印刷の目的に適したものに変換する(逆の場合も同様)

私は大きなリファクタの真ん中にいて、これは私が再加工したいものです。これまでは、IDに対応するプロパティの '名前'の適切な値を手動で検索していました(印刷する必要があるときはいつでもそれを照会していました)。

ここでは、システムのいくつかの側面をより洗練されたものに変更し、手続き型のものをオブジェクトに変換しました。これまでのところ、prep_db()やprep_display()のようなオブジェクトの属性をデータベースに入力するか、印刷して表示するのに適した関数を用意しています。しかし、これはあまり素敵ではありません。

私が持っていたもう1つのアイデアは、オブジェクトのこれらの部分について、project_type_disp(表示用)とproject_type_id(データベース用)の両方に記入され、しかし、それはまた非常にきれいに見えません。

このようなことのベストプラクティスはありますか?

+0

私はあなたの質問をかなり得ていませんでした。いくつかのIDがあり、IDの代わりに表示したいいくつかの文字列にマップされていますか?特定のマッピングを使用するコードフローに何らかの種類のアダプタを追加するだけです。 – m02ph3u5

+0

右。私が話していた機能は、基本的に一方向アダプタです。何らかの理由でこの解決法は私と完全にはうまく座っていませんが、それが最良の方法だと思いますか? –

答えて

0

オブジェクトにgetDisplayName()メソッド(または同様のメソッド)を追加することをお勧めします。どこでもあなただけの出力に、そのメソッドの戻り値を識別子を表示したい:

echo $obj->getDisplayName(); 

後であなたが表示されます何を変更することを決定した場合、それはすべての表示位置に影響を及ぼし1行の変更です。

public function getDisplayName() 
{ 
    return $this->name; 
} 

それともあなたが同様にIDを埋め込みたい:

public function getDisplayName() 
{ 
    return '[' . $this->id . '] ' . $this->name; 
} 

ます。また、文字列にキャストするための魔法のラッパーになるかもしれない:

を例えば、それはのような単純なものでした
public function __toString() 
{ 
    return $this->getDisplayName(); 
} 

次に、あなただけの文字列としてオブジェクトを参照することができます

echo $obj; 
+0

もちろん!なぜ私はこの解決策を考えなかったのか分かりません。また、__toString()ヒントのおかげで、本当に便利なはずです! –

関連する問題