2010-12-05 12 views
0

だから、私は以下の変数は、私のクラス内のすべての関数の中で時に呼び出すことができるようにする必要があり、このようになりますクラス(例)[ベストプラクティス?]クラス全体への変数の割り当て

class Statistics extends Controller { 


function __construct() 
{ 
    parent::Controller(); 
    $data['title'] = 'Statistics'; 
    //Locale 
    setlocale(LC_MONETARY, 'en_US'); 
    date_default_timezone_set('America/Chicago'); 
    //Require Login 
    $this->load->library('session'); 
    if($this->session->userdata('affid')) 
    { 
    $this->load->view('userhead',$data); 
    } 
    else 
    { 
    header("Location: /network/login/submit"); 
    } 
} 

//Index page. Show stat display options 
function index() 
{ 
    $this->load->view('statoptions'); 
    $this->load->view('footer'); 
} 

//Stats by offer 
function offer() 
{ 
    $this->load->library('statistics'); 
    $this->_getvars(); 
    if(!$getsort && $direction) 
    { 
    $sort = array('Stat.offer_id' => 'desc','Stat.revenue' => 'desc'); 
    } 

    $stats = $this->statistics->aff_stats($affid,$startdate,$enddate,'Stat.offer_id',$sort); 
    $data['statdate'] = array('start' => $startdate, 'end' => $enddate); 
    $data['stats'] = $stats['data']; 
    $data['statview'] = 'offer'; 
    $data['dir'] = 'desc'; 
    if($direction == 'desc') 
    { 
    $data['dir'] = 'asc'; 
    } 
$this->load->view('statistics',$data); 
#print_r($data['stats']); 
} 

//Stats by day 
function daily() 
{ 

$stats = $this->statistics->aff_stats($affid,$startdate,$enddate,'Stat.date',$sort); 
$data['statdate'] = array('start' => $startdate, 'end' => $enddate); 
$data['stats'] = $stats['data']; 
$data['statview'] = 'daily'; 
    $data['dir'] = 'desc'; 
    if($direction == 'desc') 
    { 
    $data['dir'] = 'asc'; 
    } 
$this->load->view('statistics',$data); 
#print_r($stats); 
} 

//Stats by Affiliate's SubID 
function subid() 
{ 
$stats = $this->statistics->aff_stats($affid,$startdate,$enddate,'Stat.affiliate_info1',$sort); 
$data['statdate'] = array('start' => $startdate, 'end' => $enddate); 
$data['stats'] = $stats['data']; 
$data['statview'] = 'subid'; 
    $data['dir'] = 'desc'; 
    if($direction == 'desc') 
    { 
    $data['dir'] = 'asc'; 
    } 
$this->load->view('statistics',$data); 
#print_r($stats); 
} 
} 

を持っています。

 $affid = $this->session->userdata('affid'); 
    $startdate = preg_replace('/[^\d-]+/', '', $this->input->get_post('start')); 
    $enddate = preg_replace('/[^\d-]+/', '',$this->input->get_post('end')); 
    if(!$startdate) 
    { 
    $startdate = date("Y-m-d"); 
    } 
    if(!$enddate) 
    { 
    $enddate = date("Y-m-d"); 
    } 
    $getsort = htmlspecialchars($this->input->get_post('sort'),ENT_QUOTES);  
    $direction = htmlspecialchars($this->input->get_post('dir'),ENT_QUOTES); 
    if($getsort && $direction) 
    { 
    $sort[$getsort] = $direction; 
    } 

クラス全体に変数を割り当てるのがベストプラクティスですか?

これは私は私はあなたが求めているのか理解かどうか分からないが、それは私はあなたが意味する何を考えていた場合、あなたは「静的」を使用方法

+0

そのような質問全体を変更するのは良いことではありません。 –

+1

@Robin Orheden、*合意。*質問を元のバージョンに戻した。 @DevNull、あなたが質問を削除したい場合は、 'delete'リンクを使用してください。私は*なぜあなたが有効な質問を削除したいと思うのか分からないが。 –

+0

@David Thomas:彼のプロフィールによれば、「登録されていないユーザー」と言われていますが、削除リンクが表示されないと思います。 – BoltClock

答えて

0

でCodeIgniterのコントローラです:

class Statistics extends Controller { 
    static $startdate; 

その後、あなたは私が「クラス全体」とあなたはそれが完全な範囲だ意味推測している

self::$startdate; 
2

ような方法でそれを参照してください。基本的にパブリックフィールドを持っている:

public class StatisticsController extends Controller { 
    private $StartDate = null; 

    public __construct() 
    { 
     $this->StartDate = date(DATE_RFC822); 
    } 

    public function GetStartDate() 
    { 
     return $this->StartDate; 
    } 
} 

$controller = new StatisticsController(); 
echo($controller->GetStartDate()); // prints something like: Mon, 15 Aug 2005 15:12:46 UTC 
+0

私が尋ねようとしているのは、コンストラクタ内で変数を割り当て、コントローラクラス内の他の関数で変数を参照する方法です。 – DevNull

+0

私は自分の答えを更新しました。 GetStartMethodはコンストラクタで設定されたDate/Time値を取得(および返す)するようになりました。これがあなたの質問に答えたと感じたら、この質問を閉じて答えを受け入れてください。 –

+0

変数がクラス内のスコープ内にあるだけであれば、それはおそらくプライベートであるべきです。これはまた、GetStartDate()関数に目的を与えます。 –

関連する問題