4

DB テーブルから /application/config/constant.php で定数を宣言することは可能ですか?

私はこのようなことをしようとしています。

$result = $this->db->select( 'attr, value' )->from( 'app_conf')->where( 'city', 53 )->or_where( 'city', -1 )->order_by( 'city' )->get();
$app_conf = $result->result_array();
// var_dump( $app_conf );
foreach( $app_conf as $row )
{
    define( "_{$row['attr']}", $row['value'] );
}

しかし、今は作成するすべてのコントローラーでそれを行う必要があるため、コードを複製し、必要に応じて全体を変更する必要があり、不要に思えます!

4

3 に答える 3

5

CI コントローラーを拡張し、MY_Controller として application/core ディレクトリに配置します。拡張コントローラーのコンストラクターに上記のコードを配置します。これで、コントローラーから拡張して同じコードを実行できます。したがって、このコードを何度も書く必要はありません。

于 2012-07-12T07:18:23.487 に答える
4

を拡張してCI_Controller新しいコントローラーを作成し、このコントローラーをメイン コントローラーとして使用します (CI_Controller の代わりに新しいコントローラーを作成するために使用します)。

<?php 
class MY_Controller extends CI_Controller{
    function __construct()
    {
        parent::__construct();
        // Assuming that you have loaded all required library in autoload
        $result = $this->db->select( 'attr, value' )->from( 'app_conf')->where( 'city', 53 )->or_where( 'city', -1 )->order_by( 'city' )->get();
        $app_conf = $result->result_array();
        foreach( $app_conf as $row )
        {
            define( "_{$row['attr']}", $row['value'] );
        }
    }
}

新しいコントローラーを作成します (CI_Controller の代わりに MY_Controller からの通常のコントローラー)

class Somecontroller extends MY_Controller {
    function __construct()
    {
        parent::__construct();
        // ...
    } 

    // other functions/mechods
 }
于 2012-07-12T07:35:36.907 に答える
2

この問題を解決するには、フックまたはMY_Controllerを使用します。または、怠惰な場合は、これを行うヘルパーを自動ロードできます。

その後、すべての呼び出しで定義されます。

于 2012-07-12T07:18:07.900 に答える