OOPの初心者ですので、ベストプラクティスを理解しようとしています。このコードは、私が追加している既存のスクリプトに基づいています。この質問とベストプラクティスMVCとPHP関数を持つOOP?
スレッドの大半は、ようにコーディングするポスターを伝える:
function ($arg1, $arg2){
//some code
}
およびコール:
function($a1, $a2);
を私はOOPベースの機能(働き)を持っていますが、それはdoesnのかなりうまく見えて、私はそれを提案された方法として呼び出そうとすると、次のようになります。
配列から文字列への変換....オンラインで配列
ここで出力を収集し、私の(作業)関数です:これは、作業(醜い)です
public function getMail($type, $id = 0) {
$query = $this->db->query("SELECT * FROM km_mail WHERE id = '" . (int)$id . "' AND `type` = '" . $this->db->escape($type) . "'");
foreach ($query->rows as $result) {
$mail_data[$result['title']] = $result['value'];
}
return $mail_data;
}
一部 - これは、要求されたデータベースの列を返します(ただし、間違って見える?):
$this->model_setting_mail->getMail('order')['update_link'];
私はそうのような列を要求しようとすると、文字列変換エラーに配列が発生します。
$this->model_setting_mail->getMail('order','update_link');
私の例では、$ idが渡されない限り、の順 = $ type、update_link = $ result ['value']と$ id = 0がデフォルトです。
パフォーマンスの一部については、何かを取り出して配列を作成すると、すべてのデータベースエントリがメモリに格納されます。これは、エントリがたくさんあり、メモリの制限が十分に高くない場合に問題を引き起こす可能性があります。出力を直接操作する方が良いでしょう。 – Stony
ありがとうございます、この表は約30ほどの行しかなく、成長しません。知っておくと便利です! – necrodeus
それは大きな問題ではありませんが、もしあなたが何千ものエントリーを持っていて、リンゴがあなたの記憶限界を超えて実行し、サイトがオフラインである可能性があるならば。しかし、30のエントリは問題ではありません。 – Stony