1

私は最近、別の開発者が去った後に職場で投げかけられたプロジェクトに取り組んでいます (彼は去る前にそのプロジェクトに取り組んでいた唯一の人でした)。このプロジェクトは CodeIgniter で作成され、MVC フレームワークを使用しています。プロジェクトに取り組んでいる間、私は何か面白いこと、または少なくとも私が今まで見たことのないことに気づきました. モデルがコントローラーにロードされた後、オブジェクトは...を使用してビューに渡されます

$data['outcomes']                 = $this->id_conversion;

id_conversion はコントローラーの上部にロードされたモデルです。私の質問は、これを使用する場合とは異なることです

new Id_conversion();

上記の代わりに。

助けてくれてありがとう、または正しい方向に私を向けることができる人。

編集。コメントを読んだ後、申し訳ありませんが、これを理解するにはもっとコードが必要であることがわかりました。

public function person($id)
{
    $this->authenticate->check_access(array('admin', 'rps'), 'home');
    $this->load->library('page_uri');
    $this->load->model('term');
    $this->load->model('user');
            $this->load->model('id_conversion');

    $selected_term = $this->page_uri->get_term();

    $current_term = $this->term->current_term_id();
    if (!isset($selected_term)) {
        $selected_term = $current_term;
    }

    $term = new Term();
    if (!empty($selected_term) && $selected_term !== '0') {
        $term = new Term($selected_term);
    }

    $user = new User($id);
    $plans = $user->plans_by_term($term);

    $data = array();
    $data['user']                 = $user;
    $data['site_url']             = site_url("reports/person");
    $data['current_term']                     = $this->term->current_term_id();
    $data['selected_term']                    = $selected_term;
    $data['terms']                = $this->term->sorted_term_list();
    $data['term']                 = $selected_term;
    $data['plans']                = $plans;
            $data['outcomes']                         = $this->id_conversion;

    $this->load->view('template/foundation', $data);
}

モデル id_conversion が読み込まれます

class Id_conversion extends MY_Model{

function __construct()
{
    parent::__construct();
}

/*
 * Input a primary or secondary outcome as defined
 * in the plan class and 
 */
public function id_outcomes($id)
{
    $sql = 'SELECT name
            FROM outcomes
            WHERE id ='. $id;

    $query = $this->db->query($sql);

    return $query->row_array();
}

}

4

2 に答える 2

1

を使用newすると、新しいオブジェクトが作成されます。

Using$this->id_conversionは、以前のある時点ですでに作成され、その変数に格納されている既存のオブジェクトを使用します。

あなたのコードをもっと見なければ、既存のオブジェクトがどのような状態にあるかを知ることはまったく不可能です。プログラムがすでにオブジェクトを作成して保存しているのには十分な理由があると思いますので、使用できるようにセットアップされていると思いますが、提供されたものからは確実にわかりません.

ただし、既存のオブジェクトが完全に元の状態にあり、新しいオブジェクトを作成しても同じ機能が得られる場合でも、オブジェクトが既に存在する場合に追加のオブジェクトを作成すると、システム リソースが浪費されます。確かに無駄はほんのわずかですが、それはすべて合計されます。

于 2013-08-08T21:08:01.543 に答える